Сравнительные подходы для алгоритмов fft

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

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

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

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


person plaes    schedule 17.08.2011    source источник


Ответы (2)


Убедитесь, что вы создали оптимальный план FFTW для каждого теста. Флаги ТЕРПЕЛИВЫЙ и ИСКЛЮЧИТЕЛЬНЫЙ могут привести к более быстрому планированию, но на это может уйти значительное количество времени. (Очевидно, что вы не должны включать это время в свой бенчмарк, так как оно одноразовое и может кэшироваться.)

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

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

person Paul R    schedule 18.08.2011