Leçon 19 : Mémoire constante et registres
Deux types de mémoire rapide occupent les deux extrémités de la hiérarchie. À une extrémité, les registres : la mémoire la plus rapide, privée à chaque thread. Toute variable locale simple dans un kernel (par exemple un accumulateur sum) vit dans un registre, et y accéder est presque gratuit. Mais i
Un registre est un carnet personnel dans la poche de chaque ouvrier — le plus rapide, mais si tu y écris trop, tu dois ranger des pages dans un entrepôt éloigné (c'est le débordement). La mémoire constante est un seul panneau d'affichage que tout le monde lit : si tout le monde regarde la même annonce, on peut la lire à voix haute une seule fois pour tous.
- registres
- La mémoire la plus rapide, privée à chaque thread. C'est là que vivent les variables locales simples. Leur nombre est limité par SM.
- débordement de registres (register spilling)
- Quand un kernel a besoin de plus de registres que disponibles, l'excédent est stocké en mémoire locale, qui vit en réalité dans la DRAM globale lente — une pénalité de performance.
- mémoire constante
- Une petite région (64 Ko) en lecture seule depuis le kernel, déclarée avec __constant__ et écrite depuis le host. Elle a un cache dédié.
- broadcast depuis la mémoire constante
- Quand tous les threads d'un warp lisent la même valeur depuis la mémoire constante, la lecture est diffusée (broadcast) depuis le cache en un seul pas — aussi rapide qu'un registre.