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 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 d'OpenCL ?
  • Configurer l'environnement de développement pour OpenCL
  • Créer un programme OpenCL de base effectuant une addition de vecteurs
  • Utiliser l'API OpenCL pour interroger les informations sur les appareils, 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
  • Utiliser le langage OpenCL C pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent des données
  • Utiliser les fonctions intégrées, variables et bibliothèques OpenCL pour effectuer des tâches et opérations courantes
  • Utiliser les espaces mémoire OpenCL, tels que global, local, constant et privé, pour optimiser les transferts de données et les accès 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éboguer et tester les programmes OpenCL à l'aide d'outils tels que CodeXL
  • Optimiser les programmes OpenCL en utilisant des techniques telles que le regroupement, la mise en cache, la pré-fetching et le profilage

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 de base effectuant une addition de vecteurs
  • Utiliser l'API CUDA pour interroger les informations sur les appareils, 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
  • Utiliser le langage CUDA C/C++ pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent des données
  • Utiliser les fonctions intégrées, variables et bibliothèques CUDA pour effectuer des tâches et opérations courantes
  • Utiliser les espaces mémoire CUDA, tels que global, partagé, constant et local, pour optimiser les transferts de données et les accès mémoire
  • Utiliser le modèle d'exécution CUDA pour contrôler les threads, les blocs et les grilles qui définissent le parallélisme
  • Déboguer et tester les programmes CUDA à l'aide d'outils tels que CUDA-GDB, CUDA-MEMCHECK et NVIDIA Nsight
  • Optimiser les programmes CUDA en utilisant des techniques telles que le regroupement, la mise en cache, la pré-fetching et le profilage

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 de base effectuant une addition de vecteurs
  • Utiliser l'API ROCm pour interroger les informations sur les appareils, 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
  • Utiliser le langage ROCm C/C++ pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent des données
  • Utiliser les fonctions intégrées, variables et bibliothèques ROCm pour effectuer des tâches et opérations courantes
  • Utiliser les espaces mémoire ROCm, tels que global, local, constant et privé, pour optimiser les transferts de données et les accès mémoire
  • Utiliser le modèle d'exécution ROCm pour contrôler les threads, les blocs et les grilles qui définissent le parallélisme
  • Déboguer et tester les programmes ROCm à l'aide d'outils tels que ROCm Debugger et ROCm Profiler
  • Optimiser les programmes ROCm en utilisant des techniques telles que le regroupement, la mise en cache, la pré-fetching et le profilage

Comparaison

  • Comparer les fonctionnalités, performances et compatibilité d'OpenCL, CUDA et ROCm
  • Évaluer les programmes GPU à l'aide de benchmarks et de mesures
  • Apprendre les meilleures pratiques et astuces pour la programmation GPU
  • Explorer les 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
  • Une 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é.
  • Développeurs souhaitant écrire du code portable et évolutif capable de s'exécuter sur différentes plateformes et appareils.
  • Programmateurs souhaitant explorer les compromis et les défis de la programmation et de l'optimisation GPU.
 28 Heures

Nombre de participants


Prix par participant

Cours à venir

Catégories Similaires