我正在使用真实花车的3D数组。
在我的代码的一部分中,我应该对这些值进行3DFFT,然后将得到的复杂矩阵与另一个浮点矩阵点对齐。 (点=逐点乘法)
然后我采用逆FFT并更新初始数组。
第一次cufftPlan3d()
时,重要的是什么?
那计划真的在寻找什么?
计划是否需要快速查看阵列的尺寸和类型,还是查看真实和复杂零件的大小?
我试图尽可能少地使用该计划,以便我可以更快地计算变换,但我也希望FFT(和iFFT)尽可能快,因为这是代码的瓶颈。 / p>
我的第一个想法是,我会在初始FFT之前制定一个计划,然后在得到的逆FFT后的点积/ FFT之后制定另一个计划,然后在循环的后面随处使用这两个计划。
感谢您的任何建议。
答案 0 :(得分:2)
只要转换的类型和大小没有改变,你一定能够创建一个计划并在循环中的任何地方重复使用它。听起来就是这种情况。实际上,只要类型和大小相同,就可以对前向(FFT)和反向(iFFT)变换使用相同的计划,因为CUFFT_FORWARD
/ CUFFT_REVERSE
是{{1}的参数},而不是cufftExec*()
。
如果您要支持多种尺寸和类型,请在启动时为每种类型/尺寸组合创建单独的计划(如果您提前了解它们)。