Retour aux cours
AI021 Professionnel

Guide de programmation CUDA

La ressource officielle et complète destinée aux développeurs pour apprendre le modèle de programmation CUDA et comment écrire un code haute performance exécuté sur les GPU NVIDIA. Ce guide couvre l'architecture de la plateforme, l'interface de programmation, les fonctionnalités avancées du matériel et les spécifications techniques.

5.0
30.0h
1762 étudiants
5 lessons
1 j'aime
Intelligence Artificielle
Commencer à apprendre

Aperçu du cours

📚 Résumé du contenu

La ressource officielle et complète destinée aux développeurs pour apprendre le modèle de programmation CUDA et écrire des codes performants exécutés sur les GPU NVIDIA. Ce guide couvre l'architecture de la plateforme, l'interface de programmation, les fonctionnalités matérielles avancées et les spécifications techniques.

Maîtrisez l'art du calcul parallèle avec le guide de référence de l'industrie pour NVIDIA CUDA.

Auteur : NVIDIA Corporation

Remerciements : Copyright © 2007-2024 NVIDIA Corporation et filiales. Tous droits réservés.

🎯 Objectifs d'apprentissage

  1. Définir les rôles de l'hôte (CPU) et de l'appareil (GPU) au sein d'un système hétérogène.
  2. Expliquer le modèle de programmation SIMT et l'organisation hiérarchique des threads, blocs et grilles.
  3. Différencier le code PTX (Parallel Thread Execution) et le code binaire (cubins), et expliquer comment la compilation Juste-à-temps (JIT) facilite la compatibilité.
  4. Développer et compiler des noyaux CUDA : écrire des fonctions global, configurer l'exécution avec la notation à trois chevrons, et gérer le flux de compilation NVCC.
  5. Optimiser la mémoire et le déplacement des données : distinguer les modèles de mémoire Unifiée, Explicite et Mappée, et implémenter la mémoire hôte verrouillée en pages pour des transferts efficaces.
  6. Gérer l'exécution parallèle : utiliser les flux CUDA, les événements et les groupes coopératifs pour gérer les tâches asynchrones et synchroniser les opérations CPU-GPU.
  7. Effectuer des calculs d'arithmétique de pointeurs complexes et identifier les goulets d'étranglement architecturaux (von Neumann vs. Harvard).
  8. Mettre en œuvre des motifs d'exécution CUDA avancés, notamment les lancements conditionnels de noyaux et les transferts batchés hétérogènes de mémoire.
  9. Utiliser des fonctionnalités spécifiques au matériel comme les champs de thread, les proxys asynchrones et les pipelines afin de maximiser la concurrence.
  10. Configurer et ajuster les performances de la mémoire unifiée grâce à l'anticipation, aux indications d'utilisation et à la gestion de la taille des pages.

Leçons

Lesson

This lesson introduces the fundamental shift from latency-optimized CPU architectures to throughput-oriented GPU computing. Students will learn to distinguish between these processing models and understand how the CUDA programming platform enables massive parallel execution for data-intensive tasks.

This lesson introduces the fundamentals of CUDA kernel development, focusing on the SIMT execution model and the use of the __global__ specifier to launch parallel functions on GPU Streaming Multiprocessors. Students will learn how to manage asynchronous kernel execution, handle device memory, and structure code to ensure effective hardware utilization.

This lesson explores the fundamental differences between von Neumann and Harvard architectures, focusing on how memory access pathways impact computational performance. Students will learn to identify the von Neumann bottleneck, understand the benefits of split-cache Harvard designs, and analyze how modern systems utilize a Modified Harvard Architecture to balance throughput with programming flexibility.

AI021: Optimization, Graphs, and Hardware Accelerators (Lesson 4) explores the shift from CPU-bottlenecked stream execution to GPU-autonomous workflows. Students will learn to utilize modern primitives like CUDA Graphs, lazy loading, and asynchronous memory prefetching to minimize host-side overhead and maximize hardware efficiency.

This lesson explores the technical reference and language extensions in CUDA, focusing on the relationship between virtual architectures (PTX) and real hardware (SASS). Students will learn to manage compute capabilities, utilize architecture-specific macros, and navigate language constraints to ensure code portability and performance.