Plan du cours

Introduction

  • Qu'est-ce que la programmation GPU ?
  • Pourquoi utiliser la programmation GPU ?
  • Quels sont les défis et compromis de la programmation GPU ?
  • Quels sont les frameworks pour la programmation GPU ?
  • Choisir le bon framework pour votre application

OpenCL

  • Qu'est-ce qu'OpenCL ?
  • Quels sont les avantages et inconvénients d'OpenCL ?
  • Configurer l'environnement de développement pour OpenCL
  • Créer un programme OpenCL de base qui effectue une addition vectorielle
  • Utiliser l'API OpenCL pour interroger les informations sur 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 (kernels) et synchroniser les threads
  • Utiliser le langage C OpenCL pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent les données
  • Utiliser les fonctions, variables et bibliothèques intégrées d'OpenCL pour effectuer des tâches et opérations courantes
  • Utiliser les espaces mémoire d'OpenCL, tels que global, local, constant et privé, pour optimiser les transferts de données et les accès en mémoire
  • Utiliser le modèle d'exécution d'OpenCL pour contrôler les work-items, work-groups et ND-ranges qui définissent le parallélisme
  • Déboguer et tester des programmes OpenCL en utilisant des outils tels que CodeXL
  • Optimiser les programmes OpenCL en utilisant des techniques telles que la coalescence, le cache, le prefetching et le profiling

CUDA

  • Qu'est-ce que CUDA ?
  • Quels sont les avantages et inconvénients de CUDA ?
  • Configurer l'environnement de développement pour CUDA
  • Créer un programme CUDA de base qui effectue une addition vectorielle
  • Utiliser l'API CUDA pour interroger les informations sur 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 (kernels) et synchroniser les threads
  • Utiliser le langage C/C++ CUDA pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent les données
  • Utiliser les fonctions, variables et bibliothèques intégrées de CUDA pour effectuer des tâches et opérations courantes
  • Utiliser les espaces mémoire de CUDA, tels que global, shared, constant et local, pour optimiser les transferts de données et les accès en mémoire
  • Utiliser le modèle d'exécution de CUDA pour contrôler les threads, blocs et grilles qui définissent le parallélisme
  • Déboguer et tester des programmes CUDA en utilisant des outils tels que CUDA-GDB, CUDA-MEMCHECK et NVIDIA Nsight
  • Optimiser les programmes CUDA en utilisant des techniques telles que la coalescence, le cache, le prefetching et le profiling

ROCm

  • Qu'est-ce que ROCm ?
  • Quels sont les avantages et inconvénients de ROCm ?
  • Configurer l'environnement de développement pour ROCm
  • Créer un programme ROCm de base qui effectue une addition vectorielle
  • Utiliser l'API ROCm pour interroger les informations sur 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 (kernels) et synchroniser les threads
  • Utiliser le langage C/C++ ROCm pour écrire des noyaux qui s'exécutent sur l'appareil et manipulent les données
  • Utiliser les fonctions, variables et bibliothèques intégrées de ROCm pour effectuer des tâches et opérations courantes
  • Utiliser les espaces mémoire de ROCm, tels que global, local, constant et privé, pour optimiser les transferts de données et les accès en mémoire
  • Utiliser le modèle d'exécution de ROCm pour contrôler les threads, blocs et grilles qui définissent le parallélisme
  • Déboguer et tester des programmes ROCm en utilisant des outils tels que ROCm Debugger et ROCm Profiler
  • Optimiser les programmes ROCm en utilisant des techniques telles que la coalescence, le cache, le prefetching et le profiling

Comparaison

  • Comparer les fonctionnalités, performances et compatibilités d'OpenCL, CUDA et ROCm
  • Évaluer des programmes GPU en utilisant des benchmarks et des 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
  • Des connaissances de base en architecture informatique et hiérarchie mémoire
  • De l'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és
  • Développeurs souhaitant écrire un code portable et évolutif qui peut s'exécuter sur différentes plateformes et appareils
  • Programmateurs souhaitant explorer les compromis et défis de la programmation GPU et de l'optimisation
 28 Heures

Nombre de participants


Prix ​​par Participant

Cours à venir

Catégories Similaires