NVLink est un lien de communication série, multi-voies et à courte portée, développé par Nvidia pour connecter des processeurs dans des systèmes de calcul haute performance. Contrairement à PCI Express, un périphérique peut être composé de plusieurs NVLink, et les périphériques peuvent utiliser un réseau maillé pour communiquer au lieu d'un concentrateur central ou d'un commutateur. Le protocole a été annoncé pour la première fois en mars 2014 et utilise une interconnexion de signalisation haute vitesse propriétaire (NVHS). Il est principalement utilisé pour transférer des données et du code de contrôle entre les CPU et les GPU, ainsi qu'entre les GPU, permettant une communication à haute bande passante et à faible latence pour des charges de travail intensives en calcul telles que l'intelligence artificielle et l'apprentissage automatique.
NVLink spécifie une connexion point à point avec des débits de données de 20, 25 et 50 Gbit/s par paire différentielle pour les versions 1.0, 2.0 et 3.0 et supérieures, respectivement. Pour NVLink 1.0 et 2.0, huit paires différentielles forment un sous-lien, et deux sous-liens (un pour chaque direction) forment un lien. À partir de NVLink 3.0, seulement quatre paires différentielles forment un sous-lien. Pour NVLink 2.0 et supérieur, le débit total de données pour un sous-lien est de 25 Go/s, et le débit total pour un lien est de 50 Go/s. Chaque GPU V100 prend en charge jusqu'à six liens, offrant jusqu'à 300 Go/s de bande passante bidirectionnelle totale. Annoncé le 14 mai 2020, NVLink 3.0 a augmenté le débit par paire différentielle de 25 Gbit/s à 50 Gbit/s tout en réduisant le nombre de paires par lien de 8 à 4. Avec 12 liens pour un GPU A100 basé sur Ampere, cela porte la bande passante totale à 600 Go/s. La microarchitecture GPU Hopper, annoncée en mars 2022, dispose de 18 liens NVLink 4.0, permettant une bande passante totale de 900 Go/s. NVLink 6, utilisé dans la plateforme Vera Rubin NVL72 de Nvidia, fournit 3,6 To/s de bande passante bidirectionnelle par GPU, et un rack NVL72 utilise neuf commutateurs NVLink 6 pour fournir 260 To/s de bande passante totale d'extension.
Topologie et commutation
Pour un petit nombre de GPU, les voies NVLink sur un seul périphérique suffisent pour une connectivité maillée de tous à tous. Pour prendre en charge des nombres de GPU plus élevés, NVLink utilise depuis 2018 une architecture à commutation de paquets, où un commutateur central peut desservir jusqu'à 32 ports à deux voies. Le NVSwitch pour NVLink 4.0 peut effectuer certains calculs simples de sa propre initiative (par exemple, somme, diffusion) pour réduire le besoin de communication, grâce à l'accélérateur SHARP. Cela permet de passer au-delà des connexions directes GPU à GPU, permettant des systèmes plus grands comme la série DGX et les racks NVL72.
Caractéristiques de performance
Les performances réelles sont déterminées en appliquant différents coûts de surcharge de transmission de données, tels que le code de ligne 128b/130b, les caractères de contrôle de lien, les en-têtes de transaction, les capacités de mise en mémoire tampon et l'utilisation du DMA côté ordinateur. Ces limitations physiques réduisent généralement le débit de données à entre 90 et 95 pour cent du taux de transfert. Les benchmarks NVLink montrent un taux de transfert réalisable d'environ 35,3 Gbit/s (hôte vers périphérique) pour une connexion NVLink de 40 Gbit/s (2 sous-voies en liaison montante) vers un GPU P100 dans un système piloté par des CPU IBM POWER8.
Utilisation avec des cartes d'extension
Pour diverses versions de cartes d'extension, un petit nombre de cartes graphiques haut de gamme pour le jeu et le professionnel exposent des connecteurs supplémentaires pour les joindre en un groupe NVLink. Un nombre similaire de connecteurs d'interconnexion basés sur PCB, légèrement variables et relativement compacts, existe. Généralement, seules les cartes du même type s'accouplent ensemble en raison de la conception physique et logique. Pour certaines configurations, deux connecteurs identiques doivent être appliqués pour atteindre le débit de données complet. Le connecteur typique est en forme de U avec un connecteur à bord fin en grille à chaque extrémité, orienté vers l'extérieur. La largeur du connecteur détermine la distance à laquelle les cartes d'extension doivent être installées, avec des largeurs connues de 3 à 5 emplacements selon le type de carte. L'interconnexion est souvent appelée Scalable Link Interface (SLI) depuis 2004 pour sa conception structurelle, même si les conceptions modernes basées sur NVLink sont techniquement différentes. Les périphériques signalés incluent le Quadro GP100 (jusqu'à 2 ponts, 160 Go/s), le Quadro GV100 (jusqu'à 2 ponts, 200 Go/s), les GeForce RTX 2080 et 2080 Ti avec des ponts simples, la GeForce RTX 3090 avec un pont unique, et les Quadro RTX 5000, 6000 et 8000 avec des ponts simples atteignant jusqu'à 100 Go/s.
Logiciel de service et programmation
Pour les gammes de produits Tesla, Quadro et Grid, l'API NVML (Nvidia Management Library API) offre des fonctions pour contrôler programmatiquement des aspects de NVLink sur Windows et Linux, tels que l'évaluation des composants, l'interrogation des statuts/erreurs et la surveillance des performances. La bibliothèque NCCL (Nvidia Collective Communications Library) permet aux développeurs d'implémenter des applications puissantes de apprentissage profond et gourmandes en calcul sur NVLink. La page « Paramètres 3D » du panneau de contrôle Nvidia et l'application d'exemple CUDA « simpleP2P » utilisent de telles API. Sur Linux, l'application en ligne de commande avec la sous-commande « nvidia-smi nvlink » fournit des informations avancées et un contrôle.
Historique
Le 5 avril 2016, Nvidia a annoncé que NVLink serait implémenté dans le GPU GP100 basé sur la microarchitecture Pascal, comme utilisé dans les produits Nvidia Tesla P100. Avec l'introduction de l'ordinateur haute performance DGX-1, il est devenu possible d'avoir jusqu'à huit modules P100 dans un seul système en rack connectés à jusqu'à deux CPU hôtes. La carte porteuse permet une carte dédiée pour le routage des connexions NVLink, chaque P100 nécessitant 800 broches (400 pour PCIe plus alimentation, et 400 autres pour NVLink). Depuis lors, NVLink a évolué à travers plusieurs générations, chaque itération augmentant la bande passante et le nombre de liens, et il reste un composant clé dans l'infrastructure d'entraînement de Nvidia pour la IA générative et les grands modèles de langage.