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 ?
  • Quelles 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 de OpenCL ?
  • Configurer l'environnement de développement pour OpenCL
  • Créer un programme OpenCL basique qui effectue une addition vectorielle
  • Utiliser l'API OpenCL pour interroger les informations du matériel, allouer et libérer la mémoire de matériel, copier des données entre hôte et matériel, lancer des noyaux et synchroniser des threads
  • Écrire des noyaux en langage C/OpenCL qui s'exécutent sur le matériel et manipulent les données
  • Utiliser les fonctions intégrées, variables et bibliothèques de OpenCL pour effectuer des tâches courantes et des opérations
  • Utiliser les espaces mémoires de OpenCL, comme le global, local, constant et privé, pour optimiser les transferts de données et l'accès à la mémoire
  • Utiliser le modèle d'exécution de OpenCL pour contrôler les éléments de travail, les groupes de travail et les ND-ranges qui définissent la parallélisation
  • Déboguer et tester les programmes OpenCL en utilisant des outils comme CodeXL
  • Optimiser les programmes OpenCL en utilisant des techniques telles que le regroupement, le mise en cache, la préchargement et le profiling

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 basique qui effectue une addition vectorielle
  • Utiliser l'API CUDA pour interroger les informations du matériel, allouer et libérer la mémoire de matériel, copier des données entre hôte et matériel, lancer des noyaux et synchroniser des threads
  • Écrire des noyaux en langage C/C++ qui s'exécutent sur le matériel et manipulent les données
  • Utiliser les fonctions intégrées, variables et bibliothèques de CUDA pour effectuer des tâches courantes et des opérations
  • Utiliser les espaces mémoires de CUDA, comme le global, partagé, constant et local, pour optimiser les transferts de données et l'accès à la mémoire
  • Utiliser le modèle d'exécution de CUDA pour contrôler les threads, blocs et grilles qui définissent la parallélisation
  • Déboguer et tester des programmes CUDA en utilisant des outils comme CUDA-GDB, CUDA-MEMCHECK et NVIDIA Nsight
  • Optimiser les programmes CUDA en utilisant des techniques telles que le regroupement, le mise en cache, la préchargement et le profiling

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 basique qui effectue une addition vectorielle
  • Utiliser l'API ROCm pour interroger les informations du matériel, allouer et libérer la mémoire de matériel, copier des données entre hôte et matériel, lancer des noyaux et synchroniser des threads
  • Écrire des noyaux en langage C/C++ qui s'exécutent sur le matériel et manipulent les données
  • Utiliser les fonctions intégrées, variables et bibliothèques de ROCm pour effectuer des tâches courantes et des opérations
  • Utiliser les espaces mémoires de ROCm, comme le global, local, constant et privé, pour optimiser les transferts de données et l'accès à la mémoire
  • Utiliser le modèle d'exécution de ROCm pour contrôler les threads, blocs et grilles qui définissent la parallélisation
  • Déboguer et tester des programmes ROCm en utilisant des outils comme ROCm Debugger et ROCm Profiler
  • Optimiser les programmes ROCm en utilisant des techniques telles que le regroupement, le mise en cache, la préchargement et le profiling

Comparaison

  • Comparer les fonctionnalités, performances et compatibilités de OpenCL, CUDA et ROCm
  • Évaluer les programmes GPU en utilisant des benchmarks et 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
  • Connaissances de base sur l'architecture informatique et la hiérarchie de mémoire
  • Expérience avec les outils en ligne de commande et les éditeurs de code

Public cible

  • Développeurs qui souhaitent apprendre à utiliser différents cadres pour la programmation GPU et comparer leurs fonctionnalités, performances et compatibilités
  • Développeurs qui souhaitent écrire des codes portables et scalables capables de s'exécuter sur différentes plateformes et appareils
  • Programmateurs qui souhaitent explorer les compromis et défis de la programmation GPU et l'optimisation
 28 Heures

Nombre de participants


Prix ​​par Participant

Cours à venir

Catégories Similaires