Leçon 18 : Conflits de bank en mémoire partagée
La mémoire partagée est rapide, mais elle est divisée en 32 canaux parallèles appelés banks. Les 32 threads d'un warp peuvent lire ensemble en un seul pas — mais seulement si chacun pointe vers un bank différent. Quand deux pointent vers le même bank, un conflit de bank (bank conflict) se produit, e
Imagine 32 caisses dans un magasin et 32 clients. Si chaque client va vers une caisse différente, tous paient en même temps, vite. Mais si deux clients s'entassent à la même caisse, l'un attend l'autre. Le remplissage (padding), c'est comme décaler la file en diagonale pour que, de nouveau, chaque client ait sa propre caisse.
- bank
- Une des 32 unités de mémoire parallèles qui forment la mémoire partagée. Un mot à l'indice i appartient au bank i % 32.
- conflit de bank (bank conflict)
- Quand des threads du même warp accèdent à des adresses différentes qui tombent dans le même bank, le matériel les sérialise (un conflit n-way coûte n fois le temps).
- broadcast
- Quand tous les threads du warp lisent exactement la même adresse en mémoire partagée, la valeur est diffusée (broadcast) à tous en un seul pas — sans pénalité.
- remplissage (padding)
- Ajouter une colonne fictive, tile[N][N+1], qui décale chaque ligne d'un bank pour que l'accès par colonne tombe dans 32 banks différents.