Programmation GPU

Quelle est la hiérarchie correcte des threads en CUDA (du plus grand au plus petit) ?

  1. AGrille → bloc → thread
  2. BThread → bloc → grille
  3. CBloc → thread → grille
Afficher la réponse et l'explication

Réponse : A. Grille → bloc → thread

Un lancement de noyau forme une grille, divisée en de nombreux blocs, eux-mêmes divisés en de nombreux threads. Les threads d'un même bloc sont exécutés sur le même SM (ensemble d'unités de calcul) et peuvent coopérer via la mémoire partagée et se synchroniser. Les blocs différents s'exécutant indépendamment, le nombre de blocs actifs simultanément varie selon la taille du GPU, et un même programme fonctionne sur des GPU petits ou grands.

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

Autres questions sur Programmation GPU

  1. Dans un noyau CUDA, l'indice i de chaque thread est obtenu par l'expression ci-dessus. Que vaut i pour le thread tel que blockIdx.x=2, blockDim.x=256 et threadIdx.x=5 ?
  2. On veut traiter un tableau de 1000 éléments à raison d'un élément par thread, avec 256 threads par bloc. Combien de blocs faut-il lancer ?
  3. Pourquoi le noyau CUDA ci-dessus contient-il « if (i < n) » ?
  4. Comment appelle-t-on, sur les GPU NVIDIA, l'unité regroupant 32 threads qui exécutent simultanément la même instruction ?
  5. Quelle est la différence entre le mode SIMT (instruction unique, threads multiples) des GPU et les instructions SIMD des CPU ?

Comparatifs sur ce thème