Бенчмаркинг подходов для алгоритмов БПФ - PullRequest
2 голосов
/ 18 августа 2011

В настоящее время я работаю над библиотекой, которая имеет собственную внутреннюю библиотеку fft (быстрое преобразование Фурье), которую я хотел бы заменить на FFTW .Теперь другие разработчики немного обеспокоены проблемами производительности, которые это может вызвать.Также наиболее важной частью скорости является алгоритм 1D свертки, который имеет дело с полусложными вещественными числами.(Я использую fftw_plan_r2r_1d).

Кроме того, все немного сложнее, потому что внутренне fftw использует разные алгоритмы в зависимости от размера преобразования.

Моя текущая идея - сгенерироватькуча наборов данных различной длины.Затем прочитайте их и измените массив набора данных для каждой итерации заранее определенным образом, прежде чем выполнять преобразование.

Или есть что-то еще, что я должен знать?

Ответы [ 2 ]

1 голос
/ 19 августа 2011

Вы также можете попробовать мою смешанную процедуру radix fft, которая доступна на моей домашней странице .Он включает в себя тестовую программу для определения скорости и точности, которую вы можете использовать для оценки.

1 голос
/ 18 августа 2011

Убедитесь, что вы генерируете оптимальный план для FFTW для каждого теста.Флаги PATIENT и EXHAUSTIVE могут привести к более быстрым планам, но для их достижения может потребоваться значительное количество времени.(Очевидно, что вы не должны включать это время в свой эталонный тайминг, так как оно одноразовое и кэшируемое.)

Если вам нужны только данные ввода / вывода с одинарной точностью, то создайте версию библиотек FFTW с одинарной точностью - они могутбыть немного быстрее, чем версия с двойной точностью по умолчанию и достаточно точна для большинства приложений, например, для обработки сигналов и обработки изображений.

Также при сборке библиотек FFTW убедитесь, что вы включили SIMD, если это соответствует вашей архитектуре,например, SSE на x86 или AltiVec на PowerPC.

...