gpt4 book ai didi

c - 手动矢量化 C 代码的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-04 04:07:54 25 4
gpt4 key购买 nike

我想手动向量化一些 C 代码,以提高速度。为此(Cell 处理器上的 SPE 或 CBE)我想使用 SIMD 数学。代码本来是用了一些物理 vector 计算(速度,加速度等),所以在代码的某些部分有很多操作,比如;

ax=a*vx+b*rx;
ay=a*vy+b*ry;
az=d*vz+b*rz;

所以在这一点上我考虑将 v 和 r 转换为 vector (在 SPE 上,一个 vector 可以包含 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")

那么您认为这种方法值得还是您可以考虑更好的方法?

谢谢

最佳答案

如果您必须在每次 SIMD 计算时打包和解包组件,那么您根本不可能获得太多(如果有的话)加速。

您确实需要看看是否可以进行更深层次的更改,以便组件通常以 vector 形式保存并尽可能以 vector 形式传递。

关于c - 手动矢量化 C 代码的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3577679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com