【发布时间】:2013-08-09 10:46:43
【问题描述】:
在我的应用程序中,我需要转换图像的每一行,应用过滤器并将其转换回来。
我希望能够使用 GPU 同时进行多个 FFT。更准确地说,我使用的是 NVIDIA 的 CUDA。现在,一些注意事项:
- CUDA 的 FFT 库,CUFFT 只能从主机 (https://devtalk.nvidia.com/default/topic/523177/cufft-device-callable-library/) 进行调用。
- 关于这个话题 (running FFTW on GPU vs using CUFFT),Robert Corvella 说
“cufft 例程可以被多个主机线程调用”。
我相信并行执行所有这些 FFT 会提高性能,但 Robert cmets
“FFT 运算的大小相当大,那么只需按照指示调用 cufft 库例程即可为您提供良好的加速并大致充分利用机器”
所以, 是这个吗?一次执行多个 FFT 是否没有任何好处?
有没有支持设备调用的库?
如果我只使用 cufftPlanMany() 代替(如挂起的“is-there-a-method-of-fft-that-will-run-inside-cuda-kernel”中所述或如上一主题中所述,罗伯特)?
或者最好的选择是调用多个主机线程?
(这 2 个链接的限制让我死了......)
我的目标是就这个问题的最佳解决方案进行一些讨论,因为许多人都面临过类似的情况。 一旦 NVIDIA 在 CUFFT 上实现设备调用,这可能会过时。 (他们说他们正在努力,但没有预计发布日期 - 在 NVIDIA 论坛(第一个链接)的讨论中说的话)
【问题讨论】:
-
您可以编写自己的 FFT 内核...