Programmation GPU

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.

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

Autres questions sur Programmation GPU

  1. En CUDA, on veut, au milieu d'un noyau, attendre que tous les autres blocs aient terminé leur calcul avant de passer à l'étape suivante. Quelle est la méthode usuelle ?
  2. Pour construire sur GPU l'histogramme des valeurs de pixels, faire ajouter directement par tous les threads via atomicAdd dans les 256 cases en mémoire globale peut être lent. Quelle méthode l'améliore ?
  3. Pour calculer sur GPU la somme d'un grand nombre de valeurs, pourquoi utilise-t-on une réduction en arbre (répétition de l'addition de voisins qui divise par deux le nombre de valeurs) ?
  4. Combien d'étapes faut-il pour sommer 1024 valeurs par une réduction en arbre ?
  5. Dans un programme utilisant un GPU discret, quel énoncé est généralement correct au sujet de la mémoire côté CPU et côté GPU ?

Comparatifs sur ce thème