我已经成功编写了一些CUDA FFT代码,可以对图像进行2D卷积以及其他计算。
如何确定我可以运行的最大FFT大小?似乎2D R2C卷积的计划需要2倍的图像大小,并且另外2倍的图像大小用于C2R。这看起来是很大的开销!
此外,似乎大多数基准测试和类似的内容都是针对相对较小的FFT..为什么会这样?似乎对于大图像,我很快就会耗尽内存。这通常如何处理?可以在图像块上执行FFT卷积并组合这些结果,期望它与在整个图像上运行2D FFT时相同吗?
谢谢回答这些问题。
我已经成功编写了一些CUDA FFT代码,可以对图像进行2D卷积以及其他计算。
如何确定我可以运行的最大FFT大小?似乎2D R2C卷积的计划需要2倍的图像大小,并且另外2倍的图像大小用于C2R。这看起来是很大的开销!
此外,似乎大多数基准测试和类似的内容都是针对相对较小的FFT..为什么会这样?似乎对于大图像,我很快就会耗尽内存。这通常如何处理?可以在图像块上执行FFT卷积并组合这些结果,期望它与在整个图像上运行2D FFT时相同吗?
谢谢回答这些问题。
通常情况下,在整个图像上运行FFT并不实用。这不仅需要大量的内存,而且图像的宽度和高度必须是2的幂,这对您的输入施加了不合理的限制。
将图像切成瓦片是完全合理的。瓦片的大小将确定您能够实现的频率分辨率。您可能还希望重叠瓦片。