【问题标题】:Is it possible to overlap batched FFTs with CUDA's cuFFT library and cufftPlanMany?是否可以将批处理 FFT 与 CUDA 的 cuFFT 库和 cufftPlanMany 重叠?
【发布时间】:2019-06-21 01:06:53
【问题描述】:

我正在尝试并行化名为 Chromaprint 的声学指纹库的 FFT 变换。它的工作原理是“将原始音频分割成许多重叠的帧并对其应用傅里叶变换”。 Chromaprint 使用 4096 的帧大小,有 2/3 的重叠。例如,第一帧由元素 [0...4095] 组成,然后第二帧类似于 [1366.. 5462]。

使用 cufftPlanMany,我知道您可以指定大小为 4096 的批次,这将执行 [0...4095]、[4096...8192] 等批次。有什么方法可以使批次转换重叠,还是应该考虑另一种不使用批处理执行的方法?

【问题讨论】:

    标签: c++ c cuda cufft


    【解决方案1】:

    如果您使用Advanced Data Layoutidist 参数应该允许您在 2 个连续变换输入集的起点之间设置任意偏移量。

    对于 1D 的情况,输入会根据你传递的参数按照下面的方式进行选择:

    input[ b * idist + x * istride]
    

    (其中b 是当前正在处理的批号,即 b = 0, 1, 2, ... 批大小)

    “idist和odist参数表示输入输出数据中两个连续批次的第一个元素之间的距离。”

    【讨论】:

    • 非常感谢。我一直很难遵循 cuFFT 文档,并且误解了这些参数的用途。
    猜你喜欢
    • 2021-03-21
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    相关资源
    最近更新 更多