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 compromis de la programmation GPU ?
- Quels sont les frameworks pour la programmation GPU ?
- Choisir le bon framework pour votre application
OpenCL
- Qu'est-ce qu'OpenCL ?
- Quels sont les avantages et inconvénients d'OpenCL ?
- Configurer l'environnement de développement pour OpenCL
- Créer un programme OpenCL de base qui effectue une addition vectorielle
- Utiliser l'API OpenCL pour interroger les informations sur l'appareil, allouer et libérer la mémoire de l'appareil, copier des données entre l'hôte et l'appareil, lancer des noyaux (kernels) et synchroniser les threads
- Utiliser le langage C OpenCL pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent les données
- Utiliser les fonctions, variables et bibliothèques intégrées d'OpenCL pour effectuer des tâches et opérations courantes
- Utiliser les espaces mémoire d'OpenCL, tels que global, local, constant et privé, pour optimiser les transferts de données et les accès en mémoire
- Utiliser le modèle d'exécution d'OpenCL pour contrôler les work-items, work-groups et ND-ranges qui définissent le parallélisme
- Déboguer et tester des programmes OpenCL en utilisant des outils tels que CodeXL
- Optimiser les programmes OpenCL en utilisant des techniques telles que la coalescence, le cache, le prefetching et le profiling
CUDA
- Qu'est-ce que CUDA ?
- Quels sont les avantages et inconvénients de CUDA ?
- Configurer l'environnement de développement pour CUDA
- Créer un programme CUDA de base qui effectue une addition vectorielle
- Utiliser l'API CUDA pour interroger les informations sur l'appareil, allouer et libérer la mémoire de l'appareil, copier des données entre l'hôte et l'appareil, lancer des noyaux (kernels) et synchroniser les threads
- Utiliser le langage C/C++ CUDA pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent les données
- Utiliser les fonctions, variables et bibliothèques intégrées de CUDA pour effectuer des tâches et opérations courantes
- Utiliser les espaces mémoire de CUDA, tels que global, shared, constant et local, pour optimiser les transferts de données et les accès en mémoire
- Utiliser le modèle d'exécution de CUDA pour contrôler les threads, blocs et grilles qui définissent le parallélisme
- Déboguer et tester des programmes CUDA en utilisant des outils tels que CUDA-GDB, CUDA-MEMCHECK et NVIDIA Nsight
- Optimiser les programmes CUDA en utilisant des techniques telles que la coalescence, le cache, le prefetching et le profiling
ROCm
- Qu'est-ce que ROCm ?
- Quels sont les avantages et inconvénients de ROCm ?
- Configurer l'environnement de développement pour ROCm
- Créer un programme ROCm de base qui effectue une addition vectorielle
- Utiliser l'API ROCm pour interroger les informations sur l'appareil, allouer et libérer la mémoire de l'appareil, copier des données entre l'hôte et l'appareil, lancer des noyaux (kernels) et synchroniser les threads
- Utiliser le langage C/C++ ROCm pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent les données
- Utiliser les fonctions, variables et bibliothèques intégrées de ROCm pour effectuer des tâches et opérations courantes
- Utiliser les espaces mémoire de ROCm, tels que global, local, constant et privé, pour optimiser les transferts de données et les accès en mémoire
- Utiliser le modèle d'exécution de ROCm pour contrôler les threads, blocs et grilles qui définissent le parallélisme
- Déboguer et tester des programmes ROCm en utilisant des outils tels que ROCm Debugger et ROCm Profiler
- Optimiser les programmes ROCm en utilisant des techniques telles que la coalescence, le cache, le prefetching et le profiling
Comparaison
- Comparer les fonctionnalités, performances et compatibilités d'OpenCL, CUDA et ROCm
- Évaluer des programmes GPU en utilisant des benchmarks et des 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
- Des connaissances de base en architecture informatique et hiérarchie mémoire
- De l'expérience avec les outils en ligne de commande et les éditeurs de code
Public cible
- Développeurs souhaitant apprendre à utiliser différents frameworks pour la programmation GPU et comparer leurs fonctionnalités, performances et compatibilités
- Développeurs souhaitant écrire un code portable et évolutif qui peut s'exécuter sur différentes plateformes et appareils
- Programmateurs souhaitant explorer les compromis et défis de la programmation GPU et de l'optimisation
28 Heures