Prenez contact avec nous

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

Nombre de participants


Prix par participant

Cours à venir

Catégories Similaires