Leçon 8 : le goulot d'étranglement — Compute-bound contre Memory-bound
Avant d'accélérer — on se demande : qu'est-ce qui freine réellement ? Chaque kernel est soit compute-bound (limité par les FLOPs, le GPU calcule à pleine puissance), soit memory-bound (limité par la bande passante mémoire, le GPU attend les données). Optimiser sans ce diagnostic, c'est deviner. Dans
compute-bound, c'est un chef rapide qui attend parce qu'il n'y a pas assez de fours — le goulot, c'est le travail lui-même. memory-bound, c'est des fours libres mais les ingrédients qui n'arrivent pas assez vite de la réserve — le goulot, c'est la livraison. Chaque problème demande une solution différente.
- Compute-bound
- Le kernel est limité par la capacité de calcul (FLOPs). Le GPU est entièrement occupé ; pour accélérer — une précision plus basse ou de meilleurs kernels.
- Memory-bound
- Le kernel est limité par la bande passante mémoire. Le GPU attend les données ; pour accélérer — de la fusion et moins de trafic mémoire.
- Intensité arithmétique
- Le rapport FLOPs par octet lu ou écrit. Faible → memory-bound ; élevé → compute-bound.