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.
Points traités en parallèle | Disposition des données d’entrée/sortie Naturel |
Disposition des données d’entrée/sortie Optimisé |
---|---|---|
4 | 117 MSPS | 217 MSPS |
8 | 292 MSPS | 457 MSPS |
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.