NVLinkは、Nvidiaによって開発された、CPUとGPUの間およびGPU間でのデータおよび制御コード転送のための、ワイヤベースのシリアル、マルチレーン、近距離通信リンクである。PCI Expressとは異なり、デバイスは複数のNVLinkで構成でき、デバイスは中央ハブやスイッチの代わりにメッシュネットワークを使用して通信できる。このプロトコルは2014年3月に初めて発表され、独自の高速シグナリング相互接続(NVHS)を使用する。NVLinkは、ハイパフォーマンスコンピューティング、人工知能、機械学習ワークロードの増大する帯域幅需要に対応するように設計されており、従来のバスアーキテクチャに代わる低遅延、高スループットの代替手段を提供する。
アーキテクチャとバージョン
NVLinkは、バージョン1.0、2.0、および3.0以降で、それぞれ差動ペアあたり20、25、および50 Gbit/sのデータレートを持つポイントツーポイント接続を指定する。NVLink 1.0および2.0では、8つの差動ペアがサブリンクを形成し、2つのサブリンク(各方向に1つ)がリンクを形成する。NVLink 3.0以降では、わずか4つの差動ペアがサブリンクを形成する。NVLink 2.0以降では、サブリンクの合計データレートは25 GB/sであり、リンクの合計データレートは50 GB/sである。各V100 GPUは最大6つのリンクをサポートし、最大300 GB/sの合計双方向帯域幅を提供する。2020年5月14日に発表されたNVLink 3.0は、ペアあたりのデータレートを50 Gbit/sに引き上げ、リンクあたりのペア数を半分にした。AmpereベースのA100 GPUでは12リンクにより、合計帯域幅は600 GB/sに達した。2022年3月に発表されたHopperマイクロアーキテクチャは、18のNVLink 4.0リンクを備え、900 GB/sを可能にする。NvidiaのVera Rubin NVL72プラットフォームで使用されるNVLink 6は、GPUあたり3.6 TB/sの双方向帯域幅を提供し、9つのNVLink 6スイッチがラックあたり260 TB/sの合計スケールアップ帯域幅を提供する。
スケーラビリティとスイッチング
少数のGPUの場合、単一デバイス上のNVLinkレーンは、オールツーオールメッシュ接続に十分である。より多くのGPU数に対応するために、NVLinkは2018年以降、パケット交換アーキテクチャを使用しており、中央スイッチは最大32の2レーンポートを提供できる。NVLink 4.0用のNVSwitchは、SHARPアクセラレータを介して通信オーバーヘッドを削減するために、単純な計算(例:合計、ブロードキャスト)を実行できる。このスイッチベースのアプローチにより、ディープラーニングトレーニングや大規模言語モデル推論で使用されるような大規模GPUクラスタの構築が可能になり、効率的なスケーリングが重要となる。
パフォーマンス特性
実際のパフォーマンスは、128b/130bラインコーディング、リンク制御文字、トランザクションヘッダー、バッファリング機能、ホスト側のDMA使用などのオーバーヘッドによって影響を受ける。これらの要因により、データレートは通常、理論上の転送レートの90〜95%に低下する。ベンチマークでは、IBM POWER8 CPUによって駆動されるシステム内のP100 GPUに向けた40 Gbit/s NVLink接続の場合、達成可能な転送レートは約35.3 Gbit/s(ホストからデバイス)であることが示されている。以下の表は、バージョン間の基本的なメトリクスを比較している:
| バージョン | ペアあたりのデータレート | サブリンクあたりのペア数 | GPUあたりのリンク数 | 合計帯域幅 |
|---|---|---|---|---|
| 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 |
プラグインボードでの使用
NVLinkは、特定のハイエンドグラフィックスカードでも利用可能であり、カードをNVLinkグループに結合するための物理コネクタを備えている。これらのコネクタは通常、微細なグリッドエッジコネクタを備えたU字型であり、幅によって必要なスロット間隔(通常3〜5スロット)が決まる。この相互接続は、その構造設計からスケーラブルリンクインターフェイス(SLI)と呼ばれることがよくあるが、最新のNVLinkは技術的に異なる。報告されているデバイスには、Quadro GP100(2つのブリッジで最大160 GB/s)、Quadro GV100(最大200 GB/s)、GeForce RTX 2080および2080 Ti(シングルブリッジ)、GeForce RTX 3090(ユニークなブリッジ)、Quadro RTX 5000/6000/8000(最大100 GB/s)が含まれる。
ソフトウェアとプログラミング
Tesla、Quadro、Grid製品ラインの場合、NVML-API(Nvidia Management Library API)は、WindowsおよびLinuxでNVLink相互接続を制御するための機能を提供し、コンポーネント評価、ステータス/エラークエリ、パフォーマンスモニタリングを含む。NCCLライブラリ(Nvidia Collective Communications Library)により、開発者はNVLink上に強力なAIおよび計算集約型アプリケーションを実装できる。Nvidiaコントロールパネルの「3D設定」ページとCUDAサンプル「simpleP2P」はこれらのAPIを使用する。Linuxでは、コマンドラインツールnvidia-smi nvlinkが同様の高度な情報と制御を提供する。
歴史
2016年4月5日、NvidiaはNVLinkがPascalベースのGP100 GPUに実装されることを発表し、Tesla P100などの製品で使用された。DGX-1ハイパフォーマンスコンピュータは、単一ラック内で最大8つのP100モジュールを可能にし、専用キャリアボードを介して最大2つのホストCPUに接続され、NVLink接続をルーティングした。各P100には800ピン(PCIeおよび電源用に400ピン、NVLink用にさらに400ピン)が必要だった。その後の世代(Volta、Ampere、Hopper、およびそれ以降)は、リンク数と帯域幅を増やし続け、NVLinkを生成AIおよびハイパフォーマンスコンピューティングの主要技術として確固たるものにした。