Programmation GPU
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 ?
- ALes unités de calcul du GPU sont défectueuses
- BLes données sont réécrites à chaque fois dans le GPU
- CL'ordre d'addition varie d'une exécution à l'autre, notamment avec les opérations atomiques, et l'addition en virgule flottante donne des arrondis différents selon l'ordre
Afficher la réponse et l'explication
Réponse : C. L'ordre d'addition varie d'une exécution à l'autre, notamment avec les opérations atomiques, et l'addition en virgule flottante donne des arrondis différents selon l'ordre
L'addition en virgule flottante introduisant un arrondi à chaque fois, (a+b)+c et a+(b+c) peuvent différer légèrement. Dans une somme parallèle, l'ordre dans lequel les valeurs des threads sont additionnées dépend de l'ordre d'exécution des threads ou de l'ordre d'arrivée des opérations atomiques. Le dernier chiffre varie donc d'une exécution à l'autre. Pour obtenir un résultat identique à chaque fois, on utilise une réduction à ordre d'addition fixe.