我正在尝试并行化声学指纹库(称为Chromaprint)的FFT变换。它的工作原理是“将原始音频分成许多重叠的帧并对它们应用傅里叶变换”。 Chromaprint使用4096的帧大小,重叠2/3。例如,第一帧由元素[0 ... 4095]组成,然后第二帧类似于[1366 .. 5462]。
使用cufftPlanMany,我知道您可以指定批量为4096的批次,这将执行[0 ... 4095],[4096 ... 8192]等批次。是否有某种方法可以使批量转换重叠,或者我应该考虑另一种不使用批量执行的方法?
答案 0 :(得分:1)
如果使用Advanced Data Layout,idist
参数应该允许您设置2个连续变换输入集的起始点之间的任意偏移。
对于1D情况,将根据您传递的参数根据以下内容选择输入:
input[ b * idist + x * istride]
(其中b
是当前正在处理的批号,即b = 0,1,2,......批量大小)
“idist和odist参数表示输入和输出数据中两个连续批次的第一个元素之间的距离。”