Merci d'avoir envoyé votre demande ! Un membre de notre équipe vous contactera sous peu.
Merci d'avoir envoyé votre réservation ! Un membre de notre équipe vous contactera sous peu.
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 à l’aide de Visual Studio Code
- Exploration de la structure du projet et des fichiers
- 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 les 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 exécutés sur le GPU et manipuler les données
- Utiliser les types de données, les qualificatifs, les opérateurs et les expressions de CUDA C/C++
- Utiliser les fonctions intégrées de CUDA C/C++, telles que math, atomique, 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 de mémoire CUDA
- Comprendre la différence entre les modèles de mémoire hôte et appareil
- Utiliser les espaces mémoire CUDA, tels que global, partagé, constant et local
- Utiliser les objets mémoire CUDA, tels que pointeurs, tableaux, textures et surfaces
- Utiliser les modes d’accès mémoire CUDA, tels que lecture seule, écriture seule, lecture/écriture, etc.
- Utiliser le modèle de cohérence mémoire 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, les blocs et les 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 bugs courants dans les programmes CUDA
- Utiliser le débogueur de Visual Studio Code pour inspecter les variables, les points d’arrêt, la pile d’appels, etc.
- Utiliser CUDA-GDB pour déboguer les programmes CUDA sous Linux
- Utiliser CUDA-MEMCHECK pour détecter les erreurs et les 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 d’association (coalescing) CUDA pour améliorer le débit mémoire
- Utiliser les techniques de mise en cache et de préchargement (prefetching) CUDA pour réduire la latence mémoire
- Utiliser les techniques de mémoire partagée et de mémoire 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
- Une compréhension du langage C/C++ et des concepts de programmation parallèle
- Des connaissances de base en architecture informatique et en hiérarchie de mémoire
- De l’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 évolutif pouvant s’exécuter sur différents appareils CUDA
- Programmeurs souhaitant explorer les aspects de bas niveau de la programmation de GPU et optimiser la performance de leur code