Prenez contact avec nous

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

Nombre de participants


Prix par participant

Cours à venir

Catégories Similaires