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.
Plan du cours
Calcul GPU et architecture CUDA
- Différences architecturales entre CPU et GPU
- Modèle des multiprocesseurs streaming (SM) des GPU NVIDIA
- Aperçu du modèle de programmation CUDA
- Calcul hétérogène et paradigme hôte-périphérique
Mise en place de l’environnement de développement CUDA
- Installation du CUDA Toolkit 13.x
- Compilateur NVCC et chaîne de build
- Vérification de l’environnement par des requêtes sur le périphérique
- Intégration IDE et outils de développement
Écriture et lancement de noyaux CUDA
- Syntaxe et qualificateurs des fonctions noyau
- Configuration du lancement et exécution
- Addition de vecteurs et motifs parallèles élémentaires
- Macros de vérification des erreurs CUDA
Hiérarchie des threads CUDA et modèle d’exécution
- Organisation en grille, blocs et threads
- Indexation des threads et calcul de l’identifiant global
- Exécution au sein des warps et modèle SIMT
- Occupation et utilisation des ressources
Architecture et gestion de la mémoire GPU
- Types de mémoire : globale, partagée, constante, registres
- Allocation et libération de mémoire sur le périphérique
- Transferts hôte-vers-périphérique et périphérique-vers-hôte
- Mémoire partagée pour la collaboration intra-bloc
Mémoire unifiée et migration des données
- Modèle de mémoire unifiée et allocations gérées
- Migration par pages et pagination à la demande
- Prefetching asynchrone avec cudaMemPrefetchAsync
- Astuces de recommandation d’accès pour les motifs de lecture/écriture
Profilage système-wide avec Nsight Systems
- Analyse chronologique dans Nsight Systems
- Identification des points de synchronisation CPU-GPU
- Visualisation de l’exécution des noyaux et des transferts mémoire
- Interprétation des données de performances au niveau système
Optimisation des noyaux avec Nsight Compute
- Profilage interactif des noyaux dans Nsight Compute
- Analyse du débit mémoire et de la bande passante
- Utilisation du calcul et statistiques d’état des warps
- Analyse guidée et règles d’optimisation
Flux concurrents et opérations asynchrones
- Flux CUDA et flux par défaut
- Superposition de l’exécution des noyaux avec les transferts de données
- Synchronisation des flux et événements CUDA
- Motifs de conception de pipelines multi-flux
Gestion des erreurs et outils de débogage
- Codes d’erreur de l’API CUDA et stratégies de récupération
- Compute-sanitizer pour la vérification des accès mémoire
- cuda-gdb pour le débogage des noyaux
- Assertions et détection synchrone des erreurs
Méthodologie d’optimisation pilotée par le profilage
- Itération de la méthodologie de profilage
- Identification et hiérarchisation des goulots d’étranglement
- Tests de régression des performances
- Documentation des décisions d’optimisation
Projet d’application accélérée de bout en bout
- Conception d’une solution complète accélérée par GPU
- Intégration du profilage tout au long du développement
- Étalonnage des performances et rapports
- Considérations de déploiement en production
Pré requis
- Compétences de base en programmation C/C++, incluant les types de variables, les boucles, les instructions conditionnelles, les fonctions et la manipulation de tableaux
- Connaissance de la compilation et de l’exécution de programmes depuis une invite de commande
- Aucune expérience préalable en programmation GPU ou CUDA n’est requise
Public visé
- Développeurs et ingénieurs logiciels souhaitant accélérer leurs applications C/C++ avec des GPU
- Chercheurs scientifiques et praticiens du calcul haute performance (HPC) effectuant une transition depuis un environnement uniquement CPU vers le calcul hétérogène
- Chefs techniques évaluant l’accélération par GPU pour des charges de travail en production
8 Heures