Aller au contenu

1 · Livres et cours

Ce qui se lit sur des semaines.


1.1 Les livres

Programming Massively Parallel Processors: A Hands-on Approach

Wen-mei W. Hwu, David B. Kirk, Izzat El Hajj — 5e édition, publiée le 27 février 2026, Elsevier/Morgan Kaufmann.

C'est le manuel du domaine. Il couvre les concepts fondamentaux de la programmation parallèle et de l'architecture GPU, avec des techniques d'optimisation détaillées et des études de cas allant de la pensée computationnelle au programme parallèle efficace.

La 5e édition ajoute des chapitres sur les algorithmes de front d'onde, l'API multi-GPU et les optimisations avancées de la multiplication matricielle, ainsi qu'une couverture élargie du parcours de graphes et de l'apprentissage profond.

Public débutant à intermédiaire
Prérequis C ou C++
Ce qu'on y trouve le modèle CUDA complet, les motifs (réduction, scan, histogramme, convolution, tri), les études de cas
Ce qu'on n'y trouve pas TMA, wgmma, tcgen05 en profondeur ; les megakernels
ISBN 978-0-443-43900-1

Le conseil de lecture

Lisez les chapitres 1 à 6 en parallèle des parties 1 à 3 de ce document, puis piochez selon vos besoins. Les chapitres sur les motifs parallèles (réduction, scan, convolution) sont les meilleurs qui existent sur le sujet.

Les éditions antérieures (3e et 4e) restent excellentes pour les principes ; seul le matériel décrit vieillit.

Modern GPU Programming for MLSys

Communauté MLC, issu de la série de cours Machine Learning Systems de Carnegie Mellon. En accès libre sur mlc.ai.

C'est probablement la meilleure ressource actuelle sur le GPU moderne. Elle cible explicitement Blackwell et progresse « du matériel au modèle de programmation jusqu'aux noyaux complets », avec des exemples exécutables dans le DSL Python TIRx.

Son sommaire :

Partie I — Comprendre le GPU
  · Modèle d'exécution GPU
  · Ce qui rend un noyau rapide
  · Disposition des données et sa notation
  · L'évolution des dispositions de tensor cores
  · Mouvement asynchrone : TMA
  · Tensor core Blackwell : tcgen05.mma
  · Tensor Memory (TMEM)
  · Coordination asynchrone : mbarrier
  · Ordonnancement avancé : Cluster Launch Control

Partie II — TIRx
Partie III — GEMM : du pavage à l'état de l'art
Partie IV — FlashAttention 4
Annexes — référence du langage, mesure de performance, internes du
          compilateur, débogage des noyaux warp-specialized
Public intermédiaire à avancé
Prérequis CUDA de base
Ce qu'on y trouve tout le CUDA moderne, expliqué et exécutable
Coût gratuit

C'est le complément naturel de la partie 4 de ce document.

CUDA by Example

Jason Sanders, Edward Kandrot, Addison-Wesley, 2010.

Ancien, et toujours le meilleur livre pour les cent premières pages : très progressif, avec des exemples courts. Le matériel décrit est obsolète.

À emprunter, pas à acheter.

The CUDA Handbook

Nicholas Wilt, Addison-Wesley, 2013.

Beaucoup plus détaillé sur les mécanismes du pilote, la gestion mémoire, les flux et les contextes. Excellent pour comprendre comment CUDA fonctionne au niveau système. Là aussi, le matériel décrit est daté.

Professional CUDA C Programming

John Cheng, Max Grossman, Ty McKercher, Wrox, 2014.

Bon niveau intermédiaire, avec beaucoup d'exercices de profilage.


1.2 Les documentations normatives

Ce sont les sources de vérité. Elles ne se lisent pas linéairement mais se consultent constamment.

Document Ce qu'on y cherche
CUDA C++ Programming Guide le modèle, les APIs, les compute capabilities, le modèle mémoire
CUDA C++ Best Practices Guide les recommandations d'optimisation, avec leur justification
PTX ISA les instructions : mma, wgmma, tcgen05, TMA, mbarrier
Hopper Tuning Guide les spécificités de sm_90
Blackwell Tuning Guide les spécificités de sm_100 / sm_120
Nsight Compute Profiling Guide l'interprétation de chaque métrique
CUTLASS documentation CuTe, les layouts, les collectifs
ROCm documentation l'équivalent AMD

Comment lire le PTX ISA

Il fait plus de mille pages et ne se lit pas. On y cherche une instruction précise :

  1. trouver la section de la famille (mma, cp.async, mbarrier) ;
  2. lire la syntaxe et les contraintes ;
  3. lire les tables de disposition de registres — c'est là que sont les informations critiques et les erreurs coûteuses.

C'est la référence quand une bibliothèque ne fait pas ce que vous attendez.


1.3 Les cours universitaires en accès libre

CMU 15-779 — Advanced Machine Learning Systems (Zhihao Jia)

Le cours du principal auteur de Mirage MPK. Ses supports sont publics, dont la lecture 7 : Advanced CUDA Programming — Mega-Kernel.

C'est la meilleure présentation pédagogique des megakernels par leurs auteurs.

Stanford CS149 — Parallel Computing

Excellent sur les principes du parallélisme, avant même de parler de GPU : modèles d'exécution, cohérence, synchronisation, ordonnancement. Supports en accès libre.

UIUC ECE408 / CS483

Le cours dont est issu Programming Massively Parallel Processors. Supports et enregistrements partiellement accessibles.

CUDA Programming for NVIDIA H100s

Un cours dédié à Hopper, disponible sur cudacourseh100.github.io.

Oak Ridge / NERSC — formations HPC

Les centres de calcul américains publient leurs supports de formation sur la programmation GPU pour le HPC : OpenACC, OpenMP target, Kokkos, portage de codes Fortran. Très utile pour le calcul scientifique.


1.4 Les curriculums communautaires

GPU MODE — resource-stream

github.com/gpu-mode/resource-stream

Une liste maintenue de ressources, d'actualités et de liens sur la programmation GPU. Le point d'entrée de la communauté.

gpu-perf-engineering-resources

github.com/wafer-ai/gpu-perf-engineering-resources

Se présente comme « un curriculum pour apprendre l'ingénierie de performance GPU, de zéro à ce que font les laboratoires d'IA de pointe ». Structure voisine de ce document, avec un angle plus orienté ingénierie de performance.

cuda-learning

github.com/rkinas/cuda-learning

Collection de ressources, tutoriels et exemples pratiques, du débutant à l'optimisation.


1.5 Les exercices

Mojo GPU Puzzles

puzzles.modular.com

34 puzzles progressifs, chacun un petit noyau à compléter, validé par des tests automatiques. La progression va de la manipulation mémoire bas niveau aux abstractions TileTensor.

Ils enseignent « les motifs réels utilisés dans Triton, FlashAttention et les noyaux de production », et la plupart fonctionnent sur Apple Silicon via Metal — ce qui les rend accessibles sans carte NVIDIA.

C'est probablement la meilleure ressource d'exercices existante, même si vous n'utilisez jamais Mojo.

GPU Puzzles (Sasha Rush)

github.com/srush/GPU-Puzzles

14 puzzles en Python pur avec un simulateur NumPy. Aucun GPU nécessaire. Excellent pour les tout premiers pas : ils forcent à raisonner sur l'indexation et la mémoire partagée sans se battre avec la chaîne d'outils.

Triton Puzzles

Une adaptation des précédents à Triton, par la même communauté. Bon pont entre les concepts et le DSL.

KernelBench

github.com/ScalingIntelligence/KernelBench

250 charges PyTorch en quatre niveaux de complexité, avec implémentations de référence et cadre d'évaluation correction + performance. Conçu pour évaluer les LLM, et parfaitement utilisable comme banc d'exercices humain.


1.6 Un ordre de lecture suggéré

Débutant complet
  1. GPU Puzzles (Sasha Rush)          — une soirée, sans GPU
  2. PMPP chapitres 1-6                — deux semaines
  3. Ce document, parties 1-3          — trois semaines
  4. Mojo GPU Puzzles 1-15             — une semaine

Intermédiaire
  5. PMPP chapitres 7-12 (motifs)      — deux semaines
  6. Simon Boehm, worklog GEMM         — un week-end
  7. Ce document, parties 5-7          — trois semaines
  8. GPU MODE, conférences ciblées     — au fil de l'eau

Avancé
  9. Modern GPU Programming for MLSys  — trois semaines
 10. Tutoriels Colfax (CUTLASS)        — deux semaines
 11. Ce document, parties 4 et 8       — deux semaines
 12. Les papiers de la partie 8        — au fil de l'eau

Chapitre suivant : 2 · Vidéos et conférences