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 de multiprocesseurs de streaming 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 CUDA Toolkit 13.x
- Compilateur NVCC et flux de travail de construction
- 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 Kernels CUDA
- Syntaxe des fonctions kernel et qualificateurs
- Configuration du lancement et exécution
- Addition vectorielle et modèles parallèles de base
- Macros de vérification des erreurs CUDA
Hiérarchie des threads CUDA et modèle d'exécution
- Organisation Grid, bloc et thread
- Indexation des threads et calcul de l'ID global
- Exécution Warp et modèle SIMT
- Occupance et utilisation des ressources
Architecture et gestion de la mémoire GPU
- Types de mémoire : globale, partagée, constante, registres
- Alllocation 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
- Conseils de mémoire pour les motifs d'accès
Profilage système-wide avec Nsight Systems
- Analyse chronologique de Nsight Systems
- Identification des points de synchronisation CPU-GPU
- Visualisation de l'exécution des kernels et des transferts de mémoire
- Interprétation des données de performances au niveau système
Optimisation des Kernels avec Nsight Compute
- Profiling interactif des kernels avec Nsight Compute
- Analyse du débit et de la bande passante mémoire
- Utilisation du calcul et statistiques d'état des Warps
- Analyse guidée et règles d'optimisation
Streams concurrents et opérations asynchrones
- Streams CUDA et le stream par défaut
- Chevauchement de l'exécution des kernels avec les transferts de données
- Synchronisation des streams et événements CUDA
- Modèles de conception pour les pipelines multi-streams
Gestion des erreurs et outils de débogage
- Codes d'erreur 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 kernels
- Assertions et détection synchrone des erreurs
Flux de travail d'optimisation basé sur le profilage
- Méthodologie de profiling itérative
- Identification et priorisation des goulets d'étranglement
- Tests de régression des performances
- Documentation des décisions d'optimisation
Projet d'application accélérée complète
- Conception d'une solution GPU-acclamée complète
- Intégration du profilage tout au long du développement
- Tests de performance et rapports
- Considérations de déploiement pour la production
Pré requis
- Compétences de base en programmation C/C++, notamment les types de variables, les boucles, les instructions conditionnelles, les fonctions et la manipulation des tableaux
- Connaissance de la compilation et de 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 logiciels et ingénieurs souhaitant accélérer les applications C/C++ avec des GPU
- Chercheurs scientifiques et praticiens du HPC passant d'une architecture exclusivement CPU à un calcul hétérogène
- Chefs techniques évaluant l'accélération par GPU pour des charges de travail en production
8 Heures