NVIDIAのNVLinkは高速のインタコネクトであるが、GPU同士をつなぐだけで、大規模のネットワークを作ることはできなかった。しかし、NVIDIAは2018年3月のGTC 2018において「NVSwitch」というチップを発表した。このスイッチでNVLinkのポートを持つGPUを結合してより規模の大きいネットワークを作ることができるようになった。また、高バンド幅のスイッチが使えることになり、大容量のメモリアクセスや他のGPUとのデータのやり取りを必要とする計算の性能が向上するというメリットが得られている。

筆者が先ごろ執筆した「NVIDIAのDGX-2」に関する記事では、筆者は、次の図のようなNVSwitch間を全対全で接続するネットワークを考えていたのであるが、これは間違いであった。

NVIDIAが発表したNVSwitchを使うDGX-2のネットワーク接続は次の図のようなものである。NVSwitch間を全対全接続するのではなく、NVIDIAは、1Aと1B、2Aと2B、…の6つのペアのNVSwitch間を8リンクで直結した構造を使っていた。

  • NVIDIAが示したDGX-2のネットワークの接続

    NVIDIAが示したDGX-2のネットワークの接続。ペアのNVSwitch間を8リンク並列に接続している (このレポートの図は、GTC 2018におけるNVIDIAの発表スライドのコピーである)

しかし、この接続であれば、次の図のように6個のNVSwitchに16個のV100 GPUを接続すればよい。NVSwitchは18ポートなので、これでも2ポートの空きができ、必要ならばCPUなどに接続するポートは残っている。したがって、何もNVSwitchを12個使う必要はないというのが、筆者が、このような接続を考えなかった理由である。

  • DGX-2の接続は6個のNVSwitchで実現でき、12個のスイッチは必要ない

    DGX-2の接続は6個のNVSwitchで実現でき、12個のスイッチは必要ない

なぜ、DGX-2では2つのNVSwithをペアにしているのか分からないが、2段積(次の図を参照)になっている8GPUボードを同じものにしたかった、あるいは、上下の8GPUボード間の接続の電気的特性を揃える必要があるというような事情があったのかも知れない。

なお、DGX-2の接続ではバイセクションバンド幅(ノードを等分する面を通過できる信号のバンド幅で、その値が最小になる分割の場合のバンド幅)は、48リンク2.4TB/sとなっている。一方、筆者の最初の図では、上下の6個ずつのNVSwitch間の接続が6リンクでバイセクションバンド幅は36リンク1.8TB/sであるが、NVSwitch間にもう2リンクを使ってX状に接続すれば2.4TBのバイセクションバンド幅とすることはできる。また、3番目の6個のNVSwitchを使う接続もバイセクションバンド幅は2.4TB/sである。

DGX-2の実装構造であるが、以下のスライドの(1)がTesla V100 32GB GPU、(2)が2枚の8GPUボードである。この図では、左が前面版側、右が後ろ側になっている。そして、GPUボードの後ろ側の位置に各6個のNVSwitchが搭載されている。番号無しで図の右端に置かれているのがプレーンカードで、後ろから差し込んで2枚のGPUボード間の接続を行う。

この図ではGPUボードの後ろ側に引き出されているのが(4)の8ポートのEDR InfiniBand/100GBEボードと、GPUとCPUをPCI Expressで接続するための(5)のPCIeスイッチコンプレックスである。その下には、(6)、(7)のXeon Platinum CPUと1.5TBのシステムメモリが搭載されている。

そして、前面側のファンユニットの下部には(8)の30TBのNVME SSD、後面には(9)のDual 10/25 GBEコネクタが引き出されている。

  • 8GPUボードを2段積にするDGX-2の実装構造

    8GPUボードを2段積にするDGX-2の実装構造

また、NVSwitchの内部については、次の図が示された。NVLinkとクロスバについては筆者の推測は正しく、クロスバの両側はフォワーディング、下側はマネジメントと表記されている。

  • NVSwitchチップの写真に各部の機能を書き込んだ図

    NVSwitchチップの写真に各部の機能を書き込んだ図

NVSwitchのメリットであるが、次の図は、1280×1280×1280の3次元FFTをFP32で計算した場合の性能を比較したものである。灰色の棒グラフがVolta版のDGX-1の性能で、グリーンがDGX-2の性能である。

左端の4個のGPUを使っている場合は、DGX-1でもDGX-2でも大差はないが、中央の8GPUのケースでは、DGX-1が1374であるのに対して、DGX-2は6965と5倍あまりの性能になっている。DGX-1では、4個のGPU同士は直結されているが、他方の4個のGPUとの接続は細くなっており、この辺りで通信ネックが発生していると思われる。

そして、右端の16GPUはDGX-1ではそもそも計算ができないが、DGX-2では13Kと8GPUの場合に比べてはほぼ2倍の性能が得られており、NVSwitchを使うことにより、16GPUの場合でも通信はほとんど制約になっていないように見える。

  • DGX-1とDGX-2の1280×1280×1280の3次元FFTの実行性能の比較

    DGX-1とDGX-2の1280×1280×1280の3次元FFTの実行性能の比較

次の図は4種の科学技術計算の性能の比較で、2台のVolta版DGX-1と1台のDGX-2の比較を行っている。どちらもV100 GPUの計算パワーは同じであるが、性能比は2倍から2.7倍となっており、NVSwitchで16GPUを高バンド幅、低レーテンシで接続しているか、InfiniBandなどで2台のDGX-1を接続しているかでこの違いが出ていると考えられる。

  • DGX-1とDGX-2の16GPU構成での4種のアプリケーションの実行性能の比較

    DGX-1とDGX-2の16GPU構成での4種のアプリケーションの実行性能の比較

例えば、この性能比較も32GPUで、DGX-1 4台と、DGX-2 2台をInfiniBandでつないだ構成で比較すれば、どちらもInfiniBand部分のバンド幅やレイテンシが制約となり、両者の性能比はもっと縮まるのではないかと思うが、それでもやはり、低レイテンシ、高バンド幅で、かつ、少ないホップ数で多数のGPUを接続できるNVSwitchの存在は性能メリットが大きい。

また、NVSwitchでの接続がどこまで延ばせるのか分からないが、一般論で言えば、スイッチをカスケードにつないで、さらに大規模なネットワークを作れる可能性がある。そうなれば、より大規模な問題まで、カバーすることができると期待される。