後藤弘茂のWeekly海外ニュース
NVIDIAの「HGX-2」から見える、NVLinkの将来像とGPUへのCPUコアの統合
2018年6月6日 14:28
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アクセラレータだ。
先に発表された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」もある。
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だ。
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というとてつもない数値になっている。
さらに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をかませるなら、さらに大きな構成も、広帯域を維持しながら可能になる。
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ポートで接続するという構成となっている。
では、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で言えば、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種類のコンフィギュレーションでは制約されてしまう」。
実際、NVIDIAの提供するDGXなどのGPUコンピュータソリューションを見ると、CPUに対するGPUの比率がどんどん高まっている。いまはCPUが2に対してGPUが16だ。
とはいえ、スカラのCPUの演算能力も維持したいコンピュータもある。単一のGPUでそうしたニーズに対応するには、CPUを分離したままのほうが良いというのもわかる。
また、この背景には、ワークロードがGPU上での並列演算に寄ってきているという状況がある。単体のGPUに求められる性能要求が高く、GPUとしてのリソースを増やすほうが先という事情もある。
こうした状況にあるため、短期の解としては、NVIDIAはPCI ExpressとNVLinkのグルーチップで、x86 CPUをNVLinkに接続する必要が出てきそうだ。