【问题标题】:When planning a FFT, can I use the same plan for an inverse FFT?在计划 FFT 时,我可以对逆 FFT 使用相同的计划吗?
【发布时间】:2011-06-01 21:05:27
【问题描述】:

我正在处理一个真实浮点数的 3D 数组。

在我的代码的一部分中,我应该对这些值进行 3DFFT,然后用另一个浮点矩阵点化得到的复数矩阵。 (点 = 逐点乘法)

然后我采用逆 FFT 并更新初始数组。

当你做第一个cufftPlan3d() 时,什么是重要的? 即,计划真正在寻找什么?

该计划是否只需要查看数组的维度和类型才能快速工作,还是还要查看真实和复杂部分的大小?

我试图尽可能少地使用该计划,以便更快地计算转换,但我也希望 FFT(和 iFFT)尽可能快,因为这是代码的瓶颈。

我的第一个想法是,我会在初始 FFT 之前制定一个计划,然后在生成的点积/FFT 之后为逆 FFT 制定另一个计划,然后在循环的后面任何地方都使用这两个计划。

感谢您的任何建议。

【问题讨论】:

    标签: cuda fft


    【解决方案1】:

    只要转换的类型和大小不变,您绝对应该能够只创建一个计划并在循环中的任何地方重复使用它。听起来你就是这种情况。事实上,只要类型和大小相同,您就可以对正向 (FFT) 和反向 (iFFT) 变换使用相同的计划,因为 CUFFT_FORWARD / CUFFT_REVERSEcufftExec*() 的参数,而不是 @ 987654324@。

    如果您要支持多种尺寸和类型,请在启动时为每种类型/尺寸组合创建单独的计划(如果您提前知道它们)。

    【讨论】:

    • 可能你可以加个例子来解释一下。因为很多人会使用 R2C 和 C2R 转换来进行正向和反向转换,这是一种类型无法处理的。唯一可能的情况是输入和输出都很复杂(C2C 和 Z2Z 变换)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2022-12-12
    • 1970-01-01
    • 2015-05-05
    相关资源
    最近更新 更多