OpenCL FFT lib для графических процессоров?
есть ли общий FFT lib для работы на GPU с помощью OpenCL? Насколько мне известно, пример кода Apple для power-of-two OpenCL FFT является единственным доступным кодом?
существует ли такая библиотека для размеров преобразования, отличных от двух? Если нет, то насколько легко или сложно изменить образец Apple OpenCL?
Я смотрю на приложения для обработки изображений с размерами преобразования не-мощности двух, и мне придется сделать целую кучу FFTs, дозированный БПФ.
7 ответов
Я знаю библиотеку OpenCL FFT, которая в настоящее время разрабатывается, но они не планируют иметь размеры преобразования без мощности двух в первом выпуске.
можете ли вы предоставить какую-либо информацию о своем приложении? Это может помочь получить приоритет для этой функции, если это то, что может использовать много людей.
попробуйте clFFT, разработанный AMD. Он нацелен на графические карты AMD,но должен работать и на NVIDIA GPU. Он может преобразовывать массивы с радиусом 2, 3 и 5 (и комбинации там).
https://github.com/clMathLibraries/clFFT
доступны привязки python
вы можете скачать некоторые примеры кода OpenCL, включая FFT из shoc benchmark suite.
Null-padding можно использовать для того чтобы сделать данные произвольной длины приспосабливать для сил-2 алгоритма FFT. Подумайте, подойдет ли это вашему заявлению. Увеличение числа выборок уменьшает "размер шага" в выходной области, что означает более высокое разрешение вывода.
OpenMM (https://simtk.org/home/openmm) содержит 3D FFT для OpenCL. Он может не работать непосредственно для вас, так как он предназначен для конкретного случая: 3D FFTs, где каждое измерение достаточно мало для хранения в локальной памяти (например, сетка 100x100x100). Но он поддерживает не-мощность двух размеров (radix 2, 3, 4 и 5), поэтому вы можете его адаптировать.
посмотреть APPML-FFT библиотека. Хотя его еще за власть двух трансформирует.