Programmation GPU

Quelle est la caractéristique de la mémoire partagée (shared memory) en CUDA ?

  1. AUne mémoire principale de grande capacité partagée par tous les GPU et CPU
  2. BUne zone où la mémoire GPU est partagée avec le disque dur
  3. CUne petite mémoire rapide sur puce, partagée par les threads d'un même bloc et utilisée explicitement par le programme
Afficher la réponse et l'explication

Réponse : C. Une petite mémoire rapide sur puce, partagée par les threads d'un même bloc et utilisée explicitement par le programme

La mémoire partagée est une mémoire rapide située dans chaque SM, d'environ quelques dizaines de Ko par bloc, accessible plusieurs dizaines de fois plus vite que la mémoire globale (DRAM du GPU). Les threads d'un même bloc peuvent y placer et partager des données ; on l'utilise pour lire une seule fois depuis la mémoire globale des données réutilisées de nombreuses fois, ou pour échanger des résultats intermédiaires entre threads. Contrairement à un cache, c'est le programme qui décide de ce qui y est placé.

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

Autres questions sur Programmation GPU

  1. Quel est le rôle de __syncthreads() en CUDA ?
  2. En CUDA, __syncthreads() est placé dans « if (threadIdx.x < 16) », de sorte que seuls certains threads le franchissent. Que peut-il se produire ?
  3. Quelle est la définition des conflits de banc (bank conflicts) de la mémoire partagée CUDA ?
  4. 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 ?
  5. Lors du calcul d'un produit de grandes matrices sur GPU, pourquoi découpe-t-on les matrices en petites tuiles chargées en mémoire partagée ?

Comparatifs sur ce thème