我的输入是 2 complex 浮点向量。两个向量都是 not 交错的:
VecAReal = Are0, Are1, Are2,...Are[N-1]
VecAImag = Aim0, Aim1, Aim2,...Aim[N-1]
VecBReal = Bre0, Bre1, Bre2,...Bre[N-1]
VecBImag = Bim0, Bim1, Bim2,...Bim[N-1]
我必须运行标量乘法:
VecCReal = Cre0, Cre1, Cre2,...Cre[N-1]
VecCImag = Cim0, Cim1, Cim2,...Cim[N-1]
Cre[i] = Are[i]*Bre[i] - Aim[i]-Bim[i]
Cim[i] = Are[i]*Bim[i] + Aim[i]+Bre[i]
在每次迭代中,我必须在 4 个不同的指针上运行
_mm_load_ps
。
求和后,添加,在每次迭代中我必须在 2 个不同的指针上运行
_mm_store_ps
。
因为加载/存储很多,所以看起来效率很低。 你能建议一个更好的方法吗?