有没有一种在CUDA内核中运行的FFT方法?

时间:2012-07-20 21:26:55

标签: cuda fft

我目前正在将C ++程序转换为CUDA代码,我的程序的一部分运行快速傅里叶变换。最初我运行了FFTW,但是我看到我无法在内核中调用它,所以我用袖口重写了那个部分,但它告诉了我同样的事情!

是否有任何FFT将在CUDA内核中运行?

我可以将__device__添加到fftw库吗?

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

3 个答案:

答案 0 :(得分:2)

您确定需要避免从主机发布吗? Nvidia's cufft库现在相当不错。移植FFTW似乎是一项非常艰巨的任务。您可能更容易移植kissfft,但这仍然不容易。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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