SHARPの有無による性能差はどの程度か?
次の図は、全ノードの総和を求めて、それを全ノードに放送するAllreduceという処理を128ノードのネットワークで実行した場合のレーテンシを示すグラフである。左のグラフはデータサイズが8Bと128Bと短いデータの場合で、左のグラフは1024Bと2048Bとデータサイズが大きい場合のグラフである。
実線のグラフがSHARPを使用した場合で、破線のグラフがSHARPを使わずソフトウェアで実行した場合のレーテンシを示す。そして、2本ずつの実線と破線は、データサイズが大きいグラフ(128B、あるいは2048B)と小さい場合のグラフである。
横軸はノード数で、ノード数が小さい場合はSHARPを使用によるレーテンシの短縮はあまりないが、ノード数が多くなると差が付いてくる。破線のSHARP無しはノード数の増加に伴ってレーテンシが長くなっているが、SHARPを使うと16ノードを超えるとレーテンシはほぼ一定で、ノード数が増えてもほとんどレーテンシは長くなっていない。
左の棒グラフはAllreduceのレーテンシを示すもので、左のグラフは1500ノードでノード当たりのプロセサ数は1のケースであり、横軸のデータサイズは8Bから2048Bとなっている。青色の棒グラフはSHARP使用、オレンジの棒グラフはSHARPを使わずソフトウェアで実行した場合のレーテンシを示す。
右の棒グラフは1500ノードであるが、ノード当たり40プロセサであるので、MPIのランク数は60Kランクとなっている。
SHARPの使用で、左のグラフでは、5倍程度にレーテンシが短縮されている。右のグラフではノード当たりのプロセサが多く多くの通信を扱う必要があるので、左の1PPNの場合と比べて、SHARP無しでは8倍程度、SHARP有では5倍程度のレーテンシとなっている。つまり、SHARPを使用することにより、MPIのAllreduceは5倍以上高速に実行できている。
次のグラフは、32台のNVIDIAのDGX1Vを使いDGX 1台に付き4本のConnectX-6で接続し、NCCLでAllreduceを行った場合のバンド幅を示す。バッファサイズが1MBの場合はSHARPを使用しても改善は見られないが、バッファサイズが1024MBの場合はSHARP無しでは伝送バンド幅が40GB/s程度であるのに対して、SHARPを使うと70GB/sを超えるバンド幅に向上している。
次の図はMLPerfの言語翻訳のベンチマークとfacebookのVAE(Variable Auto-Encoder)ベンチマークでのSHARPの使用と不使用の場合の性能を比較したものである。どちらもSHARPを使うことにより18%性能が高くなっている。
InfiniBandは例えば100GB/sの物理バンド幅を持っているが、それを高優先度の通信用と低優先度の通信用に分割し、さらにそれらを多くのVirtual Linkに割り当てて使用している。Mellanoxは、この割り当てのやり方をコントロールして混雑を緩和し、通信の質を高めている。
次のグラフはGPCNetのベンチマークでの通信の混雑の影響を示すもので、左端の2つのグループがMellanoxのEDRで混雑コントロールの無い場合とHDRで混雑コントロールがある場合である。記法の記述が無いが、棒グラフの上についている髭が混雑による変化の範囲を示しているものと思われる。
このグラフによるとEDRで混雑コントロールが無い場合は、ある程度の髭がでているが、HDRで混雑コントロール有の場合は、ほとんど混雑による性能の変動が見られない。
他の棒グラフはCrayのAriesネットワークや、他社のEDR InfiniBandの結果であるが、MellanoxのHDRで混雑コントロール有が最も良い結果を示している。
また、多少遠回りでも混雑を減らす経路に替える方がネットワーク全体の性能を改善することができる場合が多い。次の2つの図はネットワークの利用状況を示す図である。左の図は混雑コントロールを行っていない状態で、ネットワーク利用率が30%台や50%程度の状態も見られ、混雑でネットワークが十分に利用できていないという状況が起こっている。一方、右の図は混雑を避ける経路を適応的に選択する制御を行った場合のもので、安定的に90%を超える高いネットワーク利用率が得られている
さらに、InfiniBandはFat Tree、Hypercube、Torus、Dragonflyなど各種の接続形態をサポートしており、用途に応じたネットワークトポロジを選択することができる。