DragonflyトポロジのAriesインタコネクト
Dragonflyトポロジであるが、シャシー内の16ブレードはRank1の15本のリンクを使ってどのブレードもすべての他のブレードに繋がっている完全結合(あるいは全対全接続)を行う。そして、2筐体のグループ内の6つのシャシー間の対応するブレード間を完全結合する。これに必要な接続は5本であるが、Rank2には15リンクが割り当てられているので、それぞれの接続は3リンクが束になっていると思われる。
そしてグループ間の光ファイバによる接続は、それぞれのファイバがRank3の4リンクを収容しており、2筐体のグループから240本のファイバが出ている。この240本の光ファイバでグループ間を完全結合する。グループ間を光ファイバを1本で接続すれば最大241グループを接続できるが、システムの規模が小さい場合は、グループ間に複数本の光ファイバを束ねて使うこともできる。
Dragonflyはこのような接続になっているので、迂回をしなければRank1-Rank2-Rank3-Rank2-Rank1と5回のホップでどのノードにでも到達できる。これに対して、3Dトーラスの場合は、最悪の場合はX、Y、Z軸それぞれのブレード数の半分のホップ数が必要となる。つまり、Dragonflyトポロジは3Dトーラスより伝送遅延を小さくすることができる。また、Fat Treeトポロジの場合はグループ内の接続を行うLeaf Switchとグループ間をつなぐSpine Switch間の接続が必要となるが、Dragonflyの場合はグループ間を直結するので、同じグローバルバンド幅の場合、光ファイバの接続本数を半減でき、コスト的に有利であるという。
なお、Ariesインタコネクトでは、混雑している場所や故障したノードを避けて、迂回するアダプティブルーティングもサポートしている。ただし、この場合はホップ回数は増加する。
同じAriesチップに接続された2つのノード間の通信遅延はメッセージサイズの小さいMPI通信の場合で1.2μs程度であり、メッセージサイズが256バイトを超えるとバンド幅の制約で通信遅延の増加が見えてくる。また、異なるブレード間の通信の場合は、1ホップにつき100ns程度遅延が増加する。
次のグラフは通信バンド幅を測定した結果で、メッセージサイズが大きい場合は片方向で9GB/s強、両方向同時通信deha15GB/s強の性能が得られている。ただし、これは同じAries LSIに繋がっているノード間の通信で、インタコネクトのケーブルは経由していないケースである。また、256バイトのメッセージサイズで最大値の半分程度のバンド幅が得られており、小さなメッセージでも効率よく伝送できることを示している。
次の図は2グループの720ノードの構成で、ランダムに全対全の通信を行った場合の通信バンド幅の測定結果である。常に最短の5ホップの経路で送った場合の測定値が一番下の線で約3GB/s、メッセージサイズが小さい場合は3GB/sを下回るという結果である。一番上の線は、Adaptive Prefer-Minimalという方針の場合で、混雑を避けてアダプティブに迂回するが、混雑していない場合は最短の5ホップの経路を優先して使うというもので、通信バンド幅は5GB/s程度に向上している。
各ノードで計算を分担して処理を行い、その後で各ノードの結果の合計を求めるというのは良く出てくるパターンである。多分、前記と同じ720ノードの構成で、各ノードに複数のプロセスを走らせ、それらのプロセスの処理結果の合計をMPI_Allreduceで求めた場合の結果が次のグラフである。
上の線はこの合計を求める処理をソフトウェアで行った場合で、プロセス数が2000の場合、20μs弱の時間がかかる。そして、プロセス数が12000になると30μs弱の時間がかかっている。下の線は、Areisのハードウェア機能を利用した場合の測定値で、プロセス数への依存性はソフトウェアの場合より小さく、7~10μs程度で合計を求めることができている。
ということで、Dragonflyトポロジを使うAriesインタコネクトは、3Dトーラスと比較するとホップ数が少ないので遅延時間が短く、同じグローバルバンド幅のFat Treeと比べると高価な光ファイバリンクの本数が半分で済み経済的である。また、アダプティブに混雑を迂回するルーティングをサポートしており、全対全の輻輳した通信状況でも高いバンド幅を維持することができるという。