Prenez contact avec nous

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 et outils pour la programmation GPU ?
  • Choisir le bon framework et outil pour votre application

OpenCL

  • Qu'est-ce que OpenCL ?
  • Quels sont les avantages et inconvénients de OpenCL ?
  • Mise en place de l'environnement de développement pour OpenCL
  • Création d'un programme OpenCL de base effectuant une addition de vecteurs
  • Utilisation de l'API OpenCL pour interroger les informations de 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 et synchroniser les threads
  • Utilisation du langage C OpenCL pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent les données
  • Utilisation des fonctions intégrées, variables et bibliothèques d'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ébuggage 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é-extraction (prefetching) et le profilage

CUDA

  • Qu'est-ce que CUDA ?
  • Quels sont les avantages et inconvénients de CUDA ?
  • Mise en place de l'environnement de développement pour CUDA
  • Création d'un programme CUDA de base effectuant une addition de vecteurs
  • Utilisation de l'API CUDA pour interroger les informations de 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 et synchroniser les threads
  • Utilisation du langage C/C++ CUDA pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent les données
  • Utilisation des fonctions intégrées, variables et bibliothèques de CUDA pour effectuer des tâches et opérations courantes
  • Utilisation des espaces mémoire CUDA, tels que global, partagé, 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ébuggage 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é-extraction (prefetching) et le profilage

ROCm

  • Qu'est-ce que ROCm ?
  • Quels sont les avantages et inconvénients de ROCm ?
  • Mise en place de l'environnement de développement pour ROCm
  • Création d'un programme ROCm de base effectuant une addition de vecteurs
  • Utilisation de l'API ROCm pour interroger les informations de 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 et synchroniser les threads
  • Utilisation du langage C/C++ ROCm pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent les données
  • Utilisation des fonctions intégrées, variables et bibliothèques de 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ébuggage et test des programmes ROCm à l'aide d'outils tels que le débogueur ROCm et le profileur ROCm
  • Optimisation des programmes ROCm à l'aide de techniques telles que le regroupement (coalescing), la mise en cache, la pré-extraction (prefetching) et le profilage

HIP

  • Qu'est-ce que HIP ?
  • Quels sont les avantages et inconvénients de HIP ?
  • Mise en place de l'environnement de développement pour HIP
  • Création d'un programme HIP de base effectuant une addition de vecteurs
  • Utilisation du langage HIP pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent les données
  • Utilisation des fonctions intégrées, variables et bibliothèques de HIP pour effectuer des tâches et opérations courantes
  • Utilisation des espaces mémoire HIP, tels que global, partagé, constant et local, pour optimiser les transferts de données et les accès mémoire
  • Utilisation du modèle d'exécution HIP pour contrôler les threads, les blocs et les grilles qui définissent le parallélisme
  • Débuggage et test des programmes HIP à l'aide d'outils tels que le débogueur ROCm et le profileur ROCm
  • Optimisation des programmes HIP à l'aide de techniques telles que le regroupement (coalescing), la mise en cache, la pré-extraction (prefetching) et le profilage

Comparaison

  • Comparaison des fonctionnalités, performances et compatibilité d'OpenCL, CUDA, ROCm et HIP
  • É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 et défis actuels et futurs 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
  • Des connaissances de base en architecture informatique et hiérarchie mémoire
  • De l'expérience avec les outils de ligne de commande et les éditeurs de code

Public

  • Développeurs souhaitant apprendre les bases de la programmation GPU et les principaux frameworks et outils pour développer des applications GPU
  • Développeurs souhaitant écrire du code portable et évolutif pouvant s'exécuter sur différentes plateformes et appareils
  • Programmateurs souhaitant explorer les avantages et les défis de la programmation GPU et de l'optimisation
 21 Heures

Nombre de participants


Prix par participant

Cours à venir

Catégories Similaires