Programmation GPU

Quelle règle générale guide le choix du nombre de threads par bloc en CUDA ?

  1. AUn multiple de 32, la taille du warp (128, 256, etc.)
  2. BToujours 1
  3. CToujours un nombre premier
Afficher la réponse et l'explication

Réponse : A. Un multiple de 32, la taille du warp (128, 256, etc.)

Les threads d'un bloc étant répartis en warps de 32, avec 100 threads par exemple le dernier warp n'en utilise que 4 et les créneaux d'exécution des 28 autres sont gaspillés. Avec un multiple de 32, chaque warp est pleinement utilisé. En pratique, on utilise souvent 128 à 256 threads, en ajustant selon l'occupation et l'usage de la mémoire partagée.

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

Autres questions sur Programmation GPU

  1. Quel est l'avantage d'écrire un noyau avec une boucle comme ci-dessus (boucle à pas de grille, grid-stride loop) ?
  2. Pour quel type d'accès la mémoire constante de CUDA est-elle particulièrement rapide ?
  3. Quelle est la caractéristique générale des caches GPU par rapport à ceux des CPU ?
  4. Quel est un exemple de mécanisme de programmation pour le calcul parallèle sur GPU et autres, utilisable aussi sur des GPU autres que NVIDIA ?
  5. Sur GPU, on veut extraire d'un tableau les seuls éléments satisfaisant une condition et les écrire de façon compacte dans un autre tableau (chaque thread produit 0 ou 1 sortie). Quel calcul parallèle est couramment utilisé pour déterminer l'adresse d'écriture de chaque thread ?

Comparatifs sur ce thème