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 ?
- Quels sont les frameworks pour la programmation GPU ?
- Choisir le bon framework pour votre application
OpenCL
- Qu'est-ce que l'OpenCL ?
- Quels sont les avantages et les inconvénients de l'OpenCL ?
- Configuration de l'environnement de développement pour OpenCL
- Création d'un programme OpenCL basique effectuant une addition de vecteurs
- Utilisation de l'API OpenCL pour interroger les informations du périphérique, allouer et libérer la mémoire du périphérique, copier les données entre l'hôte et le périphérique, lancer des kernels et synchroniser les threads
- Utilisation du langage C OpenCL pour écrire des kernels qui s'exécutent sur le périphérique et manipulent les données
- Utilisation des fonctions intégrées, variables et bibliothèques OpenCL pour effectuer des tâches et opérations courantes
- Utilisation des espaces mémoire OpenCL, tels que global, local, constant et privé, pour optimiser les transferts de données et les accès mémoire
- Utilisation du modèle d'exécution OpenCL pour contrôler les work-items, les work-groups et les ND-ranges qui définissent le parallélisme
- Débogage et test des programmes OpenCL à l'aide d'outils tels que CodeXL
- Optimisation des programmes OpenCL à l'aide de techniques telles que le regroupement (coalescing), la mise en cache, la prédétection (prefetching) et le profilage
CUDA
- Qu'est-ce que CUDA ?
- Quels sont les avantages et les inconvénients de CUDA ?
- Configuration de l'environnement de développement pour CUDA
- Création d'un programme CUDA basique effectuant une addition de vecteurs
- Utilisation de l'API CUDA pour interroger les informations du périphérique, allouer et libérer la mémoire du périphérique, copier les données entre l'hôte et le périphérique, lancer des kernels et synchroniser les threads
- Utilisation du langage C/C++ CUDA pour écrire des kernels qui s'exécutent sur le périphérique et manipulent les données
- Utilisation des fonctions intégrées, variables et bibliothèques CUDA pour effectuer des tâches et opérations courantes
- Utilisation des espaces mémoire CUDA, tels que global, shared, constant et local, pour optimiser les transferts de données et les accès mémoire
- Utilisation du modèle d'exécution CUDA pour contrôler les threads, les blocs et les grilles qui définissent le parallélisme
- Débogage et test des programmes CUDA à l'aide d'outils tels que CUDA-GDB, CUDA-MEMCHECK et NVIDIA Nsight
- Optimisation des programmes CUDA à l'aide de techniques telles que le regroupement (coalescing), la mise en cache, la prédétection (prefetching) et le profilage
ROCm
- Qu'est-ce que ROCm ?
- Quels sont les avantages et les inconvénients de ROCm ?
- Configuration de l'environnement de développement pour ROCm
- Création d'un programme ROCm basique effectuant une addition de vecteurs
- Utilisation de l'API ROCm pour interroger les informations du périphérique, allouer et libérer la mémoire du périphérique, copier les données entre l'hôte et le périphérique, lancer des kernels et synchroniser les threads
- Utilisation du langage C/C++ ROCm pour écrire des kernels qui s'exécutent sur le périphérique et manipulent les données
- Utilisation des fonctions intégrées, variables et bibliothèques ROCm pour effectuer des tâches et opérations courantes
- Utilisation des espaces mémoire ROCm, tels que global, local, constant et privé, pour optimiser les transferts de données et les accès mémoire
- Utilisation du modèle d'exécution ROCm pour contrôler les threads, les blocs et les grilles qui définissent le parallélisme
- Débogage et test des programmes ROCm à l'aide d'outils tels que ROCm Debugger et ROCm Profiler
- Optimisation des programmes ROCm à l'aide de techniques telles que le regroupement (coalescing), la mise en cache, la prédétection (prefetching) et le profilage
Comparaison
- Comparaison des fonctionnalités, performances et compatibilité d'OpenCL, CUDA et ROCm
- Évaluation des programmes GPU à l'aide de benchmarks et de métriques
- Apprentissage des meilleures pratiques et conseils pour la programmation GPU
- Exploration des tendances actuelles et futures ainsi que des défis de la programmation GPU
Résumé et prochaines étapes
Pré requis
- Une compréhension du langage C/C++ et des concepts de programmation parallèle
- Connaissances de base en architecture des ordinateurs et hiérarchie mémoire
- Expérience avec les outils en ligne de commande et les éditeurs de code
Audience
- Développeurs souhaitant apprendre à utiliser différents frameworks pour la programmation GPU et comparer leurs fonctionnalités, performances et compatibilité
- Développeurs souhaitant écrire du code portable et évolutive capable de s'exécuter sur différentes plateformes et périphériques
- Programmateurs souhaitant explorer les compromis et les défis de la programmation et de l'optimisation GPU
28 Heures