OpenCL™ Fast Fourier Transform FFT (1D) hors puce

Recommandé pour :

  • Périphérique : inconnu

  • Quartus® : v17.1

author-image

Par

Ce banc d’essai démontre une implémentation OpenCL™ d’une transformation 1D Fourier rapide (1D FFT) sur Intel® FPGAs. Le banc d’essai peut traiter jusqu’à 16 millions de valeurs en virgule flottante complexes en simple précision et prend en charge l’évolution dynamique de la taille des données.

L’algorithme utilisé pour traiter ces grands ensembles de données comporte six étapes. Par exemple, supposez que nous voulons traiter un million de points :

  • Traitant 1M de points comme une matrice 1K x 1K, lisez-le à partir de la mémoire externe et transposez-le à la volée.
  • Exécutez 1K 1D FFT sur toutes les lignes (de la matrice transposée).
  • Multipliez les valeurs résultantes en ajustant les facteurs de virevoltation.
  • Transposez la matrice et écrivez sur une mémoire tampon temporaire dans la mémoire externe.
  • Exécutez 1K 1D FFT sur toutes les lignes.
  • Transposez la matrice et le débit d’écriture sur une mémoire externe.

L’ensemble du système se compose de trois noyaux connectés par des canaux. L’ensemble de trois noyaux est enqueué deux fois par l’hôte pour effectuer le calcul complet. La première enqueue effectue les étapes 1 à 4 ci-dessus, la deuxième enqueue réalise les étapes 5-6. Il s’agit essentiellement d’un cœur FFT 2D avec transhux supplémentaire et d’une multiplication twiddle.

Le code est facilement paramétré pour prendre en charge différentes tailles de FFT ainsi que différentes exigences de performance.

Performances de la FFT

Les performances du cœur dépendent du nombre de points traités en parallèle, de la disposition des données utilisée, du nombre et de la vitesse de la mémoire externe. Les mesures ci-dessous ont été réalisées sur BittWare S5-PCIe-HQ D8 avec deux DDR3-1600. Les mesures ont été réalisées sur un fft de 1 Mo de point pour 8 points en parallèle et 4 M FFT pour 4 points en parallèle.

Le MSPS est « des millions d’échantillons par seconde ».

Fonctionnalités

  • Noyaux à un seul article de travail
  • Canaux de noyau
  • Transpose matriciel optimisé

Téléchargements

L’exemple de conception fournit le code source du périphérique OpenCL (.cl) ainsi que de l’application hôte. Pour compiler l’application hôte, le package Linux* comprend un fichier Makefile et le package Windows comprend un projet Microsoft Visual Studio 2010.

Les téléchargements suivants sont fournis pour cet exemple :

L’utilisation de cette conception est régie par les conditions générales du contrat de licence de conception de référencematérielle et soumise .

Exigences matérielles et logicielles

Cet exemple de conception nécessite les outils suivants :

  • logiciel Intel® FPGA v17.1 ou ultérieure
  • Intel FPGA SDK pour OpenCL v17.1 ou une version ultérieure
  • Sous Linux : GNU Make and gcc
  • Sous Windows : Microsoft Visual Studio 2010

Pour télécharger les outils de conception Intel, consultez la page de téléchargement OpenCL. Seul le système d’exploitation Linux est pris en charge par cet exemple de conception

OpenCL et le logo OpenCL sont des marques commerciales d’Apple Inc. utilisées avec autorisation par Khronos.

* Le produit est basé sur une spécification khronos publiée et a réussi le processus de test de conformité de Khronos. Le statut de conformité actuel se trouve à www.khronos.org/conformance.

Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.