Nvidia Fermi : la révolution du GPU Computing

Tags : Fermi; GPGPU; Nvidia;
Publié le 01/10/2009 par
Imprimer
IEEE754-2008
Les SIMDs de Fermi ne reposent plus sur une instruction de type MAD (multiply add) mais sur une instruction de type FMA (fused multiply add). La différence se situe au niveau de la précision. MAD se comporte réellement comme une multiplication flottante suivie d’une addition flottante, c’est-à-dire que le résultat est arrondi à chaque étape. FMA par contre conserve la précision intermédiaire et n’effectue l’arrondi qu’à la fin.

Fermi, tout comme Cypress, supporte complètement la norme IEEE754-2008 et donc les nombres dénormalisés et les 4 modes d’arrondis. Par contre une grosse différente entre Cypress et Fermi est que ce dernier n’est plus capable de traiter les MADs classiques tant en simple qu’en double précision. Nvidia nous a indiqué, par défaut, remplacer tous les MADs par des FMAs. Cette solution ne produit cependant pas un résultat équivalent, même si plus précis, ce qui peut être source de problèmes. Il sera cependant possible de préciser lors de la compilation de ne pas utiliser le FMA mais de scinder les MADs en MULs + ADDs, une solution qui sera presque identique. Pour obtenir un résultat parfaitement identique il faudra cependant se passer du MAD sur les architectures actuelles et du FMA sur la nouvelle.

De son côté, Cypress est capable de traiter autant les MADs que les FMAs, en simple et en double et à la même vitesse, ce qui est probablement facilité par son émulation des doubles à partir des unités FP32 et des produits partiels. Nvidia nous a indiqué que l’abandon du MAD a été décidée par rapport au coût très important qu’il aurait nécessité par rapport à son architecture.

L’utilisation de l’instruction FMA permet d’accélérer certaines fonctions comme les divisions et les racines carrées. Nvidia nous a indiqué qu’il fournira une nouvelle bibliothèque de fonctions mathématiques qui sera utilisée automatiquement lors de la compilation pour Fermi et exploitera l’instruction FMA pour les accélérer. Du côté d’AMD, Cypress utilise déjà l’instruction FMA en double précision pour accélérer les divisions (DIV) et les racines carrées (SQRT).


Puissance de calcul maximale
Nous avons mis en graphique la puissance de calcul maximale des différentes architectures avec quelques instructions courantes. Pour Fermi nous avons pris en compte un MAD séparé en MUL + ADD et une fréquence conservative de 1600 MHz pour les unités de calcul. Nous avons ajouté, pour information, la puissance de calcul maximale autorisées par les unités SSE d’un Core i7 975.


Par rapport à la génération précédente, les gains apportés par Fermi sont énormes, surtout en double précision.

Si Cypress affiche une puissance de calcul supérieure en simple précision flottante, il faut garder en tête qu’il est plus difficile de l’atteindre en pratique compte tenu de son architecture. En double précision, Fermi prend la tête avec 50% de puissance supplémentaire, sauf avec les additions. Etant donné qu’un seul MUL, MAD ou FMA est traité par cycle il n’y a dans ces cas-là pas de perte d’efficacité liée à l’architecture vectorielle.
Vos réactions

Top articles