NVLink ist eine drahtbasierte serielle, mehrspurige Kommunikationsverbindung für kurze Reichweiten, die von Nvidia für Daten- und Steuercode-Übertragungen zwischen CPUs und GPUs sowie zwischen GPUs 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 Hochgeschwindigkeits-Signalverbindung (NVHS). NVLink wurde entwickelt, um den wachsenden Bandbreitenanforderungen von Hochleistungsrechnen, künstlicher Intelligenz und maschinellem Lernen gerecht zu werden, und bietet eine latenzarme, hochdurchsatzfähige Alternative zu herkömmlichen Busarchitekturen.
Architektur und Versionen
NVLink spezifiziert eine Punkt-zu-Punkt-Verbindung mit Datenraten von 20, 25 und 50 Gbit/s pro Differenzialpaar für die Versionen 1.0, 2.0 bzw. 3.0 und höher. Bei NVLink 1.0 und 2.0 bilden acht Differenzialpaare eine Unterverbindung, und zwei Unterverbindungen (eine für jede Richtung) bilden eine Verbindung. Ab NVLink 3.0 bilden nur noch vier Differenzialpaare eine Unterverbindung. Für NVLink 2.0 und höher beträgt die Gesamtdatenrate einer Unterverbindung 25 GB/s und die Gesamtdatenrate einer Verbindung 50 GB/s. Jede V100-GPU unterstützt bis zu sechs Verbindungen und bietet damit bis zu 300 GB/s gesamte bidirektionale Bandbreite. NVLink 3.0, angekündigt am 14. Mai 2020, erhöhte die Datenrate pro Paar auf 50 Gbit/s und halbierte gleichzeitig die Anzahl der Paare pro Verbindung. Mit 12 Verbindungen auf der auf Ampere basierenden A100-GPU erreichte die Gesamtbandbreite 600 GB/s. Die Hopper-Mikroarchitektur, angekündigt im März 2022, verfügt über 18 NVLink-4.0-Verbindungen und ermöglicht 900 GB/s. NVLink 6, das in Nvidias Vera-Rubin-NVL72-Plattform verwendet wird, bietet 3,6 TB/s bidirektionale Bandbreite pro GPU, wobei neun NVLink-6-Switches insgesamt 260 TB/s Skalierungsbandbreite pro Rack liefern.
Skalierbarkeit und Switching
Für eine kleine Anzahl 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 einfache Berechnungen (z. B. Summe, Broadcast) durchführen, um den Kommunikationsaufwand über den SHARP-Beschleuniger zu reduzieren. Dieser switchbasierte Ansatz ermöglicht den Aufbau großer GPU-Cluster, wie sie beispielsweise beim Deep-Learning-Training und bei der Large-Language-Model-Inferenz verwendet werden, wo effiziente Skalierung entscheidend ist.
Leistungsmerkmale
Die reale Leistung wird durch Overheads wie 128b/130b-Leitungscodierung, Verbindungssteuerzeichen, Transaktionsheader, Pufferfähigkeiten und DMA-Nutzung auf der Hostseite beeinflusst. Diese Faktoren reduzieren die Datenrate typischerweise auf 90-95 % der theoretischen Übertragungsrate. Benchmarks zeigen eine erreichbare Übertragungsrate von etwa 35,3 Gbit/s (Host zu Gerät) für eine 40-Gbit/s-NVLink-Verbindung zu einer P100-GPU in einem System mit IBM-POWER8-CPUs. Die folgende Tabelle vergleicht grundlegende Kennzahlen über die Versionen hinweg:
| Version | Datenrate pro Paar | Paare pro Unterverbindung | Verbindungen pro GPU | Gesamtbandbreite |
|---|---|---|---|---|
| 1.0 | 20 Gbit/s | 8 | 4 (P100) | 160 GB/s |
| 2.0 | 25 Gbit/s | 8 | 6 (V100) | 300 GB/s |
| 3.0 | 50 Gbit/s | 4 | 12 (A100) | 600 GB/s |
| 4.0 | 50 Gbit/s | 4 | 18 (H100) | 900 GB/s |
| 6.0 | - | - | - | 3,6 TB/s |
Verwendung mit Steckkarten
NVLink ist auch auf bestimmten High-End-Grafikkarten verfügbar, die physische Anschlüsse zum Verbinden von Karten zu einer NVLink-Gruppe aufweisen. Diese Anschlüsse sind typischerweise U-förmig mit feinen Kantensteckverbindern, und die Breite bestimmt den erforderlichen Slot-Abstand (üblicherweise 3 bis 5 Slots). Die Verbindung wird aufgrund ihres strukturellen Designs oft als Scalable Link Interface (SLI) bezeichnet, obwohl das moderne NVLink technisch unterschiedlich ist. Zu den gemeldeten Geräten gehören Quadro GP100 (bis zu 160 GB/s mit zwei Brücken), Quadro GV100 (bis zu 200 GB/s), GeForce RTX 2080 und 2080 Ti (einzelne Brücke), GeForce RTX 3090 (einzigartige Brücke) und Quadro RTX 5000/6000/8000 (bis zu 100 GB/s).
Software und Programmierung
Für die Produktlinien Tesla, Quadro und Grid bietet die NVML-API (Nvidia Management Library API) Funktionen zur Steuerung von NVLink-Verbindungen unter Windows und Linux, einschließlich Komponentenbewertung, Status-/Fehlerabfrage und Leistungsüberwachung. Die NCCL-Bibliothek (Nvidia Collective Communications Library) ermöglicht Entwicklern die Implementierung leistungsfähiger KI- und rechenintensiver Anwendungen auf Basis von NVLink. Die Seite „3D-Einstellungen“ der Nvidia-Systemsteuerung und das CUDA-Beispiel „simpleP2P“ verwenden diese APIs. Unter Linux bietet das Befehlszeilentool nvidia-smi nvlink ähnliche erweiterte Informationen und Steuerungsmöglichkeiten.
Geschichte
Am 5. April 2016 kündigte Nvidia an, dass NVLink in der auf Pascal basierenden GP100-GPU implementiert würde, die in Produkten wie der Tesla P100 verwendet wird. Der Hochleistungscomputer DGX-1 ermöglichte bis zu acht P100-Module in einem einzigen Rack, verbunden mit bis zu zwei Host-CPUs über eine spezielle Trägerplatine zur Weiterleitung von NVLink-Verbindungen. Jede P100 benötigte 800 Pins (400 für PCIe und Strom sowie weitere 400 für NVLink). Nachfolgende Generationen (Volta, Ampere, Hopper und spätere) haben die Anzahl der Verbindungen und die Bandbreite kontinuierlich erhöht und NVLink als Schlüsseltechnologie für generative KI und Hochleistungsrechnen gefestigt.