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

OpenCL

  • Qu'est-ce qu'OpenCL ?
  • Quels sont les avantages et les inconvénients d'OpenCL ?
  • Configuration de l'environnement de développement pour OpenCL
  • Création d'un programme OpenCL basique effectuant une addition vectorielle
  • 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 kernels et synchroniser les threads
  • Utilisation du langage OpenCL C pour écrire des kernels qui s'exécutent sur l'appareil et manipulent les données
  • Utilisation des fonctions, variables et bibliothèques intégrées 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 plages ND qui définissent le parallélisme
  • Débogage et test des programmes OpenCL en utilisant des outils tels que CodeXL
  • Optimisation des programmes OpenCL en utilisant des techniques telles que le regroupement, la mise en cache, le pré-chargement 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 basique effectuant une addition vectorielle
  • 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 kernels et synchroniser les threads
  • Utilisation du langage CUDA C/C++ pour écrire des kernels qui s'exécutent sur l'appareil et manipulent les données
  • Utilisation des fonctions, variables et bibliothèques intégrées de CUDA pour effectuer des tâches et opérations courantes
  • Utilisation des espaces mémoire CUDA, tels que global, shared, 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ébogage et test des programmes CUDA en utilisant des outils tels que CUDA-GDB, CUDA-MEMCHECK et NVIDIA Nsight
  • Optimisation des programmes CUDA en utilisant des techniques telles que le regroupement, la mise en cache, le pré-chargement 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 basique effectuant une addition vectorielle
  • 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 kernels et synchroniser les threads
  • Utilisation du langage ROCm C/C++ pour écrire des kernels qui s'exécutent sur l'appareil et manipulent les données
  • Utilisation des fonctions, variables et bibliothèques intégrées 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ébogage et test des programmes ROCm en utilisant des outils tels que ROCm Debugger et ROCm Profiler
  • Optimisation des programmes ROCm en utilisant des techniques telles que le regroupement, la mise en cache, le pré-chargement et le profilage

HIP

  • Qu'est-ce que HIP ?
  • Quels sont les avantages et les inconvénients de HIP ?
  • Configuration de l'environnement de développement pour HIP
  • Création d'un programme HIP basique effectuant une addition vectorielle
  • Utilisation du langage HIP pour écrire des kernels qui s'exécutent sur l'appareil et manipulent les données
  • Utilisation des fonctions, variables et bibliothèques intégrées de HIP pour effectuer des tâches et opérations courantes
  • Utilisation des espaces mémoire HIP, tels que global, shared, 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ébogage et test des programmes HIP en utilisant des outils tels que ROCm Debugger et ROCm Profiler
  • Optimisation des programmes HIP en utilisant des techniques telles que le regroupement, la mise en cache, le pré-chargement et le profilage

Comparaison

  • Comparaison des fonctionnalités, des performances et de la compatibilité d'OpenCL, CUDA, ROCm et HIP
  • Évaluation des programmes GPU à l'aide de benchmarks et de métriques
  • Apprentissage des meilleures pratiques et astuces 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 en ligne de commande et les éditeurs de code

Public cible

  • 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