【问题标题】:More efficent way of computing multiple fft with CuFFT than batching使用 CuFFT 计算多个 fft 比批处理更有效的方法
【发布时间】:2019-11-15 19:45:17
【问题描述】:

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

batch 表示将在 并行 (https://docs.nvidia.com/cuda/cufft/index.html#function-cufftplan2d)

我想执行一个包含 500 个批次的 2D FFt,我注意到这些 FFT 的计算时间几乎线性地取决于批次的数量。因此,我想知道批次是否真的是并行计算的。一个 1500 x 1500 像素和 500 个批次的 FFT 运行大约需要 200 毫秒。

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

我还没有在 NVIDIA 文档中找到有关批次内部执行的更多详细信息。

【问题讨论】:

  • 最好是批处理,而不是流式传输。您的 GPU 的工作已经饱和,这就是为什么随着批量大小的增加您会看到线性增长。

标签: cuda cufft


【解决方案1】:

我想执行一个包含 500 个批次的 2D FFt,我注意到这些 FFT 的计算时间几乎线性地取决于批次的数量。

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

因此,我想知道批次是否真的是并行计算的。

你可以假设它们是。

在大量 FFT 并发运行的情况下,使用批处理是减少计算时间的最佳方法

是的

...或者我是否应该考虑流式传输或其他任何方法?

没有。

【讨论】:

    猜你喜欢
    • 2016-07-26
    • 2012-12-11
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多