使用 CuFFT 计算多个 fft 的方法比批处理更有效

More efficent way of computing multiple fft with CuFFT than batching

根据 NVIDIA 文档,批处理 CuFFT 将并行执行批处理:

batch denotes the number of transforms that will be executed in parallel (https://docs.nvidia.com/cuda/cufft/index.html#function-cufftplan2d)

我想执行 500 个批次的 2D FFt,我注意到这些 FFT 的计算时间几乎与批次数成线性关系。因此我想知道这些批次是否真的是并行计算的。一个 1500 x 1500 像素的 FFT 和大约 200 毫秒内的 500 个批次 运行s。

在大量 FFT 并发 运行 的情况下,使用批处理是减少计算时间的最佳方法,还是我应该考虑流式处理或其他任何方法?

我在 NVIDIA 文档中找不到有关批处理内部执行的更多详细信息。

I want to perform a 2D FFt with 500 batches and I noticed that the computing time of those FFTs depends almost linearly on the number of batches.

一旦安排了足够多的并行工作以使 GPU 的并发处理能力饱和,这是可以预期的。对于非常小的批次,可能不存在线性相关性,但您应该会发现,从非常小的批次大小接近恒定时间到大批次大小的线性时间存在过渡。

Therefore I wondered if the batches were really computed in parallel.

你可以假设他们是。

In the case with a big number of FFT to be run concurrently, is using batches the best approach to reduce the computing time

...or shall I maybe consider streaming or whatever other method?

没有