Можно ли перекрывать пакетные БПФ с помощью библиотеки cuFFT в CUDA и cufftPlanMany?

Я пытаюсь распараллелить преобразования FFT акустической библиотеки снятия отпечатков пальцев, известной как Chromaprint. Он работает путем «разделения исходного звука на множество перекрывающихся кадров и применения к ним преобразования Фурье». Chromaprint использует размер кадра 4096 с перекрытием 2/3. Например, первый кадр состоит из элементов [0 … 4095], затем второй кадр выглядит как [1366 .. 5462].

С cufftPlanMany я знаю, что вы можете указать пакеты размером 4096, которые будут выполнять пакеты [0 … 4095], [4096 … 8192] и т. Д. Есть ли какой-нибудь способ сделать пакетное преобразование перекрывающимся или должно Я рассматриваю другой подход, который не использует пакетное выполнение?

0

Решение

Если вы используете Расширенный формат данных, idist Параметр должен позволять вам устанавливать любое произвольное смещение между начальными точками 2 последовательных входных наборов преобразования.

Для одномерного случая вход будет выбран в соответствии со следующими параметрами на основе переданных вами параметров:

input[ b * idist + x * istride]

(где b является номером партии, обрабатываемой в данный момент, то есть b = 0, 1, 2, … размер партии)

«Параметры idist и odist указывают расстояние между первым элементом двух последовательных пакетов во входных и выходных данных».

1

Другие решения