Programmation GPU

Lors de l'addition élément par élément de deux grands tableaux sur GPU (c[i] = a[i] + b[i]), qu'est-ce qui détermine principalement les performances ?

  1. ALa bande passante mémoire (12 octets lus et écrits par élément pour une seule addition)
  2. BLe nombre d'unités de calcul
  3. CUniquement la fréquence d'horloge
Afficher la réponse et l'explication

Réponse : A. La bande passante mémoire (12 octets lus et écrits par élément pour une seule addition)

Chaque addition de float lit 4 octets de a et 4 octets de b et écrit 4 octets dans c : 12 octets transférés pour un calcul. Le GPU peut effectuer plusieurs dizaines de billions d'opérations par seconde, mais sa bande passante mémoire n'est que de quelques To/s ; ce traitement est donc plafonné par la bande passante. Pour l'accélérer, il est efficace de réduire le nombre de lectures et d'écritures ou de fusionner plusieurs traitements pour ne pas écrire les résultats intermédiaires en mémoire.

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

Autres questions sur Programmation GPU

  1. Pourquoi, sur de nombreux GPU grand public pour le jeu, les performances en double précision (FP64) sont-elles bien inférieures (par exemple quelques dizaines de fois) à celles en simple précision (FP32) ?
  2. Quelle est la caractéristique des Tensor Cores (unités de calcul matriciel) des GPU récents ?
  3. En calcul en précision mixte sur GPU, pourquoi effectue-t-on souvent les multiplications en faible précision (FP16, etc.) et l'accumulation en FP32 ?
  4. La somme en virgule flottante des mêmes données calculée sur GPU diffère légèrement au dernier chiffre d'une exécution à l'autre. Quelle est la cause la plus probable ?
  5. Quelle règle générale guide le choix du nombre de threads par bloc en CUDA ?

Comparatifs sur ce thème