Programmation GPU
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 ?
- AParce que les multiplications sont impossibles en FP32
- BParce que l'accumulation de nombreux produits en faible précision accumule les erreurs d'arrondi et fait disparaître les petites valeurs ; seule l'accumulation est donc faite en haute précision
- CParce que les additions sont impossibles en FP16
Afficher la réponse et l'explication
Réponse : B. Parce que l'accumulation de nombreux produits en faible précision accumule les erreurs d'arrondi et fait disparaître les petites valeurs ; seule l'accumulation est donc faite en haute précision
La mantisse du FP16 ne comptant que 10 bits, l'ajout d'un petit produit à une somme devenue grande peut faire disparaître le produit par arrondi. Un produit de matrices additionnant des milliers de produits, l'accumulation de ces erreurs fausse fortement le résultat. On effectue donc en faible précision les multiplications, coûteuses en mémoire et en unités de calcul, et seule l'accumulation en FP32. La plupart des Tensor Cores réalisent cette forme de multiplication-accumulation en une instruction.