我正在尝试并行化称为 Chromaprint 的声学指纹识别库的 FFT 变换。它的工作原理是“将原始音频分割成许多重叠的帧并对它们应用傅立叶变换”。 Chromaprint 使用 4096 的帧大小,2/3 重叠。例如,第一帧由元素 [0...4095] 组成,那么第二帧类似于 [1366.. 5462]。
使用 cufftPlanMany,我知道您可以指定大小为 4096 的批次,这将执行 [0...4095]、[4096...8192] 等批次。是否有某种方法可以使批量转换重叠,或者应该我考虑另一种不使用批量执行的方法?
如果你使用高级数据布局 http://docs.nvidia.com/cuda/cufft/index.html#advanced-data-layout, the idist
参数应该允许您设置两个连续变换输入集的起点之间的任意偏移。
对于一维情况,将根据您传递的参数根据以下内容选择输入:
input[ b * idist + x * istride]
(where b
是当前正在处理的批次号,即 b = 0, 1, 2, ... 批次大小)
“idist 和 odist 参数表示输入和输出数据中两个连续批次的第一个元素之间的距离。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)