Programmation GPU

Quel énoncé est correct au sujet de l'occupation d'un GPU ?

  1. AUne occupation de 100 % garantit toujours les meilleures performances
  2. BMême avec une faible occupation, de hautes performances sont possibles si chaque thread dispose de nombreux calculs indépendants augmentant le parallélisme d'instructions
  3. CL'occupation n'a aucun rapport avec les performances
Afficher la réponse et l'explication

Réponse : B. Même avec une faible occupation, de hautes performances sont possibles si chaque thread dispose de nombreux calculs indépendants augmentant le parallélisme d'instructions

L'occupation est un moyen parmi d'autres de masquer la latence, pas une fin en soi. Si un thread peut émettre à la suite plusieurs calculs ou lectures mémoire indépendants, peu de warps suffisent à combler les temps d'attente. À l'inverse, réduire les registres pour augmenter l'occupation peut accroître les évacuations en mémoire et ralentir l'exécution. Le plus sûr est de juger les performances en les mesurant avec un profileur.

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

Autres questions sur Programmation GPU

  1. Quelle est la relation entre les blocs et les SM (multiprocesseurs de flux) en CUDA ?
  2. 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 ?
  3. 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 ?
  4. 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) ?
  5. Combien d'étapes faut-il pour sommer 1024 valeurs par une réduction en arbre ?

Comparatifs sur ce thème