Der*_*rek 3 cuda fft image-processing
我成功地编写了一些CUDA FFT代码,用于对图像进行2D卷积,以及其他一些计算.
我如何确定我能运行的最大FFT是什么?似乎2D R2C卷积的计划占用了图像尺寸的2倍,而另外2倍于C2R的图像尺寸.这似乎是很多开销!
此外,似乎大多数基准测试都适用于相对较小的FFT ..为什么这样?对于大型图像,我似乎会很快耗尽内存.这通常如何处理?你能在图像的图块上执行FFT卷积并将这些结果组合起来,并期望它与在整个图像上运行2D FFT相同吗?
谢谢你回答这些问题
CUFFT根据您的图像大小计划不同的算法.如果你能不适合在共享内存和不是2的幂然后CUFFT的计划外的地方变换,同时用合适的尺寸较小的图像将是更适合的软件.
如果你在FFTing整个图像设置和需要看你的GPU可以处理我的最佳答案是猜测,并与不同的图像大小检查作为CUFFT规划是复杂的.
请参阅文档:http://developer.download.nvidia.com/compute/cuda/1_1/CUFFT_Library_1.1.pdf
我同意马克的观点,并说平铺图像是进行卷积的方法.由于卷积只是计算许多独立积分,因此您可以简单地将域分解为其组成部分,独立计算,并将它们重新组合在一起.FFT卷积技巧简化了您需要计算的积分的复杂性.
我希望你的GPU代码在所有情况下都应该超过matlab,除非你做一些奇怪的事情.