Prenez contact avec nous

Plan du cours

Introduction

  • Qu'est-ce que CUDA ?
  • CUDA comparé à OpenCL et SYCL
  • Aperçu des fonctionnalités et de l'architecture de CUDA
  • Configuration de l'environnement de développement

Premiers pas

  • Création d'un nouveau projet CUDA avec Visual Studio Code
  • Exploration de la structure du projet et des fichiers
  • Compilation et exécution du programme
  • Affichage de la sortie via printf et fprintf

API CUDA

  • Compréhension du rôle de l'API CUDA dans le programme hôte
  • Utilisation de l'API CUDA pour interroger les informations et capacités du dispositif
  • Utilisation de l'API CUDA pour allouer et libérer de la mémoire de dispositif
  • Utilisation de l'API CUDA pour copier des données entre l'hôte et le dispositif
  • Utilisation de l'API CUDA pour lancer des noyaux et synchroniser les threads
  • Utilisation de l'API CUDA pour gérer les erreurs et les exceptions

CUDA C/C++

  • Compréhension du rôle de CUDA C/C++ dans le programme de dispositif
  • Utilisation de CUDA C/C++ pour écrire des noyaux qui s'exécutent sur le GPU et manipulent les données
  • Utilisation des types de données, qualifiants, opérateurs et expressions de CUDA C/C++
  • Utilisation des fonctions intégrées de CUDA C/C++, telles que math, atomic, warp, etc.
  • Utilisation des variables intégrées de CUDA C/C++, telles que threadIdx, blockIdx, blockDim, etc.
  • Utilisation des bibliothèques de CUDA C/C++, telles que cuBLAS, cuFFT, cuRAND, etc.

Modèle mémoire de CUDA

  • Compréhension de la différence entre les modèles mémoire de l'hôte et du dispositif
  • Utilisation des espaces mémoire de CUDA, tels que global, partagé, constant et local
  • Utilisation des objets mémoire de CUDA, tels que pointeurs, tableaux, textures et surfaces
  • Utilisation des modes d'accès mémoire de CUDA, tels que en lecture seule, en écriture seule, en lecture-écriture, etc.
  • Utilisation du modèle de cohérence mémoire de CUDA et des mécanismes de synchronisation

Modèle d'exécution de CUDA

  • Compréhension de la différence entre les modèles d'exécution de l'hôte et du dispositif
  • Utilisation des threads, blocs et grilles CUDA pour définir le parallélisme
  • Utilisation des fonctions de thread CUDA, telles que threadIdx, blockIdx, blockDim, etc.
  • Utilisation des fonctions de bloc CUDA, telles que __syncthreads, __threadfence_block, etc.
  • Utilisation des fonctions de grille CUDA, telles que gridDim, gridSync, groupes coopératifs, etc.

Débogage

  • Compréhension des erreurs et bogues courants dans les programmes CUDA
  • Utilisation du débogueur Visual Studio Code pour inspecter les variables, les points d'arrêt, la pile d'appels, etc.
  • Utilisation de CUDA-GDB pour déboguer les programmes CUDA sous Linux
  • Utilisation de CUDA-MEMCHECK pour détecter les erreurs et fuites de mémoire
  • Utilisation de NVIDIA Nsight pour déboguer et analyser les programmes CUDA sous Windows

Optimisation

  • Compréhension des facteurs influençant les performances des programmes CUDA
  • Utilisation des techniques de regroupement (coalescing) CUDA pour améliorer le débit mémoire
  • Utilisation des techniques de mise en cache et de prérecherche CUDA pour réduire la latence mémoire
  • Utilisation de la mémoire partagée et locale CUDA pour optimiser les accès mémoire et la bande passante
  • Utilisation du profilage et des outils de profilage CUDA pour mesurer et améliorer le temps d'exécution et l'utilisation des ressources

Synthèse et prochaines étapes

Pré requis

  • Compréhension du langage C/C++ et des concepts de programmation parallèle.
  • Connaissances de base en architecture des ordinateurs et hiérarchie mémoire.
  • Expérience avec les outils en ligne de commande et les éditeurs de code.

Public cible

  • Développeurs souhaitant apprendre à utiliser CUDA pour programmer les GPU NVIDIA et exploiter leur parallélisme.
  • Développeurs souhaitant écrire du code haute performance et évolutif capable de s'exécuter sur différents dispositifs CUDA.
  • Programmeurs souhaitant explorer les aspects bas niveau de la programmation GPU et optimiser les performances de leur code.
 28 Heures

Nombre de participants


Prix par participant

Cours à venir

Catégories Similaires