Библиотека OpenCL FFT для графических процессоров?

Доступна ли какая-либо общая библиотека FFT для работы на графическом процессоре с использованием OpenCL? Насколько мне известно, пример кода Apple для OpenCL FFT по принципу степени двойки - единственный доступный такой код?

Существует ли такая библиотека для размеров преобразования, не равного степени двойки? Если нет, то насколько легко или сложно изменить образец Apple OpenCL?

Я рассматриваю приложения для обработки изображений с размерами преобразования, не равными степени двойки, и мне придется выполнить целую кучу БПФ, пакетное БПФ.


person Neo    schedule 19.11.2010    source источник


Ответы (7)


Я знаю библиотеку OpenCL FFT, которая в настоящее время находится в стадии разработки, но они не планируют использовать в первом выпуске размеры преобразования, отличные от степени двойки.

Можете ли вы предоставить какую-либо информацию о своем приложении? Это может помочь повысить приоритет этой функции, если ее смогут использовать многие люди.

person Die in Sente    schedule 06.12.2010
comment
Не могли бы вы поделиться, какая это библиотека? - person rotoglup; 13.09.2013
comment
@rotoglup Мой комментарий выше относился к библиотеке AMD clAmdFft. Несколько лет назад я участвовал в выпуске 1.0, который не поддерживал не степень двойки, но я вижу, что в последующих выпусках добавлено несколько других основных факторов. developer.amd.com / tools-and-sdks / гетерогенные вычисления / - person Die in Sente; 16.09.2013

Попробуйте clFFT, разработанный AMD. Он предназначен для графических карт AMD, но должен работать и с графическими процессорами nVidia. Он может преобразовывать массивы с основанием 2, 3 и 5 (и их комбинации).

https://github.com/clMathLibraries/clFFT

Доступны привязки python

https://github.com/geggo/gpyfft

person ABDreverhaven    schedule 07.01.2014
comment
приятно, теперь он также поддерживает системы счисления счисления 7, 11 и 13. - person marcin; 20.05.2016

Вы можете загрузить некоторые образцы кода OpenCL, включая FFT, из набора тестов SHOC.

person shoc    schedule 19.11.2010
comment
но это всего лишь 1D FFT, степень двойки ..., но тем не менее очень полезно, спасибо - person Neo; 22.11.2010
comment
Хороший! Я сам кодировал одну из этих библиотек. Рада строить на плечах гигантов :) - person Chad Brewbaker; 30.11.2010

Нулевое заполнение может использоваться для того, чтобы данные произвольной длины соответствовали алгоритму БПФ со степенью двойки. Подумайте, подойдет ли это вашему приложению. Увеличение количества выборок уменьшает «размер шага» в выходной области, что означает более высокое выходное разрешение.

person Vesa    schedule 19.09.2011

OpenMM (https://simtk.org/home/openmm) содержит 3D FFT для OpenCL. Это может не сработать для вас напрямую, поскольку оно разработано для конкретного случая: 3D-БПФ, где каждое измерение достаточно мало для хранения в локальной памяти (например, сетка 100x100x100). Но он поддерживает размеры, отличные от степени двойки (основание 2, 3, 4 и 5), поэтому вы можете адаптировать его.

person peastman    schedule 20.04.2011

VexCL предоставляет реализацию FFT для OpenCL, которая принимает произвольные векторные выражения в качестве входных данных, позволяет выполнять многомерные преобразования ( любого количества измерений) и поддерживает векторы произвольного размера. Вот ссылка на соответствующую часть README.

person ddemidov    schedule 21.11.2013

Взгляните на библиотеку APPML-FFT. Хотя это все еще сила двух преобразований.

person Divij    schedule 07.06.2011