SDK Intel® FPGA pour OpenCL™ - Centre d’assistance
Avis d’abandon de produits
Intel abandonne Intel® FPGA SDK pour OpenCL.™ Vous trouverez plus d’informations dans la notification d’abandon de produit (PDN2219).
La page d’assistance du Kit de développement logiciel (SDK) Intel® FPGA pour OpenCL fournit des informations sur la façon d’émuler, de compiler et de profiler votre noyau. Il existe également des directives sur la façon d’optimiser votre noyau ainsi que des informations sur la façon de déboguer votre système lors de l’exécution de l’application hôte. Cette page est organisée en deux catégories principales basées sur la plateforme de développement : développeur de noyau pour FPGA et développeur de code hôte pour les processeurs.
Configuration logicielle requise
Vous devez disposer de privilèges d’administrateur sur le système de développement pour installer les packages et pilotes nécessaires au développement du logiciel hôte.
Le système hôte doit exécuter l’un des systèmes d’exploitation Windows* et Linux* pris en charge suivants répertoriés sur la page Support du système d’exploitation .
Développez votre application hôte pour le Kit de développement logiciel (SDK) Intel® FPGA pour OpenCL™ à l’aide de l’un des environnements de développement suivants :
Systèmes d’exploitation Windows
- SDK Intel FPGA pour OpenCL
- Kit de prise en charge de la carte mère (BSP)
- Microsoft* Visual Studio Professional version 2010 ou ultérieure.
Systèmes d’exploitation Linux
- SDK Intel FPGA pour OpenCL
- BSP
- RPM (Gestionnaire de paquets RPM ; à l’origine Gestionnaire de paquets Red Hat)
- Compilateur C inclus avec GCC
- Commande Perl version 5 ou ultérieure
1. Développeur de noyau
Interface utilisateur du SDK
Intel® FPGA SDK pour OpenCL™ offre deux modes d’expérience de développement aux utilisateurs. Pour les constructeurs de code, tous les outils sont intégrés dans l’interface graphique, ce qui leur permet de concevoir, compiler et déboguer le noyau. D’autre part, les options de ligne de commande sont pour les utilisateurs conventionnels.
- GUI/générateur de code : Non disponible pour le moment
- Option de ligne de commande :
Voici quelques commandes utiles pour les développeurs de noyau :
AOC kernel.cl -o bin/kernel.aocx –board=<board_name>
- Compile kernel.cl fichier source dans un fichier de programmation de FPGA (kernel.aocx) pour la carte spécifiée par <board_name>; -o est utilisé pour spécifier le nom et l’emplacement du fichier de sortie.
AOC kernel.cl -o bin/kernel.aocx –board=<board_name> -march=émulateur
- Construit un fichier aocx pour l’émulation qui peut être utilisé pour tester la fonctionnalité du noyau
AOC -liste-tableaux
- Imprime une liste des cartes et sorties disponibles
AOC - Aide
- Imprime la liste complète des options de commande aoc et des informations d’aide pour chacune de ces options
Version AOCL
- Affiche les informations de version de la version installée de Intel FPGA SDK pour OpenCL
Installation d’AOCL
- Installe les pilotes de votre carte dans le système hôte actuel
Diagnostic de l’AOCL
- Exécute le programme de test du fournisseur de la carte pour la carte
Programme AOC
- Configure une nouvelle image FPGA sur le tableau
Flash AOCL
- Initialise le FPGA avec une configuration de démarrage spécifiée
Aide AOCL
- Imprime la liste complète des options de commande aocl et des informations d’aide pour chacune de ces options
Spécification OpenCL
Compatibilité Khronos
Intel® FPGA SDK pour OpenCL™ est basé sur une spécification Khronos publiée et est pris en charge par de nombreux fournisseurs qui font partie du groupe Khronos. Intel FPGA SDK pour OpenCL a passé avec succès le processus de test de conformité Khronos. Il est conforme à la norme OpenCL 1.0 et fournit les en-têtes OpenCL 1.0 et OpenCL 2.0 du groupe Khronos.
Attention: Le Kit de développement logiciel (SDK) ne prend actuellement pas en charge toutes les interfaces de programmation d’applications (API) OpenCL 2.0. Si vous utilisez les en-têtes OpenCL 2.0 et faites un appel à une API non prise en charge, l’appel renvoie un code d’erreur pour indiquer que l’API n’est pas entièrement prise en charge.
Le runtime hôte Intel FPGA SDK for OpenCL est conforme à la couche et à l’API de plateforme OpenCL, avec quelques précisions et exceptions, que vous trouverez dans la section Support Statuses of OpenCL Features (États de prise en charge des fonctionnalités OpenCL ) du Guide de programmation du SDK Intel FPGA pour OpenCL.
Autres liens connexes :
- Pour plus d’informations sur OpenCL, consultez la page de présentation OpenCL de Kronos Group .
- L’état de conformité actuel se trouve à la page du Programme d’adoption du groupe Kronos .
- Pour plus d’informations sur la norme OpenCL 1.0, reportez-vous à La spécification OpenCL de Khronos.
OpenCL Extensions
Canaux (E/S ou noyau)
L’extension de canal Intel® FPGA SDK pour OpenCL™ fournit un mécanisme permettant de transmettre des données aux noyaux et de synchroniser les noyaux avec une efficacité élevée et une faible latence. Utilisez les liens suivants pour plus d’informations sur l’implémentation, l’utilisation et l’émulation des canaux :
- Implémentation de l’extension du SDK Intel FPGA pour les canaux OpenCL
- Utilisation de canaux avec des copies de noyau
- Rapport HTML : Concepts de conception de noyau - Canaux
- Transfert de données via Intel FPGA SDK pour les canaux OpenCL ou les canaux OpenCL
- Exigence de plusieurs files d’attente de commandes dans l’implémentation de canaux ou de canaux
Remarque : Si vous souhaitez exploiter les capacités des canaux mais que vous avez la possibilité d’exécuter le programme de votre noyau à l’aide d’autres SDK, implémentez les canaux OpenCL. Pour plus d’informations sur les tuyaux, consultez la section suivante sur les tuyaux.
Tuyaux
Intel FPGA SDK pour OpenCL fournit une prise en charge préliminaire des fonctions de canal OpenCL, qui font partie de la spécification OpenCL version 2.0. Ils fournissent un mécanisme pour transmettre des données aux noyaux et synchroniser les noyaux avec une efficacité élevée et une faible latence.
L’implémentation des pipelines du Kit de développement logiciel Intel FPGA pour OpenCL n’est pas entièrement conforme à la spécification OpenCL version 2.0. L’objectif de l’implémentation du pipeline du SDK est de fournir une solution qui fonctionne de manière transparente sur un autre périphérique conforme à OpenCL 2.0. Pour activer les tuyaux pour Intel FPGA produits, votre conception doit répondre à certaines exigences.
Consultez les liens suivants pour plus d’informations sur l’implémentation des canaux OpenCL :
- Implémentation de canaux OpenCL
- Transfert de données via Intel FPGA SDK pour les canaux OpenCL ou les canaux OpenCL
- Exigence de plusieurs files d’attente de commandes dans l’implémentation de canaux ou de canaux
Émulateur
Dans un flux de conception en plusieurs étapes, vous pouvez évaluer la fonctionnalité de votre noyau OpenCL™ en l’exécutant sur un ou plusieurs périphériques d’émulation sur un hôte Windows* ou Linux* x86-64. La compilation de la conception pour l’émulation prend quelques secondes pour générer un fichier .aocx et vous permet d’itérer sur votre conception plus efficacement sans avoir à passer par les longues heures nécessaires à la compilation complète.
Pour les systèmes Linux, l’émulateur offre un support de débogage symbolique. Le débogage symbolique vous permet de localiser les origines des erreurs fonctionnelles dans le code de votre noyau.
Le lien ci-dessous donne un aperçu du flux de conception des noyaux OpenCL et illustre les différentes étapes pour lesquelles vous pouvez émuler votre noyau.
SDK Intel® FPGA en plusieurs étapes pour le flux de conception OpenCL
La section Emulating and Debugging Your OpenCL Kernel du Guide de programmation contient plus de détails sur les différences entre le fonctionnement du noyau sur le matériel et l’émulation.
Autres liens connexes :
- Émulation et débogage de votre noyau OpenCL
- Émulation des canaux d’E/S
- Vérification de la fonctionnalité d’exécution de l’hôte via l’émulation (Windows)
- Vérification de la fonctionnalité d’exécution de l’hôte via l’émulation (Linux)
Optimisation
Avec la technologie Intel® FPGA SDK pour OpenCL™ Offline Compiler, vous n’avez pas besoin de modifier votre noyau pour l’intégrer de manière optimale dans une architecture matérielle fixe. Au lieu de cela, le compilateur hors ligne personnalise automatiquement l’architecture matérielle pour répondre aux besoins de votre noyau.
En général, vous devez optimiser un noyau qui cible d’abord une seule unité de calcul. Après avoir optimisé cette unité de calcul, augmentez les performances en mettant à l’échelle le matériel pour remplir le reste de la FPGA. L’empreinte matérielle du noyau est en corrélation avec le temps nécessaire à la compilation matérielle. Par conséquent, plus vous pouvez effectuer d’optimisations avec un encombrement réduit (c’est-à-dire une seule unité de calcul), plus vous pouvez effectuer de compilations matérielles dans un laps de temps donné.
Optimisation OpenCL pour Intel FPGAs
Pour optimiser la mise en œuvre de votre conception et obtenir les performances maximales, comprenez vos performances maximales théoriques et comprenez quelles sont vos limites. Procédez comme suit :
- Commencez par une mise en œuvre fonctionnelle simple et connue.
- Utilisez un émulateur pour valider la fonctionnalité.
- Supprimez ou minimisez les blocages de pipeline signalés dans le rapport d’optimisation.
- Planifiez l’accès à la mémoire pour optimiser la bande passante mémoire.
- Utilisez un profileur pour déboguer les problèmes de performances.
Le profileur donne plus d’informations sur les performances du système, ce qui vous donne des indications pour optimiser davantage l’algorithme dans l’utilisation de la mémoire.
N’oubliez pas que pour FPGAs, plus il est possible d’allouer de ressources, plus le déroulement et la parallélisation et les performances sont élevées.
Rapports et ressources utiles pour l’optimisation
Un certain nombre de rapports générés par le système sont mis à la disposition des utilisateurs. Ces rapports donnent un aperçu du code, de l’utilisation des ressources et des conseils sur les points sur lesquels se concentrer pour améliorer encore les performances :
- Rapport d’analyse de boucle d’un exemple de conception OpenCL
- Vérification des informations sur la réplication et les blocages de la mémoire
- Examen des informations sur la zone
- Rapport HTML : Messages de rapport de zone
Optimisation de la mémoire
Comprendre les systèmes de mémoire est crucial pour implémenter efficacement une application utilisant OpenCL.
Interconnexion de la mémoire globale
Contrairement à un GPU, un FPGA peut construire n’importe quelle unité de stockage de charge (LSU) personnalisée qui est la plus optimale pour votre application. Par conséquent, votre capacité à écrire du code OpenCL qui sélectionne les types de LSU idéaux pour votre application peut contribuer à améliorer considérablement les performances de votre conception.
Pour plus d’informations, reportez-vous à la section Global Memory Interconnect du SDK Intel FPGA pour obtenir le Guide des meilleures pratiques OpenCL.
Mémoire locale
La mémoire locale est un système complexe. Contrairement à l’architecture GPU typique où il existe différents niveaux de caches, un FPGA implémente la mémoire locale dans des blocs de mémoire dédiés à l’intérieur du FPGA. Pour plus d’informations, reportez-vous à la section Mémoire locale du Guide des meilleures pratiques du Kit de développement logiciel Intel FPGA pour OpenCL.
Il existe plusieurs façons d’optimiser la mémoire utilisée pour améliorer les performances globales. Pour plus d’informations sur certaines des techniques clés, reportez-vous à la section Allocation de mémoire alignée du guide des meilleures pratiques du SDK Intel FPGA pour OpenCL.
Pour plus d’informations sur les stratégies visant à améliorer l’efficacité d’accès à la mémoire, reportez-vous à la section Stratégies d’amélioration de l’efficacité d’accès à la mémoire du Guide des meilleures pratiques du SDK Intel FPGA pour OpenCL.
Pipelines
Il est essentiel de comprendre les pipelines pour tirer parti des meilleures performances de votre implémentation. L’utilisation efficace des pipelines améliore directement le rendement des performances. Pour plus d’informations, reportez-vous à la section Pipelines du guide des meilleures pratiques du SDK Intel FPGA pour OpenCL.
Pour plus d’informations sur le transfert de données, reportez-vous à la section Transfert de données via Intel FPGA SDK pour les canaux OpenCL ou les canaux OpenCL du Guide des meilleures pratiques du SDK Intel FPGA pour OpenCL.
Décrochage, occupation, bande passante
Profilez votre noyau pour identifier les goulots d’étranglement des performances. Pour plus d’informations sur la façon dont les informations de profilage vous aident à identifier les mauvais comportements de mémoire ou de canal qui conduisent à des performances de noyau insatisfaisantes, reportez-vous à la section Profilage de votre noyau pour identifier les goulots d’étranglement des performances du Guide des meilleures pratiques du SDK Intel FPGA pour OpenCL.
Optimisation de la boucle
Voici quelques techniques d’optimisation des boucles :
Pour obtenir des conseils sur la suppression des dépendances portées par boucle dans divers scénarios pour un noyau d’élément de travail unique, reportez-vous à la section Suppression de la dépendance portée par boucle du Guide des meilleures pratiques du Kit de développement logiciel (SDK) Intel FPGA pour OpenCL.
Pour plus d’informations sur l’optimisation des opérations en virgule flottante, reportez-vous à la section Optimisation des opérations en virgule flottante du Guide des meilleures pratiques du Kit de développement logiciel Intel FPGA pour OpenCL.
Optimisation de zone
L’utilisation de zones est une considération de conception importante si vos noyaux OpenCL sont exécutables sur des FPGAs de tailles différentes. Lorsque vous concevez votre application OpenCL, Intel vous recommande de suivre certaines stratégies de conception pour optimiser l’utilisation de la zone matérielle.
L’optimisation des performances du noyau nécessite généralement des ressources FPGA supplémentaires. En revanche, l’optimisation de la zone entraîne souvent une diminution des performances. Lors de l’optimisation du noyau, Intel recommande d’exécuter plusieurs versions du noyau sur la carte FPGA afin de déterminer la stratégie de programmation du noyau qui génère le meilleur compromis entre la taille et les performances.
Pour plus d’informations sur les stratégies d’optimisation de l’utilisation de la zone FPGA, reportez-vous à la section Stratégies d’optimisation de l’utilisation de la zone FPGA du guide des meilleures pratiques du SDK Intel FPGA pour OpenCL.
Exemples de conception de référence
Voici quelques exemples de conception qui illustrent les techniques d’optimisation :
Exemple de conception de multiplication matricielle
Cet exemple montre l’optimisation de l’opération fondamentale de multiplication matricielle en utilisant le pavage de boucle pour tirer parti de la réutilisation des données inhérente au calcul.
Cet exemple illustre :
- Optimisations à virgule flottante simple précision
- Mise en mémoire tampon de la mémoire locale
- Compiler les optimisations (déroulement de boucle, attribut num_simd_work_items)
- Optimisations en virgule flottante
- Exécution de plusieurs appareils
Exemple de conception d’un filtre FIR dans le domaine temporel
Cet exemple de conception met en œuvre le banc d’essai de filtre à réponse impulsionnelle finie (FIR) dans le domaine temporel de HPEC Challenge Benchmark Suite.
Cette conception est un excellent exemple de la façon dont FPGAs peut fournir de bien meilleures performances qu’une architecture GPU pour les filtres FIR à virgule flottante.
Cet exemple illustre :
- Optimisations à virgule flottante simple précision
- Mise en œuvre efficace du tampon de fenêtre coulissante 1D
- Méthodes d’optimisation du noyau à élément de travail unique
Exemple de conception vidéo de réduction d’échelle
Cet exemple de conception met en œuvre un downscaler vidéo qui prend une vidéo d’entrée 1080p et sort une vidéo 720p à 110 images par seconde. Cet exemple utilise plusieurs noyaux pour lire et écrire efficacement dans la mémoire globale.
Cet exemple illustre :
- Canaux du noyau
- Plusieurs noyaux simultanés
- Canaux noyau à noyau
- Modèle de conception de fenêtre coulissante
- Optimisations des modèles d’accès à la mémoire
Exemple de conception de flux optique
Cet exemple de conception est une implémentation OpenCL de l’algorithme de flux optique Lucas Kanade. Une version dense, non itérative et non pyramidale avec une taille de fenêtre de 52x52 est montrée comme fonctionnant à plus de 80 images par seconde sur le kit de développement SoC Cyclone® V.
Cet exemple illustre :
- Noyau à élément de travail unique
- Modèle de conception de fenêtre coulissante
- Techniques de réduction de l’utilisation des ressources
- Sortie visuelle
Formation
Une formation en ligne spécifique à l’optimisation OpenCL avec des exemples de conception est disponible à l’adresse suivante :
- Techniques d’optimisation OpenCL : exemple d’algorithme de traitement d’image
- Techniques d’optimisation OpenCL : exemple d’algorithme de hachage sécurisé
Références
Profilage
Dans un flux de conception en plusieurs étapes, si les performances estimées du noyau issues de l’émulation sont acceptables, vous pouvez choisir de collecter des informations sur les performances de votre conception lors de l’exécution sur le FPGA.
Vous pouvez demander au compilateur hors ligne Intel® FPGA pour OpenCL™ d’instrumenter les compteurs de performance dans le code Verilog du fichier .aocx avec l’option -profile. Pendant l’exécution, le SDK Intel FPGA pour OpenCL Profiler mesure et rapporte les données de performances collectées pendant l’exécution du noyau OpenCL sur le FPGA. Vous pouvez ensuite consulter les données de performances dans l’interface graphique de Profiler.
La section Profilage de votre noyau OpenCL du Guide de programmation du Kit de développement logiciel Intel FPGA pour OpenCL contient plus d’informations sur le profil de votre noyau.
Comment analyser les données de profilage
Les informations de profilage vous aident à identifier les mauvais comportements de mémoire ou de canal qui conduisent à des performances de noyau insatisfaisantes. La section Profiler votre noyau pour identifier les goulots d’étranglement des performances du guide des meilleures pratiques du SDK Intel FPGA pour OpenCL contient des informations plus détaillées sur l’interface graphique de Dynamic Profiler et sur la façon d’interpréter les données de profilage telles que le décrochage, la bande passante, les accès au cache, etc. Il contient également une analyse Profiler de plusieurs exemples de scénarios de conception OpenCL.
2. Développeur de code hôte
Bibliothèques hôtes d’exécution
Intel® FPGA SDK pour OpenCL fournit un compilateur et des outils vous permettant de créer et d’exécuter des applications OpenCL™ qui ciblent des produits Intel FPGA.
Si vous avez uniquement besoin de la fonctionnalité de déploiement du noyau Intel FPGA SDK pour OpenCL, téléchargez et installez l’environnement d’exécution Intel FPGA (RTE) pour OpenCL.
Le RTE est un sous-ensemble du SDK Intel FPGA pour OpenCL. Contrairement au Kit de développement logiciel (SDK), qui fournit un environnement permettant le développement et le déploiement de programmes du noyau OpenCL, le RTE fournit des outils et des composants d’exécution qui vous permettent de générer et d’exécuter un programme hôte, et d’exécuter des programmes du noyau OpenCL précompilés sur les cartes d’accélération cibles.
N’installez pas le Kit de développement logiciel (SDK) et le RTE sur le même système hôte. Le SDK contient déjà le RTE.
Utilitaires et bibliothèques d’exécution hôte
Le RTE pour OpenCL fournit des utilitaires, des bibliothèques d’exécution hôte, des pilotes et des bibliothèques et fichiers spécifiques à RTE.
- L’utilitaire RTE inclut des commandes que vous pouvez appeler pour effectuer des tâches de haut niveau. Les utilitaires RTE sont un sous-ensemble du SDK Intel FPGA pour les utilitaires OpenCL
- Le runtime hôte fournit l’API de plateforme hôte OpenCL et l’API d’exécution pour votre application hôte OpenCL
Le runtime hôte se compose des bibliothèques suivantes :
- Les bibliothèques liées statiquement fournissent des API hôtes OpenCL, des abstractions matérielles et des bibliothèques d’assistance
- Les bibliothèques de liens dynamiques (DLL) fournissent des abstractions matérielles et des bibliothèques d’assistance
Pour plus d’informations sur les utilitaires et les bibliothèques d’exécution hôte, reportez-vous à la section Contenu de Intel FPGA RTE pour OpenCL du Guide de démarrage de Intel FPGA RTE pour OpenCL .
Streaming de données (canal hôte)
Vous pouvez désormais réduire considérablement la latence de vos systèmes à l’aide de canaux hôtes qui permettent de transmettre des données en flux continu depuis l’hôte pour les diffuser directement dans le noyau FPGA via l’interface PCIe*, tout en contournant le contrôleur mémoire. Le noyau FPGA peut commencer à traiter les données immédiatement et n’a pas à attendre la fin du transfert de données. Les canaux hôtes sont pris en charge dans les interfaces de programmation d’applications (API) d’exécution OpenCL et incluent la prise en charge de l’émulation.
Pour plus de détails sur les canaux hôtes et la prise en charge de l’émulation, reportez-vous à la section Émulation des canaux d’E/S du Guide de programmation du Kit de développement logiciel Intel® FPGA pour OpenCL™.
Profilling
Le profilage vous permet d’apprendre où votre programme a passé son temps et quelles sont les différentes fonctions qui sont appelées. Ces informations vous indiquent quelle partie de votre programme s’exécute plus lentement que prévu et qui pourrait nécessiter une réécriture pour une exécution plus rapide du programme. Il peut également vous indiquer quelles fonctions sont appelées plus ou moins souvent que prévu.
Le
Le gprof est un outil open-source disponible dans les systèmes d’exploitation Linux* pour profiler le code source. Il fonctionne sur l’échantillonnage basé sur le temps. Pendant les intervalles, le compteur de programme est interrogé pour décider à quel point du code l’exécution est arrivée.
Pour utiliser le gprof, recompilez le code source à l’aide de l’indicateur de profilage du compilateur -pg
Exécutez les exécutables pour générer les fichiers contenant les informations de profilage :
Un fichier spécifique nommé « gmon.out » contenant toutes les informations dont l’outil gprof a besoin pour produire des données de profilage lisibles par l’homme est généré. Alors, utilisez maintenant l’outil gprof de la manière suivante:
$ gprof code source gmon.out > profile_data.txt
profile_data.txt est le fichier qui contient les informations que l’outil GPROF utilise pour produire des données de profilage lisibles par l’homme. Il contient deux parties : le profil plat et le graphique d’appel.
Le profil plat indique combien de temps votre programme a passé dans chaque fonction, et combien de fois cette fonction a été appelée.
Le graphique d’appel indique, pour chaque fonction, quelles fonctions l’ont appelée, quelles autres fonctions elle a appelées et combien de fois. Il existe également une estimation du temps passé dans les sous-programmes de chaque fonction.
Plus d’informations sur l’utilisation de gprof pour le profilage sont disponibles sur le site Web de GNU.
Amplificateur VTune™ Intel®
L’amplificateur de® VTune™Intel utilisé pour le profilage vous aide à accélérer et à optimiser l’exécution de votre code sur les plateformes embarquées Linux, les systèmes Android* ou Windows*, en fournissant les types d’analyse suivants :
- Analyse des performances : Trouvez les goulots d’étranglement du code série et parallèle, analysez les choix d’algorithmes et l’utilisation du moteur GPU, et comprenez où et comment votre application peut bénéficier des ressources matérielles disponibles
- Analyse Intel Energy Profiler : Analyser les événements de puissance et identifier ceux qui gaspillent de l’énergie
Pour plus d’informations sur Intel V-tune Amplifier, visitez le site Web Mise en route avec Intel VTune Amplifier 2018 pour Linux OS .
Multithreading
OpenCL™ Host Pipelined Multithread fournit un cadre permettant d’atteindre un débit élevé pour les algorithmes où un grand nombre de données d’entrée doivent être traitées et le traitement de chaque donnée doit être effectué dans l’ordre séquentiel. L’une des meilleures applications de ce framework réside dans les plates-formes hétérogènes où du matériel ou une plate-forme à haut débit est utilisé pour accélérer la partie la plus fastidieuse de l’application. Les parties restantes de l’algorithme doivent être exécutées dans un ordre séquentiel sur d’autres plates-formes telles que les processeurs, soit pour préparer les données d’entrée pour la tâche accélérée, soit pour utiliser la sortie de cette tâche pour préparer la sortie finale. Dans ce scénario, bien que les performances de l’algorithme soient partiellement accélérées, le débit total du système est beaucoup plus faible en raison de la nature séquentielle de l’algorithme d’origine.
Dans cette note AN 831: Intel FPGA SDK for OpenCL Host Pipelined Multithread Application Note, un nouveau cadre en pipeline pour la conception à haut débit est proposé. Ce cadre est optimal pour le traitement de données d’entrée volumineuses via des algorithmes où la dépendance aux données force l’exécution séquentielle de toutes les étapes ou tâches de l’algorithme.
FPGA Initiailisation à partir de l’hôte
FPGAs sont très utilisés dans l’espace d’accélération. OpenCL a une façon spécifique d’être utilisé par le CPU pour décharger la tâche sur FPGA. Le fichier ci-dessous contient les étapes d’initialisation courantes nécessaires au code hôte pour lancer le noyau FPGA. Téléchargez le fichier contenant les étapes d’initialisation ici.
La fonction init() peut être appelée à partir de la fonction main() pour initialiser le FPGA. Le code trouve d’abord le périphérique sur lequel le noyau s’exécutera, puis le programme avec l’aocx fourni dans le même répertoire que l’exécutable hôte. Après les étapes d’initialisation du code, l’utilisateur doit définir les arguments du noyau en fonction des besoins de ses conceptions.
Il existe également une fonction cleanup() qui libère les ressources après l’exécution du noyau.
3. Débogage
Émulation
Le SDK Intel® FPGA pour l’émulateur OpenCL™ peut être utilisé pour vérifier la fonctionnalité du noyau. L’utilisateur peut également déboguer la fonctionnalité du noyau OpenCL dans le cadre de l’application hôte sur les systèmes Linux*. La fonctionnalité de débogage fournie avec l’émulateur Intel FPGA SDK for OpenCL vous permet de le faire.
Pour plus d’informations, reportez-vous aux sections suivantes dans le Guide de programmation du SDK Intel FPGA pour OpenCL :
Profilage
Pour plus d’informations sur le profilage, reportez-vous aux sections suivantes dans le Guide de programmation du Kit de développement logiciel (SDK) Intel® FPGA pour OpenCL™ :
Variables de débogage du runtime |
|
---|---|
Certaines variables d’environnement peuvent être définies pour obtenir davantage d’informations de débogage lors de l’exécution de l’application hôte. Il s’agit Intel® FPGA variables d’environnement spécifiques au SDK pour OpenCL™, qui peuvent aider à diagnostiquer les problèmes liés aux conceptions de plateforme personnalisées. Le tableau suivant répertorie toutes ces variables d’environnement et les décrit en détail. | |
Titre de la variable d’environnement | Description |
ACL_HAL_DEBUG |
Définissez cette variable sur une valeur comprise entre 1 et 5 pour augmenter la sortie de débogage de la couche d’abstraction matérielle (HAL), qui s’interface directement avec la couche MMD. |
ACL_PCIE_DEBUG |
Définissez cette variable sur une valeur comprise entre 1 et 10 000 pour augmenter la sortie de débogage à partir de la MMD. Ce paramètre de variable est utile pour confirmer que le registre d’ID de version a été lu correctement et que les cœurs IP UniPHY sont calibrés. |
ACL_PCIE_JTAG_CABLE |
Définissez cette variable pour remplacer l’argument quartus_pgm par défaut qui spécifie le numéro de câble. La valeur par défaut est le câble 1. S’il existe plusieurs câbles Intel® FPGA téléchargement, vous pouvez spécifier un câble particulier en définissant cette variable. |
ACL_PCIE_JTAG_DEVICE_INDEX |
Définissez cette variable pour remplacer l’argument quartus_pgm par défaut qui spécifie l’index de périphérique FPGA. Par défaut, cette variable a la valeur 1. Si le FPGA n’est pas le premier périphérique de la chaîne JTAG, vous pouvez personnaliser la valeur. |
ACL_PCIE_USE_JTAG_PROGRAMMING |
Définissez cette variable pour forcer le MMD à reprogrammer le FPGA à l’aide du câble JTAG au lieu d’une reconfiguration partielle. |
ACL_PCIE_DMA_USE_MSI |
Définissez cette variable si vous souhaitez utiliser MSI pour les transferts d’accès direct à la mémoire (DMA) sur le système d’exploitation Windows*. |
Outil de diagnostic pour Intel® FPGA SDK pour OpenCL™
L’outil de diagnostic de Intel FPGA SDK pour OpenCL permet de diagnostiquer et de résoudre divers problèmes d’installation/de configuration ainsi que des problèmes matériels et logiciels qui surviennent lors de l’utilisation d’Intel FPGA SDK pour OpenCL. L’outil effectue des tests d’installation, des tests de périphériques et des tests de liaison. Pour plus d’informations sur l’outil, reportez-vous à cette présentation. Pour utiliser l’outil, téléchargez-le ici.
Autres techniques de débogage
En raison d’une boucle dans le programme hôte, les utilisateurs peuvent constater que le système OpenCL™ ralentit pendant son exécution. Pour en savoir plus sur un tel scénario, reportez-vous à la section Débogage de votre système OpenCL qui ralentit progressivement du Guide de programmation du SDK Intel® FPGA pour OpenCL.
Intel Code Builder for OpenCL est un outil de développement logiciel disponible dans le cadre du SDK Intel FPGA pour OpenCL. Il fournit un ensemble de plug-ins Microsoft* Visual Studio et Eclipse qui permettent de créer, de construire, de déboguer et d’analyser des applications Windows* et Linux* accélérées par OpenCL. Pour plus d’informations, reportez-vous à la section Développement/débogage d’applications OpenCL à l’aide d’Intel Code Builder for OpenCL du Guide de programmation du SDK Intel FPGA pour OpenCL.
Solution de base de connaissances
Intel® Arria® 10 périphériques
Intel® Stratix® 10 périphériques
Autres ressources
Voici quelques liens supplémentaires de la communauté Intel FPGA pour des questions spécifiques liées aux étapes de conception et d’exécution :
4. Formation disponible
Formations
Consultez les cours de formation OpenCL™ suivants :
- Introduction au calcul parallèle avec OpenCL™ sur Intel® FPGAs
- Écriture d’OpenCL sur Intel® FPGAs
- Exécution d’OpenCL sur Intel FPGAs
- Autres formations OpenCL
- Création d’un module RTL pour le SDK Intel® FPGA pour OpenCL™
- Création de plateformes personnalisées pour Intel® FPGA SDK pour OpenCL™ : Principes de base de BSP
- Création de plateformes personnalisées pour Intel® FPGA SDK pour OpenCL™ : modification d’une plateforme de référence
Vidéos rapides OpenCL™ |
|
---|---|
Titre de la vidéo |
Description de la vidéo |
Cette vidéo décrit la procédure prête à l’emploi pour exécuter deux applications, OpenCL HelloWorld et OpenCL™ fast Fourier transform (FFT) sur le SoC Cyclone® V à l’aide d’une machine Windows*. |
|
Cette vidéo décrit la procédure prête à l’emploi pour exécuter deux applications, OpenCL HelloWorld et OpenCL FFT, sur le SoC Cyclone V à l’aide d’une machine Windows. |
|
Cette vidéo décrit la procédure prête à l’emploi pour exécuter deux applications, OpenCL HelloWorld et OpenCL FFT, sur le SoC Cyclone V à l’aide d’une machine Windows. |
|
Cette vidéo décrit la procédure prête à l’emploi pour exécuter deux applications, OpenCL HelloWorld et OpenCL FFT, sur le SoC Cyclone V à l’aide d’une machine Windows. |
|
Cette vidéo décrit la procédure prête à l’emploi pour exécuter deux applications, OpenCL HelloWorld et OpenCL FFT, sur le SoC Cyclone V à l’aide d’une machine Windows. |
|
Comment empaqueter des modules/conceptions Verilog personnalisés en tant que bibliothèques OpenCL |
La vidéo explique pourquoi les clients pourraient potentiellement utiliser cette fonctionnalité pour avoir leurs blocs de traitement personnalisés (RTL) dans le code du noyau OpenCL. La vidéo explique l’exemple de conception, tel que les fichiers makefiles et config, et explique le flux de compilation. La vidéo montre également une démonstration de l’exemple de conception. |
OpenCL sur Altera® SoC FPGA (hôte Linux*) – Partie 1 – Téléchargement et configuration des outils |
Cette vidéo montre comment télécharger, installer et configurer les outils nécessaires au développement de noyaux OpenCL et de code hôte ciblant Altera® SoC FPGAs. |
Cette vidéo montre comment télécharger et compiler un exemple d’application OpenCL ciblant l’émulateur intégré à OpenCL. |
|
OpenCL sur Altera SoC FPGA (hôte Linux) – Partie 3 – Compilation de code noyau et hôte pour SoC FPGA |
Cette vidéo montre comment compiler le noyau OpenCL et le code hôte ciblant le FPGA et le processeur du FPGA SoC Cyclone V. |
OpenCL sur Altera SoC FPGA (hôte Linux) – Partie 4 – Configuration de l’environnement d’exécution |
Cette vidéo montre comment configurer la carte SoC Cyclone V pour exécuter l’exemple OpenCL et exécuter le code hôte et le noyau sur la carte. |
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.