Prenez contact avec nous

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

Nombre de participants


Prix par participant

Cours à venir

Catégories Similaires