2

我研究了 Cooley Tukey 算法并理解了它。我得到了 CUDA 卷积FFT2D 示例中的所有内容,直到这些内核:

spProcess2D 调用 -> spProcess2D_kernel 调用了很多 -> spPostprocessC2C、mulAndScale 和 spPreprocessC2C

这是完整的代码: http : //nopaste.info/30c13e44fe.html(convolutionFFT2D.cu,这里是 spProcess2D 函数) http://nopaste.info/78d22afac2.html(convolutionFFT2D.cuh,这里是其他函数)

我已经阅读了所有 nvidia sdk 论文,但我仍然无法弄清楚这些函数的作用(他们使用 twiddles,但那里似乎没有什么像 Cooley Tukey 算法)

如果可以的话,请帮助我,或者至少指出我在哪里解决我的问题

更新:我找到了这个链接:http ://cnx.org/content/m16336/latest/#uid38 也许这些函数正在执行广度优先算法?我仍然不能这么说,但形状似乎一样

4

2 回答 2

1

看起来该算法正在执行与此处提到的算法类似的操作。预处理步骤看起来是将大小为 N(填充后)的实数输入重新排序为大小为 N/2 的复数输入。后处理步骤是重新排序数据以取回原始输入数组的 FFT。

于 2011-05-24T20:41:24.097 回答
0

spPostprocessC2C看起来像一只 FFT 蝴蝶。调用例程的复杂性来自于将 FFT 算法拟合到 CUDA 的 SIMT 模型中。

也许如果您解释了您想要实现的目标(不仅仅是了解这个特定的 FFT 实现是如何工作的),那么您可能会得到一些更具体的答案。

于 2011-05-17T08:16:18.207 回答