Qu'est-ce que Banc (bank) ?

Subdivision interne d'une DRAM en plusieurs zones pouvant fonctionner indépendamment. En chevauchant activations et accès sur des bancs différents, on améliore les performances d'accès effectives.

Nom japonais: バンク

« Banc (bank) » apparaît dans 3 questions d'entraînement réparties sur 1 thèmes, dont Programmation GPU.

Domaine: DRAM

S'entraîner : questions sur Banc (bank)

Quelle est la définition des conflits de banc (bank conflicts) de la mémoire partagée CUDA ?

  1. AUn problème de deux GPU utilisant le même compte bancaire
  2. BUn problème d'arrêt du programme par manque de capacité de la mémoire partagée
  3. CLa mémoire partagée étant divisée en 32 bancs, lorsque plusieurs threads d'un warp accèdent simultanément à des adresses différentes d'un même banc, les accès sont sérialisés et ralentis
Afficher la réponse et l'explication

Réponse : C. La mémoire partagée étant divisée en 32 bancs, lorsque plusieurs threads d'un warp accèdent simultanément à des adresses différentes d'un même banc, les accès sont sérialisés et ralentis

La mémoire partagée est constituée de 32 bancs attribués successivement tous les 4 octets, chaque banc ne pouvant accéder qu'à une adresse à la fois. Si les 32 threads d'un warp utilisent des bancs différents, un seul accès suffit ; si deux threads accèdent à des adresses différentes d'un même banc, l'accès se fait en deux fois. Par exemple, une lecture tous les 32 éléments concentre tous les threads sur un même banc et l'accès se scinde en 32. Lorsque tous lisent la même adresse, la valeur est diffusée à tous et il n'y a pas de conflit.

Un tableau de 32×32 float est placé en mémoire partagée ; sa lecture par colonne (verticalement) par les 32 threads d'un warp provoque des conflits de banc. Quelle contre-mesure est couramment utilisée ?

  1. AConserver le tableau en 32×32 et lire dans un ordre aléatoire
  2. BRenoncer à la mémoire partagée et tout lire depuis la mémoire globale
  3. CAllouer le tableau en 32×33 avec une colonne supplémentaire, afin de décaler la position des bancs à chaque ligne
Afficher la réponse et l'explication

Réponse : C. Allouer le tableau en 32×33 avec une colonne supplémentaire, afin de décaler la position des bancs à chaque ligne

Avec 32 float (128 octets) par ligne, chaque ligne commence au même banc ; les éléments d'une même colonne tombent donc tous dans le même banc, et une lecture verticale concentre les 32 threads sur un seul banc. Avec 33 éléments par ligne, le banc se décale d'une unité à chaque ligne, et les 32 éléments d'une colonne se répartissent sur des bancs tous différents, lisibles en un seul accès. Il suffit d'ajouter la mémoire d'une colonne inutilisée.

« Banc (bank) » dans les explications

Questions mentionnant « Banc (bank) » (3)

  1. Quelle est la définition des conflits de banc (bank conflicts) de la mémoire partagée CUDA ?
  2. Un tableau de 32×32 float est placé en mémoire partagée ; sa lecture par colonne (verticalement) par les 32 threads d'un warp provoque des conflits de banc. Quelle contre-mesure est couramment utilisée ?
  3. Lors de la transposition d'une grande matrice sur GPU (b[j][i] = a[i][j]), quel est l'objectif principal du passage par la mémoire partagée ?

Termes associés

Mémoire partagée (shared memory) CUDA GPU Ouverture numérique (NA) Amplificateur de lecture (sense amplifier) Cellule 1T1C DDR SDRAM DIMM ECC (code correcteur d'erreurs) Latence CAS

Retour au glossaire