Programmation GPU

Quelle est la définition de l'accès mémoire coalescé (coalescing) sur GPU ?

  1. ALa réunion des mémoires de deux GPU pour doubler la capacité
  2. BLa compression des données en mémoire pour augmenter la capacité
  3. CLorsque des threads voisins d'un warp lisent des adresses voisines, les accès sont regroupés en un petit nombre de transactions mémoire
Afficher la réponse et l'explication

Réponse : C. Lorsque des threads voisins d'un warp lisent des adresses voisines, les accès sont regroupés en un petit nombre de transactions mémoire

La mémoire GPU se lit et s'écrit par blocs, par exemple de 32 ou 128 octets. Si les 32 threads d'un warp lisent chacun 4 octets à des adresses contiguës, le bloc de 128 octets ainsi formé se lit en une à quelques transactions. Si les adresses sont dispersées, chaque thread lit un bloc différent et des données inutilisées sont transférées, ce qui divise la bande passante effective par un facteur important.

S'entraîner sur ce thème Retour au thème

Autres questions sur Programmation GPU

  1. Avec i l'indice de chaque thread, lire le tableau tous les 32 éléments comme ci-dessus est plus lent que lire a[i]. Quelle en est la raison principale ?
  2. Pour traiter sur GPU des données de particules ayant des positions x, y et z, quelle disposition est avantageuse du point de vue de l'accès mémoire coalescé ?
  3. Quelle est la caractéristique de la mémoire partagée (shared memory) en CUDA ?
  4. Quel est le rôle de __syncthreads() en CUDA ?
  5. En CUDA, __syncthreads() est placé dans « if (threadIdx.x < 16) », de sorte que seuls certains threads le franchissent. Que peut-il se produire ?

Comparatifs sur ce thème