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

OpenCL

  • Qu'est-ce que la OpenCL ?
  • Quels sont les avantages et les inconvénients de OpenCL ?
  • Mise en place de l'environnement de développement pour OpenCL
  • Création d'un programme OpenCL de base qui effectue une addition vectorielle
  • Utilisation de l'API OpenCL pour demander des informations sur le périphérique, allouer et désallouer la mémoire du périphérique, copier des données entre l'hôte et le périphérique, lancer des noyaux et synchroniser des threads
  • Utilisation du langage C OpenCL pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent des données
  • l'utilisation de fonctions, de variables et de bibliothèques intégrées OpenCL pour effectuer des tâches et des opérations courantes
  • Utilisation des espaces mémoire OpenCL, tels que les espaces globaux, locaux, constants et privés, pour optimiser les transferts de données et les accès à la mémoire
  • Utiliser le modèle d'exécution OpenCL pour contrôler les éléments de travail, les groupes de travail et les plages ND 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 la coalescence, la mise en cache, l'extraction préalable 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 de base qui effectue une addition vectorielle
  • Utilisation de l'API CUDA pour demander des informations sur les périphériques, allouer et désallouer la mémoire des périphériques, copier des données entre l'hôte et le périphérique, lancer des noyaux et synchroniser des threads
  • Utilisation du langage CUDA C/C++ pour écrire des noyaux qui s'exécutent sur le périphérique et manipulent des données
  • Utilisation des fonctions intégrées, des variables et des bibliothèques CUDA pour effectuer des tâches et des opérations courantes
  • Utilisation des espaces mémoire CUDA, tels que les espaces globaux, partagés, constants et locaux, pour optimiser les transferts de données et les accès à la 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.
  • Optimiser les programmes CUDA à l'aide de techniques telles que la coalescence, la mise en cache, la prélecture 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 de base qui effectue une addition vectorielle
  • Utilisation de l'API ROCm pour demander des informations sur le périphérique, allouer et désallouer la mémoire du périphérique, copier des données entre l'hôte et le périphérique, lancer des noyaux et synchroniser des threads
  • Utilisation du langage ROCm C/C++ pour écrire des noyaux qui s'exécutent sur le dispositif et manipulent des données
  • Utilisation des fonctions, variables et bibliothèques intégrées de ROCm pour effectuer des tâches et des 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 à la 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
  • Optimiser les programmes ROCm à l'aide de techniques telles que la coalescence, la mise en cache, l'extraction préalable et le profilage.

HIP

  • Qu'est-ce que le HIP ?
  • Quels sont les avantages et les inconvénients de HIP ?
  • Mise en place de l'environnement de développement pour HIP
  • Création d'un programme HIP de base qui effectue une addition vectorielle
  • Utiliser le langage HIP pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent des données
  • Utilisation des fonctions intégrées, des variables et des bibliothèques HIP pour effectuer des tâches et des opérations courantes
  • Utiliser les espaces mémoire HIP, tels que les espaces globaux, partagés, constants et locaux, pour optimiser les transferts de données et les accès à la 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ébogage et test des programmes HIP à l'aide d'outils tels que ROCm Debugger et ROCm Profiler
  • Optimiser les programmes HIP en utilisant des techniques telles que le coalescing, le caching, le prefetching et le profiling.

Comparaison

  • Comparaison des caractéristiques, des performances et de la compatibilité de OpenCL, CUDA, ROCm et HIP
  • Évaluer les programmes GPU à l'aide de repères et de mesures
  • Apprendre les meilleures pratiques et astuces pour la programmation GPU
  • Explorer les tendances et les défis actuels et futurs de la programmation GPU.

Résumé et prochaines étapes

Pré requis

  • Compréhension du langage C/C++ et des concepts de programmation parallèle
  • Connaissance de base de l'architecture des ordinateurs et de la hiérarchie de la mémoire
  • Expérience des outils de ligne de commande et des éditeurs de code

Public

  • Développeurs souhaitant apprendre les bases de la programmation GPU et les principaux cadres et outils de développement d'applications GPU.
  • Les développeurs qui souhaitent écrire un code portable et évolutif pouvant fonctionner sur différentes plateformes et appareils
  • Les programmeurs qui souhaitent explorer les avantages et les défis de la programmation GPU et de l'optimisation.
 21 heures

Nombre de participants



Prix par participant

Nos Clients témoignent (1)

Cours Similaires

GPU Programming with OpenCL

28 heures

GPU Programming with CUDA

28 heures

GPU Programming - OpenCL vs CUDA vs ROCm

28 heures

AMD GPU Programming

28 heures

ROCm for Windows

21 heures

Catégories Similaires