Merci d'avoir envoyé votre demande ! Un membre de notre équipe vous contactera sous peu.
Merci d'avoir envoyé votre réservation ! Un membre de notre équipe vous contactera sous peu.
Plan du cours
Introduction
- Qu'est-ce que la programmation GPU ?
- Pourquoi utiliser la programmation GPU ?
- Quels sont les défis et les compromis de la programmation GPU ?
- Quelles sont les frameworks pour la programmation GPU ?
- Choisir le bon framework pour votre application
OpenCL
- Qu'est-ce que OpenCL ?
- Quels sont les avantages et les inconvénients de OpenCL ?
- Configurer l'environnement de développement pour OpenCL
- Créer un programme OpenCL basique qui effectue une addition vectorielle
- Utiliser l'API OpenCL pour interroger les informations du matériel, allouer et libérer la mémoire de matériel, copier des données entre hôte et matériel, lancer des noyaux et synchroniser des threads
- Écrire des noyaux en langage C/OpenCL qui s'exécutent sur le matériel et manipulent les données
- Utiliser les fonctions intégrées, variables et bibliothèques de OpenCL pour effectuer des tâches courantes et des opérations
- Utiliser les espaces mémoires de OpenCL, comme le global, local, constant et privé, pour optimiser les transferts de données et l'accès à la mémoire
- Utiliser le modèle d'exécution de OpenCL pour contrôler les éléments de travail, les groupes de travail et les ND-ranges qui définissent la parallélisation
- Déboguer et tester les programmes OpenCL en utilisant des outils comme CodeXL
- Optimiser les programmes OpenCL en utilisant des techniques telles que le regroupement, le mise en cache, la préchargement et le profiling
CUDA
- Qu'est-ce que CUDA ?
- Quels sont les avantages et les inconvénients de CUDA ?
- Configurer l'environnement de développement pour CUDA
- Créer un programme CUDA basique qui effectue une addition vectorielle
- Utiliser l'API CUDA pour interroger les informations du matériel, allouer et libérer la mémoire de matériel, copier des données entre hôte et matériel, lancer des noyaux et synchroniser des threads
- Écrire des noyaux en langage C/C++ qui s'exécutent sur le matériel et manipulent les données
- Utiliser les fonctions intégrées, variables et bibliothèques de CUDA pour effectuer des tâches courantes et des opérations
- Utiliser les espaces mémoires de CUDA, comme le global, partagé, constant et local, pour optimiser les transferts de données et l'accès à la mémoire
- Utiliser le modèle d'exécution de CUDA pour contrôler les threads, blocs et grilles qui définissent la parallélisation
- Déboguer et tester des programmes CUDA en utilisant des outils comme CUDA-GDB, CUDA-MEMCHECK et NVIDIA Nsight
- Optimiser les programmes CUDA en utilisant des techniques telles que le regroupement, le mise en cache, la préchargement et le profiling
ROCm
- Qu'est-ce que ROCm ?
- Quels sont les avantages et les inconvénients de ROCm ?
- Configurer l'environnement de développement pour ROCm
- Créer un programme ROCm basique qui effectue une addition vectorielle
- Utiliser l'API ROCm pour interroger les informations du matériel, allouer et libérer la mémoire de matériel, copier des données entre hôte et matériel, lancer des noyaux et synchroniser des threads
- Écrire des noyaux en langage C/C++ qui s'exécutent sur le matériel et manipulent les données
- Utiliser les fonctions intégrées, variables et bibliothèques de ROCm pour effectuer des tâches courantes et des opérations
- Utiliser les espaces mémoires de ROCm, comme le global, local, constant et privé, pour optimiser les transferts de données et l'accès à la mémoire
- Utiliser le modèle d'exécution de ROCm pour contrôler les threads, blocs et grilles qui définissent la parallélisation
- Déboguer et tester des programmes ROCm en utilisant des outils comme ROCm Debugger et ROCm Profiler
- Optimiser les programmes ROCm en utilisant des techniques telles que le regroupement, le mise en cache, la préchargement et le profiling
Comparaison
- Comparer les fonctionnalités, performances et compatibilités de OpenCL, CUDA et ROCm
- Évaluer les programmes GPU en utilisant des benchmarks et métriques
- Apprendre les meilleures pratiques et astuces pour la programmation GPU
- Explorer les tendances actuelles et futures ainsi que les défis de la programmation GPU
Résumé et prochaines étapes
Pré requis
- Une compréhension des langages C/C++ et des concepts de programmation parallèle
- Connaissances de base sur l'architecture informatique et la hiérarchie de mémoire
- Expérience avec les outils en ligne de commande et les éditeurs de code
Public cible
- Développeurs qui souhaitent apprendre à utiliser différents cadres pour la programmation GPU et comparer leurs fonctionnalités, performances et compatibilités
- Développeurs qui souhaitent écrire des codes portables et scalables capables de s'exécuter sur différentes plateformes et appareils
- Programmateurs qui souhaitent explorer les compromis et défis de la programmation GPU et l'optimisation
28 Heures