NVLinkは、高性能コンピューティングシステムにおいてプロセッサを接続するためにNvidiaによって開発された、ワイヤベースのシリアル、マルチレーン、近距離通信リンクである。PCI Expressとは異なり、デバイスは複数のNVLinkで構成でき、デバイスは中央ハブやスイッチの代わりにメッシュネットワークを使用して通信できる。このプロトコルは2014年3月に初めて発表され、独自の高速シグナリング相互接続(NVHS)を使用する。主にCPUとGPU間、およびGPUとGPU間でのデータと制御コードの転送に使用され、人工知能や機械学習などの計算集約型ワークロードに対して、高帯域幅、低遅延の通信を可能にする。
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は、差動ペアあたりのデータレートを25 Gbit/sから50 Gbit/sに引き上げ、リンクあたりのペア数を8から4に減らした。AmpereベースのA100 GPUでは12リンクとなり、合計帯域幅は600 GB/sになる。2022年3月に発表されたHopper GPUマイクロアーキテクチャは、18のNVLink 4.0リンクを備え、900 GB/sの総帯域幅を実現する。NvidiaのVera Rubin NVL72プラットフォームで使用されるNVLink 6は、GPUあたり3.6 TB/sの双方向帯域幅を提供し、NVL72ラックは9つのNVLink 6スイッチを使用して、合計260 TB/sのスケールアップ帯域幅を提供する。
トポロジとスイッチング
少数のGPUの場合、単一デバイス上のNVLinkレーンは、オールツーオールメッシュ接続に十分である。より多くのGPU数をサポートするために、NVLinkは2018年以降、パケット交換アーキテクチャを使用しており、中央スイッチは最大32の2レーンポートを提供できる。NVLink 4.0用のNVSwitchは、SHARPアクセラレータのおかげで、通信の必要性を減らすために独自の簡単な計算(例:合計、ブロードキャスト)を実行できる。これにより、GPU間の直接接続を超えたスケーリングが可能になり、DGXシリーズやNVL72ラックなどの大規模システムを実現できる。
パフォーマンス特性
実際のパフォーマンスは、128b/130bラインコード、リンク制御文字、トランザクションヘッダー、バッファリング機能、コンピュータ側のDMA使用などのさまざまなデータ伝送オーバーヘッドコストを適用することで決定される。これらの物理的な制限により、データレートは通常、転送レートの90〜95パーセントに低下する。NVLinkベンチマークでは、IBM POWER8 CPUを搭載したシステムでP100 GPUに向けた40 Gbit/s(2サブレーンアップリンク)のNVLink接続に対して、達成可能な転送レートは約35.3 Gbit/s(ホストからデバイス)であることが示されている。
プラグインボードでの使用
さまざまなバージョンのプラグインボードでは、少数のハイエンドゲーミングおよびプロフェッショナルグラフィックスGPUボードが、NVLinkグループに参加するための追加コネクタを露出している。同様の数、わずかに異なる、比較的コンパクトなPCBベースの相互接続プラグが存在する。通常、物理的および論理的な設計により、同じタイプのボードのみが互いに結合できる。一部のセットアップでは、全データレートを達成するために2つの同一プラグを適用する必要がある。典型的なプラグはU字型で、各端のストロークに細かいグリッドエッジコネクタがあり、視聴者から離れて向いている。プラグの幅によって、プラグインボードを配置する間隔が決まり、既知のプラグ幅はボードタイプに応じて3〜5スロットである。この相互接続は、構造設計から2004年のスケーラブルリンクインターフェイス(SLI)と呼ばれることが多いが、現代のNVLinkベースの設計は技術的に異なる。報告されているデバイスには、Quadro GP100(最大2ブリッジ、160 GB/s)、Quadro GV100(最大2ブリッジ、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管理ライブラリAPI)が、WindowsおよびLinuxでNVLinkのコンポーネント評価、ステータス/エラークエリ、パフォーマンス監視などの側面をプログラムで制御する機能を提供する。NCCLライブラリ(Nvidia Collective Communications Library)により、開発者はNVLink上で強力な深層学習および計算集約型アプリケーションを実装できる。Nvidiaコントロールパネルの「3D設定」ページとCUDAサンプルアプリケーション「simpleP2P」は、そのようなAPIを使用する。Linuxでは、サブコマンド「nvidia-smi nvlink」を持つコマンドラインアプリケーションが、高度な情報と制御を提供する。
歴史
2016年4月5日、NvidiaはNVLinkがPascalマイクロアーキテクチャベースのGP100 GPUに実装されることを発表し、Nvidia Tesla P100製品で使用された。DGX-1高性能コンピュータの導入により、単一のラックシステムで最大8つのP100モジュールを、最大2つのホストCPUに接続することが可能になった。キャリアボードはNVLink接続をルーティングするための専用ボードを可能にし、各P100は800ピン(PCIeと電源用に400、NVLink用にさらに400)を必要とする。それ以来、NVLinkは複数の世代を通じて進化し、各イテレーションで帯域幅とリンク数が増加しており、Nvidiaの生成AIおよび大規模言語モデルトレーニングインフラストラクチャの重要なコンポーネントであり続けている。