Plan du cours

Introduction

  • Qu'est-ce que CUDA ?
  • CUDA vs OpenCL vs SYCL
  • Présentation des fonctionnalités et de l'architecture de CUDA
  • Configuration de l'environnement de développement

Pour commencer

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

API CUDA

  • Comprendre le rôle de l'API CUDA dans le programme hôte
  • Utilisation de l'API CUDA pour interroger les informations et les capacités des périphériques
  • Utilisation de l'API CUDA pour allouer et désallouer la mémoire des périphériques
  • Utilisation de l'API CUDA pour copier des données entre l'hôte et le périphérique
  • Utilisation de l'API CUDA pour lancer des noyaux et synchroniser des threads
  • Utilisation de l'API CUDA pour gérer les erreurs et les exceptions

CUDA C/C++

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

Modèle de mémoire CUDA

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

Modèle d'exécution CUDA

  • Comprendre la différence entre les modèles d'exécution de l'hôte et du périphérique
  • 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

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

Optimisation

  • Comprendre les facteurs qui affectent les performances des programmes CUDA
  • Utilisation des techniques de coalescence CUDA pour améliorer le débit de la mémoire
  • Utilisation des techniques de mise en cache et de préemption CUDA pour réduire la latence de la mémoire
  • Utilisation des techniques de mémoire partagée et de mémoire locale CUDA pour optimiser les accès à la mémoire et la bande passante
  • Utilisation d'outils de profilage CUDA pour mesurer et améliorer le temps d'exécution et l'utilisation des ressources.

Résumé et prochaines étapes

Pré requis

  • Compréhension du langage C/C++ et des concepts de programmation parallèle
  • Connaissance de base de l'architecture des ordinateurs et de la hiérarchie de la mémoire
  • Expérience des outils de ligne de commande et des éditeurs de code

Public

  • Développeurs souhaitant apprendre à utiliser CUDA pour programmer les processeurs NVIDIAGPU et exploiter leur parallélisme.
  • Développeurs souhaitant écrire un code performant et évolutif pouvant être exécuté sur différents périphériques CUDA
  • Les programmeurs qui souhaitent explorer les aspects de bas niveau de la programmation GPU et optimiser les performances de leur code.
 28 heures

Nombre de participants



Prix par participant

Nos Clients témoignent (1)

Cours Similaires

GPU Programming with OpenCL

28 heures

GPU Programming - OpenCL vs CUDA vs ROCm

28 heures

AMD GPU Programming

28 heures

ROCm for Windows

21 heures

Introduction to GPU Programming

21 heures

Catégories Similaires