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