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
Informatique GPU et architecture CUDA
- Différences architecturales entre CPU et GPU
- Modèle de multiprocesseur de flux NVIDIA GPU
- 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 kit de développement CUDA 13.x
- Compilateur NVCC et flux de travail de build
- Vérification de l'environnement avec des requêtes de périphérique
- Intégration IDE et outils de développement
Rédaction et lancement de noyaux CUDA
- Syntaxe et qualificateurs des fonctions noyau
- Lancement de la configuration et exécution
- Addition de vecteurs et motifs parallèles aux données de base
- Masques de vérification des erreurs CUDA
Hiérarchie des threads CUDA et modèle d'exécution
- Organisation de la grille, du bloc et du thread
- Indexation des threads et calcul de l'ID global
- Exécution du warp et modèle SIMT (Single Instruction, Multiple Threads)
- 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 la mémoire 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 de pages et pagination à la demande
- Pré-chargement asynchrone avec cudaMemPrefetchAsync
- Astuces de conseil de mémoire pour les motifs d'accès
Profilage système avec Nsight Systems
- Analyse de la chronologie dans Nsight Systems
- Identification des points de synchronisation CPU-GPU
- Visualisation de l'exécution du noyau et des transferts de mémoire
- Interprétation des données de performance au niveau du 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 du warp
- Analyse guidée et règles d'optimisation
Flux concurrents et opérations asynchrones
- Flux CUDA et le flux par défaut
- Superposition de l'exécution du noyau avec les transferts de données
- Synchronisation des flux et événements CUDA
- Modèles de conception de pipeline 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 d'erreurs synchrones
Processus d'optimisation piloté par le profilage
- Méthodologie de profilage itérative
- Identification et priorisation des goulots d'étranglement
- Tests de régression de performance
- 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
- Benchmarking et rapport de performance
- Considérations de déploiement pour la production
Pré requis
- Compétences de base en programmation C/C++, incluant les types de variables, les boucles, les instructions conditionnelles, les fonctions et les manipulations de tableaux
- Familiarité avec la compilation et l'exécution de programmes depuis la ligne de commande
- Aucune expérience préalable en programmation GPU ou CUDA n'est requise
Public cible
- Développeurs et ingénieurs logiciels cherchant à accélérer des applications C/C++ avec des GPU
- Chercheurs scientifiques et praticiens du HPC (calcul haute performance) passant du calcul exclusivement sur CPU au calcul hétérogène
- Chefs techniques évaluant l'accélération par GPU pour des charges de travail en production
8 Heures