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 (2)

Cours à venir

Catégories Similaires