高速化するために、いくつかの C コードを手動でベクトル化したいと考えています。その目的 (Cell プロセッサまたは CBE 上の SPE) のために、SIMD 演算を使用したいと考えています。コードは元々物理的なベクトル計算 (速度、加速度など) を使用しているため、コードの一部には次のような多くの操作があります。
ax=a*vx+b*rx;
ay=a*vy+b*ry;
az=d*vz+b*rz;
この時点で、v と r をベクトルに変換することを考えました (SPE では、1 つのベクトルに 4 つの単一の float 値を含めることができます)。疑似コードでは、次のようになります。
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")
このアプローチは価値があると思いますか、それともより良いアプローチを考えられますか?
ありがとう