NVLink ist eine drahtbasierte serielle, mehrspurige Kommunikationsverbindung mit kurzer Reichweite, die von Nvidia für die Verbindung von Prozessoren in Hochleistungsrechnersystemen entwickelt wurde. Im Gegensatz zu PCI Express kann ein Gerät aus mehreren NVLinks bestehen, und Geräte können Mesh-Netzwerke zur Kommunikation nutzen, anstatt einen zentralen Hub oder Switch zu verwenden. Das Protokoll wurde erstmals im März 2014 angekündigt und verwendet eine proprietäre Hochgeschwindigkeitssignalverbindung (NVHS). Es wird hauptsächlich zur Übertragung von Daten und Steuercode zwischen CPUs und GPUs sowie zwischen GPUs und GPUs verwendet und ermöglicht eine Kommunikation mit hoher Bandbreite und geringer Latenz für rechenintensive Arbeitslasten wie künstliche Intelligenz und maschinelles Lernen.
NVLink spezifiziert eine Punkt-zu-Punkt-Verbindung mit Datenraten von 20, 25 und 50 Gbit/s pro Differenzpaar für die Versionen 1.0, 2.0 bzw. 3.0 und höher. Bei NVLink 1.0 und 2.0 bilden acht Differenzpaare einen Unterlink, und zwei Unterlinks (einer für jede Richtung) bilden einen Link. Ab NVLink 3.0 bilden nur noch vier Differenzpaare einen Unterlink. Für NVLink 2.0 und höher beträgt die Gesamtdatenrate für einen Unterlink 25 GB/s und die Gesamtdatenrate für einen Link 50 GB/s. Jede V100-GPU unterstützt bis zu sechs Links und bietet damit eine Gesamt-Bidirektionalbandbreite von bis zu 300 GB/s. NVLink 3.0, angekündigt am 14. Mai 2020, erhöhte die Datenrate pro Differenzpaar von 25 Gbit/s auf 50 Gbit/s, während die Anzahl der Paare pro Link von 8 auf 4 reduziert wurde. Mit 12 Links für eine A100-GPU auf Ampere-Basis ergibt sich eine Gesamtbandbreite von 600 GB/s. Die Hopper-GPU-Mikroarchitektur, angekündigt im März 2022, verfügt über 18 NVLink-4.0-Links, was eine Gesamtbandbreite von 900 GB/s ermöglicht. NVLink 6, das in Nvidias Vera-Rubin-NVL72-Plattform verwendet wird, bietet 3,6 TB/s bidirektionale Bandbreite pro GPU, und ein NVL72-Rack nutzt neun NVLink-6-Switches, um eine Gesamt-Scale-up-Bandbreite von 260 TB/s bereitzustellen.
Topologie und Switching
Für kleine Anzahlen von GPUs reichen die NVLink-Spuren auf einem einzelnen Gerät für eine All-to-All-Mesh-Konnektivität aus. Um höhere GPU-Anzahlen zu unterstützen, verwendet NVLink seit 2018 eine paketvermittelte Architektur, bei der ein zentraler Switch bis zu 32 Zwei-Spur-Ports bedienen kann. Der NVSwitch für NVLink 4.0 kann dank des SHARP-Beschleunigers einige einfache Berechnungen selbst durchführen (z. B. Summe, Broadcast), um den Kommunikationsbedarf zu reduzieren. Dies ermöglicht eine Skalierung über direkte GPU-zu-GPU-Verbindungen hinaus und ermöglicht größere Systeme wie die DGX-Serie und NVL72-Racks.
Leistungsmerkmale
Die reale Leistung wird durch die Anwendung verschiedener Datenübertragungs-Overhead-Kosten bestimmt, wie z. B. 128b/130b-Leitungscode, Link-Steuerzeichen, Transaktionsheader, Pufferfähigkeiten und DMA-Nutzung auf der Computerseite. Diese physikalischen Einschränkungen reduzieren die Datenrate normalerweise auf 90 bis 95 Prozent der Übertragungsrate. NVLink-Benchmarks zeigen eine erreichbare Übertragungsrate von etwa 35,3 Gbit/s (Host zu Gerät) für eine 40-Gbit/s-NVLink-Verbindung (2 Unterspuren Uplink) zu einer P100-GPU in einem System mit IBM-POWER8-CPUs.
Verwendung mit Steckkarten
Für verschiedene Versionen von Steckkarten bieten eine kleine Anzahl hochwertiger Gaming- und professioneller Grafik-GPU-Karten zusätzliche Anschlüsse, um sie zu einer NVLink-Gruppe zu verbinden. Es existiert eine ähnliche Anzahl leicht variierender, relativ kompakter, PCB-basierter Verbindungsstecker. Typischerweise passen nur Karten desselben Typs aufgrund des physischen und logischen Designs zusammen. Bei einigen Setups müssen zwei identische Stecker angewendet werden, um die volle Datenrate zu erreichen. Der typische Stecker ist U-förmig mit einem feinen Rasterkantenverbinder an jedem Ende, wobei die Enden vom Betrachter weg zeigen. Die Breite des Steckers bestimmt, wie weit die Steckkarten voneinander entfernt sitzen müssen, mit bekannten Steckerbreiten von 3 bis 5 Steckplätzen je nach Kartentyp. Die Verbindung wird oft als Scalable Link Interface (SLI) aus dem Jahr 2004 für ihr strukturelles Design bezeichnet, obwohl moderne NVLink-basierte Designs technisch unterschiedlich sind. Gemeldete Geräte umfassen Quadro GP100 (bis zu 2 Brücken, 160 GB/s), Quadro GV100 (bis zu 2 Brücken, 200 GB/s), GeForce RTX 2080 und 2080 Ti mit einzelnen Brücken, GeForce RTX 3090 mit einer einzigartigen Brücke sowie Quadro RTX 5000, 6000 und 8000 mit einzelnen Brücken, die bis zu 100 GB/s erreichen.
Dienstsoftware und Programmierung
Für die Produktlinien Tesla, Quadro und Grid bietet die NVML-API (Nvidia Management Library API) Funktionen zur programmgesteuerten Steuerung von Aspekten von NVLink unter Windows und Linux, wie z. B. Komponentenbewertung, Status-/Fehlerabfrage und Leistungsüberwachung. Die NCCL-Bibliothek (Nvidia Collective Communications Library) ermöglicht Entwicklern die Implementierung leistungsstarker Deep-Learning- und rechenintensiver Anwendungen auf Basis von NVLink. Die Seite „3D-Einstellungen" des Nvidia-Systemsteuerungsfensters und die CUDA-Beispielanwendung „simpleP2P" verwenden solche APIs. Unter Linux bietet die Befehlszeilenanwendung mit dem Unterbefehl „nvidia-smi nvlink" erweiterte Informationen und Steuerung.
Geschichte
Am 5. April 2016 kündigte Nvidia an, dass NVLink in der GPU GP100 auf Pascal-Mikroarchitektur implementiert würde, wie sie in Nvidia-Tesla-P100-Produkten verwendet wird. Mit der Einführung des Hochleistungscomputers DGX-1 wurde es möglich, bis zu acht P100-Module in einem einzigen Rack-System zu haben, die mit bis zu zwei Host-CPUs verbunden sind. Die Trägerplatine ermöglicht eine dedizierte Platine zum Routing von NVLink-Verbindungen, wobei jede P100 800 Pins benötigt (400 für PCIe plus Strom und weitere 400 für NVLink). Seitdem hat sich NVLink über mehrere Generationen weiterentwickelt, wobei jede Iteration die Bandbreite und die Link-Anzahl erhöhte, und es bleibt eine Schlüsselkomponente in Nvidias Infrastruktur für das Training von generativer KI und großen Sprachmodellen.