我想手动渲染一些C代码,以便加速。为此目的(Cell处理器或CBE上的SPE)我想使用SIMD数学。代码最初使用了一些物理向量计算(速度,加速度等),所以在代码的某些部分有很多操作,如;
ax=a*vx+b*rx;
ay=a*vy+b*ry;
az=d*vz+b*rz;
所以在这一点上我想到将v和r转换为向量(在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")
所以你认为这种方法值得,或者你能想到更好的方法吗?
由于
答案 0 :(得分:1)
如果你必须在每次SIMD计算时打包和拆包组件,你根本不可能获得更多(如果有的话)加速。
您确实需要了解是否可以进行更深层次的更改,以便组件通常以矢量形式保存,并尽可能地作为矢量传递。