Programmation GPU

Que peut-il se produire si un noyau GPU utilise trop de registres par thread ?

  1. ALes registres augmentent automatiquement et les performances s'améliorent toujours
  2. BLe résultat du calcul est toujours faux
  3. CLe nombre total de registres du SM étant fixe, le nombre de threads chargés simultanément diminue et la latence mémoire est plus difficile à masquer
Afficher la réponse et l'explication

Réponse : C. Le nombre total de registres du SM étant fixe, le nombre de threads chargés simultanément diminue et la latence mémoire est plus difficile à masquer

Le GPU conserve sur puce les registres de tous les threads en cours d'exécution, ce qui permet de basculer instantanément entre warps. Si chaque thread utilise beaucoup de registres, le nombre de threads chargés simultanément sur le SM diminue. Les registres manquants sont évacués en mémoire (spill), ce qui peut ralentir l'exécution. On fixe parfois une limite de registres via les options du compilateur pour équilibrer avec le nombre de threads.

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

Autres questions sur Programmation GPU

  1. Quelle est la définition de l'occupation (occupancy) d'un GPU ?
  2. Quelle est la principale méthode par laquelle le GPU masque la longue latence mémoire (plusieurs centaines de cycles) ?
  3. Quel énoncé est correct au sujet de l'occupation d'un GPU ?
  4. Quelle est la relation entre les blocs et les SM (multiprocesseurs de flux) en CUDA ?
  5. 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 ?

Comparatifs sur ce thème