Leçon 16 : Fondamentaux de la mémoire partagée
La mémoire partagée est une mémoire petite et rapide qui se trouve sur la puce du SM et sert de bloc-notes pour tous les threads du même block. Elle se déclare avec le mot-clé __shared__, par exemple __shared__ float tile[256];, et elle est environ 100 fois plus rapide que la mémoire globale — mais
La mémoire globale est un entrepôt énorme et éloigné. La mémoire partagée est un petit tiroir à côté du bureau de l'équipe : tu apportes quelque chose de l'entrepôt une fois, tu le mets dans le tiroir, et toute l'équipe le prend de là rapidement. Chaque équipe (block) obtient son propre tiroir séparé.
- mémoire partagée
- Mémoire rapide sur la puce partagée par tous les threads du même block, déclarée avec __shared__. Bien plus rapide que la globale mais petite.
- bloc-notes (scratchpad)
- Un espace de travail temporaire où le block garde des données lues encore et encore, pour éviter d'aller chaque fois à la mémoire globale lente.
- portée de block (block scope)
- La portée de la mémoire partagée : seulement pour le block qui l'a créée, et seulement pendant que ce block tourne. Les autres blocks ne la voient pas.
- réutilisation de données
- Quand la même valeur est nécessaire plusieurs fois. Alors ça vaut le coup de la charger une fois en mémoire partagée et de la lire de là à moindre coût.