我目前正在将 C++ 程序转换为 CUDA 代码,并且我的程序的一部分运行快速傅立叶变换。最初我运行 FFTW,但我发现我无法在内核中调用它,所以我使用 cufft 重写了该部分,但它告诉我同样的事情!
是否有任何可以在 CUDA 内核中运行的 FFT?
我可以添加__device__
到 fftw 库吗?
我想避免在主机中初始化或调用 FFT。我想要一个完全关于 gpu 类型的函数,如果存在的话。
如果您希望将其合并到内核中,您似乎正在尝试一次执行多个 FFT。我会研究 cuFFT 中的批处理功能。你的应用是什么?cufftPlanMany() 适用于许多不同内存配置中的批处理 FFT。
无法从 GPU 内核调用 API。您必须从主机呼叫他们。如果您想在不从 DEVICE -> HOST -> DEVICE 传递的情况下运行 FFT 以继续您的阐述,我认为唯一的解决方案是编写一个在设备函数中执行 FFT 的内核。实际上我这样做是因为我需要并行运行更多的 FFT,而无需再次将数据传递给主机。如果您找到/有其他解决方案,请告诉我。