Leçon 36 : Projet final — Optimisation de kernel de bout en bout
C'est la dernière leçon du cours. On n'apprendra pas de nouveau mécanisme — on va relier tout ce qu'on a déjà appris en un seul processus : comment prendre un kernel naïf et lent et le rendre rapide. La checklist n'est pas magique, c'est une séquence de vérifications qu'on a déjà vues séparément. Pr
Améliorer un kernel, c'est comme rénover une maison : tu ne peux pas simplement peindre et espérer que ça marche. Tu vérifies ce qui est vraiment cassé — la plomberie, l'installation électrique ou le toit — et tu corriges ça. Et il y a un manomètre que tu ne peux pas ignorer : la mesure (Nsight). Sans mesurer, tu répares le mauvais mur.
- checklist d'optimisation
- Une séquence de vérifications pour améliorer un kernel : coalescing, mémoire partagée, réduire la divergence, ajuster l'occupancy, et mesurer dans Nsight.
- goulot d'étranglement (bottleneck)
- La vraie limite qui ralentit le kernel. Corriger autre chose n'aidera pas tant que celui-ci n'est pas spécifiquement traité.
- mesurer d'abord
- Utiliser Nsight pour identifier le goulot d'étranglement avant de changer le code, plutôt que de deviner quelle optimisation est nécessaire.
- réduction des lectures globales
- Déplacer des données réutilisées vers la mémoire partagée réduit les lectures depuis la mémoire globale lente, par exemple de K à K/TILE avec le tiling.