我想手动对一些 C 代码进行矢量化,以加快速度。为此目的(单元处理器或 CBE 上的 SPE)我想使用 SIMD 数学。该代码最初使用了一些物理矢量计算(速度,加速度等),因此在代码的某些部分有很多操作,例如;
ax=a*vx+b*rx;
ay=a*vy+b*ry;
az=d*vz+b*rz;
所以此时我考虑将 v's 和 r's 转换为向量(在 SPE 上,一个向量可以包含 4 个单个浮点值),所以在伪代码中它应该类似于
vector V,R,A;
V.x=vx;
R.x=r.x; (and same for the others "y,z")
A=spu_sum(spu_prod(a,V),spu_prod(b,R));
ax=A.x; (and same for the others "y,z")
那么您认为这种方法值得还是您可以考虑更好的方法?
谢谢