後藤弘茂のWeekly海外ニュース

NVIDIAの「HGX-2」から見える、NVLinkの将来像とGPUへのCPUコアの統合

NVIDIAのHGX-2

NVIDIAがNVSwitchを使ったHGX-2を発表

 NVIDIA CEO兼創業者のJensen Huang(ジェンスン・フアン)氏は、台北で開催されている「COMPUTEX TAIPEI」に合わせた発表会で、先週の「GTC Taiwan」で発表した最大16GPU構成のGPUアクセラレータ「HGX-2」を公開した。

 HGX-2自体は、技術的にはサンノゼで開催されたGTC 2018で発表されたGPUコンピュータ「DGX-2」の、GPUノードのボードを抜き出したものだ。

 スペック的には、Voltaアーキテクチャの「Tesla V100 (GV100)」32GB HBMメモリ版を8基と、NVLinkのスイッチチップ「NVSwitch」を6個を、1つのGPUボードに統合している。

 1ボードで8 GPU、2枚のボードをNVSwitch経由のNVLinkで接続することで、16 GPUの構成としている。サーバー向けGPUアクセラレータだ。

NVIDIAのDGX-2
AIからHPC (High Performance Computing)まで幅広い市場を狙うHGX-2

 先に発表されたDGX-2は、16個のVolta GV100 GPUと、2個のXeon CPUを組み合わせたワンボックスサーバーだ。それに対して、「HGX-2」ボードは、CPU部分を持たないGPUだけのアクセラレータとなっている。

 DGX-2は、2枚のGPUボードと、1枚のCPUボード、NVLinkバックプレーンで構成されているが、GPUボードの部分だけを別売りするのがHGX-2と考えればいい。

 実際には、HGX-2ボードをCPUと組み合わせた製品を、パートナーが販売する。おもにディープラーニング(深層学習)とHPC (High Performance Computing)をターゲットとした製品は、8 GPUの「HGX-T1」と16 GPUの「HGX-T2」となる。

 HGX-T1はHGX-2ボードが1枚で、HGX-T2はHGX-2ボード2枚をNVLinkで接続している。また、HGX-2ボードを使わないGPUサーバー製品群も用意されている。

 スーパーコンピューティング向けには「SCX-E」シリーズがあり、SCX-E1からE3がPCI Expressベース、SCX-E4がNVLinkベースだ。おもに深層学習の推論処理用途に向けた「HGX-I1/I2」もある。

NVIDIAのサーバーラインナップ
NVIDIAのサーバーの提供ベンダー

 HGX-2のポイントは、NVIDIAが、NVLinkとNVSwitchによって密接に統合されたGPUノードを、パートナーに出しはじめた点にある。

 そしてその先には、NVLinkをノード間接続に使うことで、より大規模なGPUコンピュータの姿が見えている。つまり、1つのコンピュートノード内の接続にNVLinkを使うのではなく、ノード間のファブリックとしてもNVLinkを使う。IntelのOmni-Pathのような使い方も見えてきている。

超広帯域のNVLinkでGPUを相互接続

 NVIDIAのTesla V100 (GV100)は、1個のGPUに6ポートのNVLinkを実装している。NVLinkは、差動信号(Differential Signaling)方式の狭インターフェイスで、各ポートにつき、片方向8ペア/双方向16ペアで構成される。

 現在の世代のNVLinkの転送レートは、1ペアあたり片方向で25Gbps。そのため、8ペアで構成される片方向リンクは25GB/sの帯域、1ポートは双方向で50GB/sの帯域となる。6ポートのNVLinkを実装したGV100は、合計で300GB/sのNVLink IO帯域を備える。

 従来のGPUと比較すると、桁外れにI/O帯域が広いのがNVIDIA GV100だ。

NVLinkの1リンクの構成
NVIDIA GPUのI/Oとメモリの帯域

 DGX-2/HGX-2では、1ボードに8個のGV100 GPUを搭載しており、各GPUがそれぞれ6個のNVSwitchに1リンクのNVLinkで接続されている。

 NVSwitchには、18ポートのNVLinkが実装されており、18ポートすべてに対してノンブロッキングのクロスバー接続を提供する。18ポートがそれぞれ双方向50GB/sで、トータルで900GB/sのスイッチング能力を持つ。HGX-2では、NVSwitchを使うことで、16個のGPUがすべて相互に300GB/sのフル帯域で接続されている。

 具体的には、HGX-2の1枚のベースボード上で、NVSwitchを介して300GB/sで相互接続されており、さらに2枚のベースボードがNVSwitch同士によって接続されている。ボード間の帯域は、2.4TB/sというとてつもない数値になっている。

HGX-2の接続構成。8 GPUの場合は片方のボードだけとなる

 さらにDGX-2/HGX-2では、x86 CPUのボードとも接続する。CPU側にはNVLinkがないので、CPUとの接続はPCI Expressを通じて行なうことになる。

 DGX-2やHGX-2のHGX-T2の場合、16個のGPUに対して2個のCPUとなる。合計18個のプロセッサで、しかもGPUに大幅に偏っているが、これで1つのコンピュートノードとなる。

コンピュートノード間の接続にNVLinkを拡張する方向は

 NVIDIAは、NVLinkをコンピュートノード内のプロセッサ間の接続に使っている。NVSwitchを出したいまも、NVSwitchの使い方はノード内でGPU同士をフル帯域接続するために使っている。1つのノード内に6個のスイッチという、贅沢な使い方だ。

 しかし、よく考えてみると、これはちょっと異例だ。ノード内のフル帯域接続からスイッチを導入するというのは、少し変わっている。

 スイッチがなかったこれまでは、NVLinkはノード内のインターコネクトに使うしかなかった。しかし、今はスイッチがあるのだから、NVLinkをノード間のファブリックとして使うこともできる。今後、NVLinkをノード間の接続に使うことはないのだろうか。

 フアン氏は、その質問に次のように答えている。

 「(HGX-2の)ボードの上で、8個のGPUと6個のスイッチが300GB/sの帯域で接続されている。このボードはコンピュートノードだ。しかし、われわれはノードを超えることができる。(HGX-2には)バックプレーンがあって、(HGX-2の)2つのマザーボードをフル帯域で接続している。つまり、異なるコンピュートノードを、バックプレーンで接続している。(2枚以上のボードの接続は)時間とともにだ(over time)」。

 バックプレーンを作り替えることで、たとえば、4枚のDGX-2/HGX-2ボードをNVSwitchを介して接続することができる。その場合、ボード間の帯域は減少する。各NVSwitchのGPUと接続していない10個のNVLinkポートのうち、9ポートをそれぞれ3枚のボードとの接続に使うとしたら、各ボード間は900GB/sで接続できることになる。これでもかなりの帯域だ。

 あるいは、ノード間の接続にさらにNVSwitchをかませるなら、さらに大きな構成も、広帯域を維持しながら可能になる。

4枚のボードで32 GPUを接続した場合
HGX-2ボード。右手側に見えているのがバックプレーンボードでマザーボード間を接続している

IntelのOmni-PathとNVIDIAのNVLink

 NVLinkを、コンピュートノード間の接続に使われている、最近のファブリックであるIntelのOmni-Pathと比較してみる。

 Omni-Pathは、基本の発想がノード間接続だ。1ディファレンシャルペアの転送レートは25Gbps。ポートが片方向が4ペアで、双方向では8ペアと狭くなっているのは、NVLinkより長い伝送距離を想定した構成だ。

 1ポートの帯域は片方向12.5GB/s、双方向25GB/s。Intelのスイッチである「Omni-Path Edge Switch 100」は合計48ポートのクロスバースイッチで、スイッチング帯域は合計で1.2TB/sとなり、NVSwitchを上回る。

 NVSwitchがないときに設計された、東京工業大学のスーパーコンピュータ「TSUBAME3.0」は、NVLinkとOmni-Pathの両方を使っている。コンピュートノード内の4 GPUをNVLinkで相互接続し、CPUとGPUはPCI Expressで接続。コンピュートノード間をPCI Expressスイッチを経由したOmni-Path 4ポートで接続するという構成となっている。

東京工業大学のTSUBAME3.0

 では、NVSwitchが導入された今後は、NVSwitchだけである程度のノード間も接続した構成ができるのか?

 ここには1つハードルがある。それはCPUだ。NVIDIAの現在のアーキテクチャでは、x86 CPUなどとの接続はPCI Expressを経由している。つまり、NVLinkで相互接続されているのはGPUのみで、GPUを制御するために必要なCPUは、NVLinkで接続されていない。

 つまり、NVLinkだけでコンピュートノードを接続すると、CPU同士が接続されないことになる。CPUも含めた完全なコンピュートノードというなら、NVLinkだけではノード間接続ができないのが現状だ。

 もちろん、IBMのPowerシリーズプロセッサなら、NVLinkでGPUと直結できる。NVSwitchには、まだ空きポートがあるため、PowerならNVSwitchに接続できるので、コンピュートノードをNVLinkだけで接続できる。

 しかし、CPUはPowerに制約され、x86 CPUは現状ではできていない。Power以外のCPUでは、NVLinkをバックプレーンに使うためには、NVLinkとPCI Expressの切り替えASICが必要になる。

GPUへのCPUコアの統合は

 もう1つの解決法は、NVIDIA GPUにCPUコアを統合することだ。コンピュートノードが、CPUを統合したGPUだけで構成されるようになれば、問題は解決する。

 実際NVIDIAは、以前はハイエンドGPUにCPUコアを統合する構想を持っていた。しかし現在は、その構想は後退している。この傾向はNVIDIAだけでない。

 たとえば、CPUとGPUを統合したAPU (Accelerated Processing Unit)でサーバーもカバーしようとしていたAMDも、ハイエンドではディスクリートGPUをプッシュする方向に転じている。

NVIDIAのXavier

 NVIDIAで言えば、CPUコアを統合しているのは、車載や組み込み向けのSoC系列だけになっている。最新のXavierは、8個のNVIDIAアーキテクチャArm CPUコアと、VoltaアーキテクチャのGPUコア、それに深層学習アクセラレータの「DLA (Deep Learning Accelerator)」など、多様なコアを搭載している。

 フアン氏は、次のように説明する。

 「Xavierのような製品は、統合が向いている。それも、CPUとGPUだけでは足りない。Xavierでは、6種類もの異なるタイプのプロセッサを統合している。

 しかし、こちら(Volta GV100ベースのHGX-2)は、統合を嫌う。理由は、異なるコンフィギュレーションが必要になるからだ。あるときは1個のCPUと1個のGPU、別なケースでは1個のCPUと8個のGPUといった具合だ。

 塩と胡椒の組み合わせを考えてみよう。料理はそれぞれ異なる塩と胡椒の加減が必要となる。塩胡椒が一緒になっていると、使い勝手が制限されてしまう。それと同じで、CPUとGPUも1種類のコンフィギュレーションでは制約されてしまう」。

HGX-2を持ちながら説明するHuang氏

 実際、NVIDIAの提供するDGXなどのGPUコンピュータソリューションを見ると、CPUに対するGPUの比率がどんどん高まっている。いまはCPUが2に対してGPUが16だ。

 とはいえ、スカラのCPUの演算能力も維持したいコンピュータもある。単一のGPUでそうしたニーズに対応するには、CPUを分離したままのほうが良いというのもわかる。

 また、この背景には、ワークロードがGPU上での並列演算に寄ってきているという状況がある。単体のGPUに求められる性能要求が高く、GPUとしてのリソースを増やすほうが先という事情もある。

 こうした状況にあるため、短期の解としては、NVIDIAはPCI ExpressとNVLinkのグルーチップで、x86 CPUをNVLinkに接続する必要が出てきそうだ。