Prenez contact avec nous
 Durée 28 heures

Plan du cours

Introduction

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

Prise en main

  • Création d'un nouveau projet CUDA avec 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
  • Utiliser l'API CUDA pour interroger les informations et les capacités de l'appareil
  • Utiliser l'API CUDA pour allouer et libérer la mémoire de l'appareil
  • Utiliser l'API CUDA pour copier des données entre l'hôte et l'appareil
  • Utiliser l'API CUDA pour lancer des noyaux et synchroniser les threads
  • Utiliser 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 de l'appareil
  • Utiliser CUDA C/C++ pour écrire des noyaux qui s'exécutent sur le GPU et manipulent les données
  • Utiliser les types de données, qualificateurs, opérateurs et expressions de CUDA C/C++
  • Utiliser les fonctions intégrées de CUDA C/C++, telles que les fonctions mathématiques, atomiques, warp, etc.
  • Utiliser les variables intégrées de CUDA C/C++, telles que threadIdx, blockIdx, blockDim, etc.
  • Utiliser les bibliothèques de CUDA C/C++, telles que cuBLAS, cuFFT, cuRAND, etc.

Modèle mémoire CUDA

  • Comprendre la différence entre les modèles mémoire hôte et appareil
  • Utiliser les espaces mémoire de CUDA, tels que global, partagé, constant et local
  • Utiliser les objets mémoire de CUDA, tels que pointeurs, tableaux, textures et surfaces
  • Utiliser les modes d'accès mémoire de CUDA, tels que lecture seule, écriture seule, lecture/écriture, etc.
  • Utiliser le modèle de cohérence mémoire de CUDA et les mécanismes de synchronisation

Modèle d'exécution CUDA

  • Comprendre la différence entre les modèles d'exécution hôte et appareil
  • Utiliser les threads, blocs et grilles CUDA pour définir le parallélisme
  • Utiliser les fonctions de thread CUDA, telles que threadIdx, blockIdx, blockDim, etc.
  • Utiliser les fonctions de bloc CUDA, telles que __syncthreads, __threadfence_block, etc.
  • Utiliser les fonctions de grille CUDA, telles que gridDim, gridSync, cooperative groups, etc.

Débogage

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

Optimisation

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

Pré requis

  • Compréhension du langage C/C++ et des concepts de programmation parallèle
  • Connaissances de base en architecture informatique 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 des GPU NVIDIA et exploiter leur parallélisme
  • Développeurs souhaitant écrire du code haute performance et extensible pouvant s'exécuter sur différents appareils CUDA
  • Programmeurs souhaitant explorer les aspects de bas niveau de la programmation GPU et optimiser la performance de leur code

Nombre de participants


Prix par participant

Cours à venir

Catégories Similaires