En chiffres, un seul GPU Volta contient vingt et un milliards de transistors, répartis sur 815 mm² (ce qui en fait le processeur graphique le plus grand). La consommation maximale est de 300 W (comme son grand frère, le GP100 , représentant la génération Pascal). Son pic de performance est cinq fois plus haut que le GP100, qui battait déjà des records : par rapport à Maxwell (GM100), lancé il y a deux ans, le gain atteint un facteur quinze. En d’autres termes, ces gains sont quatre fois plus élevés que ceux prédits par la loi de Moore (même si elle était prévue, dans les années 1970, pour des processeurs centraux).
Pour le moment, seul un processeur est annoncé : le GV100, à destination exclusivement des serveurs (les cartes graphiques grand public utilisent des versions plus petites de ce processeur). On pourrait s’attendre à voir débarquer des déclinaisons grand public fin de cette année, voire début 2018.
Côté matériel
Les gains de Volta sont dus à une architecture entièrement révisée : les cœurs de calcul sont divisés en deux groupes, les génériques (dits CUDA, habituels), puis les spécifiques (dits tenseur, prévus pour du calcul matriciel). Le GV100 contient ainsi 5376 cœurs CUDA (par rapport à 3840 pour le GP100) et 672 cœurs tensoriels (entièrement nouveaux). Une autre grande partie du gain de performance vient de la mémoire : le GV100 utilise 16 Go de puces de mémoire HBM2, avec une bande passante de 900 Go/s (la même technologie était utilisée pour le GP100, mais avec une bande passante de “seulement” 732 Go/s).
L’architecture des GPU a presque entièrement changé depuis la génération précédente : seule l’organisation globale des blocs est similaire, NVIDIA ne s’est pas limité à ajouter des cœurs de calcul plus spécifiques sur un procédé de fabrication plus récent. La mécanique d’exécution, l’ordonnancement des tâches, les contrôleurs mémoire, les instructions ont tous été profondément modifiés par rapport à Pascal.
D’ailleurs, le processus de fabrication a été adapté à ces GPU : il s’agit du 12FFN de TSMC, une variation du 12FF de plus haute performance (par rapport au 16FF de Pascal, la consommation énergétique est grandement diminuée). C’était presque une obligation : ces GPU ont la taille maximale que peut produire TSMC. En d’autres termes, le rendement sera très faible à la production : plus la puce est grande, plus le taux de pertes à la fabrication est grand. Sur un processus relativement récent et donc moins bien maîtrisé, les dommages sur le rendement sont encore plus importants. Ainsi, ces puces seront probablement réservées à des clients pouvant se permettre bien plus que 15 000 $ l’unité (prix d’une carte de génération Pascal) — pour dire à quel point ils en ont besoin pour leurs tâches.
NVIDIA annonce en parallèle ses serveurs de calcul DGX-1 avec des cartes Volta : la machine contient huit cartes Volta, pour un prix de 149 000 $ (avec deux processeurs Intel Xeon E5-2698 V4, 512 Go de mémoire DDR4 et quatre disques SSD de 2 To configurés en RAID0, pour une consommation de 3,2 kW avec refroidissement liquide). Une déclinaison en machine de bureau, la DGX Workstation, ne contiendra que quatre telles cartes, pour un prix de 69 000 $.
Organisation des multiprocesseurs
Les cœurs de calcul sont répartis en une série de multiprocesseurs de flux (SM, streaming multiprocessor). Un même SM contient une série de cœurs CUDA et de cœurs tensoriels. Chacun de ces multiprocesseurs contient soixante-quatre unités de calcul sur des nombres à virgule flottante de trente-deux bits (FP32), soixante-quatre unités pour des entiers à trente-deux bits (INT64), trente-deux unités FP64, ainsi que huit cœurs tensoriels.
Les données entières et en virgule flottante utilisent désormais des chemins parallèles : un GPU Volta sera donc nettement plus efficace sur des charges de travail qui mélangent calculs et adressage, les deux pouvant se faire en parallèle (et non plus l’un après l’autre). À l’intérieur de chaque SM, l’ordonnancement (matériel) des fils d’exécution indépendants a été profondément retravaillé, afin d’obtenir une synchronisation plus fine. Les caches L1 ont aussi été fusionnés avec la mémoire partagée, ce qui facilite la programmation des GPU (un niveau de la hiérarchie mémoire enlevé) et augmente la performance (la mémoire partagée étant rapprochée des cœurs de calcul).
Les cœurs tensoriels sont spécifiquement prévus pour les tâches d’algèbre linéaire dans le cadre de l’apprentissage profond : les opérations qu’ils effectuent ne sont pas spécifiques à ce domaine, mais bien la précision des opérandes. Plus particulièrement, ils sont utiles dans le cadre de la multiplication de deux matrices FP16 de seize éléments avec une addition à une autre matrice de même taille, en FP16 ou FP32 ; les calculs sont effectués avec une précision de trente-deux bits, pour atteindre une précision suffisante — la sortie est simplement tronquée. Chaque cœur peut ainsi effectuer soixante-quatre opérations FMA (une multiplication et une addition) par coup d’horloge. De par leur conception extrêmement peu flexible (très peu d’instructions disponibles), ces cœurs ne consomment pas énormément d’énergie ni de place sur la puce.
Sources et images : NVIDIA Launches Revolutionary Volta GPU Platform, Fueling Next Era of AI and High Performance Computing, NVIDIA Volta Unveiled: GV100 GPU and Tesla V100 Accelerator Announced, NVIDIA Tesla V100: The Most Advanced Data Center GPU Ever Built, Inside Volta: The World’s Most Advanced Data Center GPU, NVIDIA Volta GV100 GPU Powers Updated DGX-1, HGX-1 and DGX-1 Supercomputing Stations – Available in Q3 2017 With Prices Up To $149K.