Leçon 13 : La hiérarchie de la mémoire
Un GPU a plusieurs types de mémoire qui diffèrent par la vitesse, la portée et la durée de vie. Les registres sont la mémoire la plus rapide : toute variable locale simple dans un kernel vit dans un registre, privé à un seul thread, et n'existe que pendant que le thread tourne. La mémoire partagée,
Pense à une cuisine : les registres sont tes mains — le plus rapide, mais seulement à toi et seulement pour un instant. La mémoire partagée est le plan de travail partagé d'une équipe dans la cuisine — rapide et accessible à toute l'équipe, mais pas à une équipe d'une autre cuisine. La mémoire globale est le réfrigérateur géant de l'entrepôt — énorme et sert tout le monde, mais y marcher est lent. La mémoire constante est le tableau de la recette sur le mur que tout le monde lit mais que personne ne change.
- registres
- La mémoire la plus rapide, privée à un seul thread. Toute variable locale simple dans un kernel vit ici et n'existe que pendant que le thread tourne.
- mémoire partagée
- Mémoire sur la puce déclarée avec __shared__, partagée par tous les threads du même block. Bien plus rapide que la globale, mais ne traverse pas les blocks.
- mémoire globale
- La DRAM du device : grande, lente, accessible par toute la grid et persiste entre les lancements. C'est ici que les données sont copiées depuis le host.
- mémoire constante
- Mémoire en lecture seule déclarée avec __constant__ et mise en cache. Excellente quand tous les threads lisent la même valeur.