2010-11-19 59 views
8

Existe-t-il une bibliothèque FFT générale disponible pour fonctionner sur le GPU en utilisant OpenCL? Autant que je sache, l'exemple de code Apple pour power-of-two OpenCL FFT est le seul code disponible?OpenCL FFT lib pour les GPU?

Une bibliothèque de ce type existe-t-elle pour des tailles de transformation sans puissance de deux? Sinon, dans quelle mesure est-il facile ou difficile de modifier l'exemple Apple OpenCL?

Je regarde des applications de traitement d'image, avec des tailles de transformations non-puissance-de-deux, et je devrais faire tout un tas de FFT, une FFT par lot.

Répondre

2

Je connais une bibliothèque OpenCL FFT en cours de développement, , mais ils ne prévoient pas d'avoir des tailles de transformation non-power-of-two dans la première version.

Pouvez-vous fournir des informations sur votre application? Il pourrait être utile de définir la priorité de cette fonctionnalité si elle peut être utilisée par de nombreuses personnes.

+0

Voulez-vous le mien partage quelle bibliothèque c'est? – rotoglup

+0

@rotoglup Mon commentaire ci-dessus faisait référence à la bibliothèque clAmdFft d'AMD. J'ai été impliqué dans la version 1.0 il y a quelques années maintenant, qui ne supportait pas les non-puissances de 2, mais je vois que les versions suivantes ont ajouté quelques autres facteurs premiers. http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-math-libraries/ –

2

Vous pouvez télécharger des exemples de code OpenCL, y compris FFT, à partir du SHOC benchmark suite.

+0

mais cela est seulement 1D TFR, la mise sous tension de deux enfants ..., mais néanmoins très utile, merci – Neo

+0

de Nice! J'ai codé moi-même une de ces bibliothèques. Heureux de construire sur les épaules des géants :) –

+0

une chance jusqu'à présent? .... – Neo

1

OpenMM (https://simtk.org/home/openmm) contient une FFT 3D pour OpenCL. Il peut ne pas fonctionner pour vous directement, car il est conçu pour un cas spécifique: FFT 3D où chaque dimension est suffisamment petite pour être stockée dans la mémoire locale (par exemple une grille 100x100x100). Mais il prend en charge les tailles non puissantes (radix 2, 3, 4 et 5), vous pourrez donc l'adapter.

0

Regardez la bibliothèque APPML-FFT. Bien que ce soit encore pour la puissance de deux transformations.

2

Le remplissage nul peut être utilisé pour adapter des données de longueur arbitraire à un algorithme FFT de puissance de deux. Considérez si cela conviendrait à votre application. L'augmentation du nombre d'échantillons diminue la "taille de pas" dans le domaine de sortie, ce qui signifie une résolution de sortie plus élevée.

1

VexCL fournit une implémentation de FFT pour OpenCL qui accepte des expressions vectorielles arbitraires en entrée, permet d'effectuer des transformations multidimensionnelles (de n'importe quel nombre de dimensions) et prend en charge des vecteurs de taille arbitraire. Voici un link à la partie pertinente de son fichier README.