Programmation GPU

Quelle est la principale méthode par laquelle le GPU masque la longue latence mémoire (plusieurs centaines de cycles) ?

  1. AIl dote chaque thread d'un cache plusieurs fois plus grand que celui d'un CPU
  2. BPendant qu'un warp attend la mémoire, il bascule vers d'autres warps exécutables pour maintenir les unités de calcul actives
  3. CIl calcule en devinant la valeur des données sans attendre la mémoire
Afficher la réponse et l'explication

Réponse : B. Pendant qu'un warp attend la mémoire, il bascule vers d'autres warps exécutables pour maintenir les unités de calcul actives

Le CPU réduit l'attente d'un thread par de grands caches et des circuits complexes, tandis que le GPU charge de nombreux warps et, mettant de côté ceux qui attendent la mémoire, émet les instructions d'autres warps immédiatement exécutables. Tous les registres étant sur puce, le basculement ne coûte rien. Avec suffisamment de warps, les unités de calcul ne restent pas inactives pendant la latence mémoire.

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

Autres questions sur Programmation GPU

  1. Quel énoncé est correct au sujet de l'occupation d'un GPU ?
  2. Quelle est la relation entre les blocs et les SM (multiprocesseurs de flux) en CUDA ?
  3. 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 ?
  4. 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 ?
  5. 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) ?

Comparatifs sur ce thème