2

我目前正在将 C++ 程序转换为 CUDA 代码,并且我的程序的一部分运行快速傅立叶变换。最初我运行 FFTW,但我发现我无法在内核中调用它,所以我使用 cufft 重写了该部分,但它告诉我同样的事情!

是否有任何可以在 CUDA 内核中运行的 FFT?

我可以添加__device__到 fftw 库吗?

我想避免在主机中初始化或调用 FFT。我想要一个完全关于 gpu 类型的函数,如果存在的话。

4

3 回答 3

3

如果您希望将其合并到内核中,您似乎正在尝试一次执行多个 FFT。我会研究 cuFFT 中的批处理功能。你的应用是什么?cufftPlanMany() 适用于许多不同内存配置中的批处理 FFT。

于 2012-07-22T04:09:27.363 回答
2

您确定需要避免从主机启动吗? Nvidia 的cufft 库现在非常好。移植 FFTW 似乎是一项艰巨的任务。移植Kissfft可能会更容易,但这仍然不容易。

于 2012-07-22T00:53:59.833 回答
0

无法从 GPU 内核调用 API。您必须从主机呼叫他们。如果您想在不从 DEVICE -> HOST -> DEVICE 传递的情况下运行 FFT 以继续您的阐述,我认为唯一的解决方案是编写一个在设备函数中执行 FFT 的内核。实际上我这样做是因为我需要并行运行更多的 FFT,而无需再次将数据传递给主机。如果您找到/有其他解决方案,请告诉我。

于 2015-07-03T17:11:21.547 回答