Qu'est-ce que Multiprocesseur de flux (SM) ?

Dans les GPU NVIDIA, unité regroupant unités de calcul, registres, mémoire partagée, logique de commutation des warps, etc. (SM). Un GPU est formé de nombreux SM juxtaposés.

Nom japonais: ストリーミングマルチプロセッサ

« Multiprocesseur de flux (SM) » apparaît dans 7 questions d'entraînement réparties sur 1 thèmes, dont Programmation GPU.

Hiérarchie des threads GPU et affectation aux SM Grille B0 B1 B2 B3 B4 B5 Bloc Warp 0 Warp 1 Warp 2 Warp (32 threads) Même instruction à la fois Groupés par 32 Chaque bloc affecté à un SM SM0 B0 B3 Mémoire partagée SM1 B1 B4 Mémoire partagée SM2 B2 B5 Mémoire partagée Mémoire globale (accessible par tous les blocs) Un bloc s'exécute sur un seul SM et coopère via la mémoire partagée
Hiérarchie des threads GPU et affectation aux SM · Voir dans les schémas

Domaine: Programmation GPU

S'entraîner : questions sur Multiprocesseur de flux (SM)

Quelle est la relation entre les blocs et les SM (multiprocesseurs de flux) en CUDA ?

  1. ALes threads d'un bloc sont répartis sur tous les SM
  2. BLe nombre de SM et le nombre de blocs doivent obligatoirement être égaux
  3. CChaque bloc est affecté à un SM et s'y exécute jusqu'au bout, et un SM peut accueillir simultanément plusieurs blocs
Afficher la réponse et l'explication

Réponse : C. Chaque bloc est affecté à un SM et s'y exécute jusqu'au bout, et un SM peut accueillir simultanément plusieurs blocs

Le GPU possède de nombreux SM et affecte successivement les blocs du noyau aux SM disponibles. Un bloc s'exécutant sur un seul SM, ses threads utilisent la mémoire partagée de ce SM et peuvent se synchroniser. Avec un nombre de blocs nettement supérieur au nombre de SM, le travail se répartit sur tous les SM quelle que soit la taille du GPU, et les SM qui ont terminé reçoivent le bloc suivant.

« Multiprocesseur de flux (SM) » dans les explications

Questions mentionnant « Multiprocesseur de flux (SM) » (7)

  1. Quelle est la relation entre les blocs et les SM (multiprocesseurs de flux) en CUDA ?
  2. Quelle est la hiérarchie correcte des threads en CUDA (du plus grand au plus petit) ?
  3. Quelle est la caractéristique de la mémoire partagée (shared memory) en CUDA ?
  4. Que peut-il se produire si un noyau GPU utilise trop de registres par thread ?
  5. Quelle est la définition de l'occupation (occupancy) d'un GPU ?
  6. Quel est l'avantage d'écrire un noyau avec une boucle comme ci-dessus (boucle à pas de grille, grid-stride loop) ?
  7. Quelle est la caractéristique générale des caches GPU par rapport à ceux des CPU ?

Termes associés

GPU Mémoire partagée (shared memory) CUDA Via Noyau GPU (kernel) Débordement (spill) Taux d'occupation (occupancy) Bloc de threads Boucle grid-stride Coalescence mémoire

Retour au glossaire