(57)【要約】【課題】  プログラム・タスク間での全対全メッセージ交換のための、方法および装置を提供する。【解決手段】  プログラム・タスクは、Ｎ＞１の階層レベルｌｎを備え、ｎ＝１からＮである、階層型ネットワーク・トポロジを用いる相互接続ネットワークによって接続され、第１のレベルｌ１はタスクの複数のグループを備え、各上位レベルｌ（ｎ＞１）はレベルｌ（ｎ−１）グループの少なくとも１つのグループを備える。固有の階層識別子は各タスクについて定義され、階層識別子は、ネットワーク・トポロジのそれぞれの階層レベルにおいて、そのタスクが属するグループに依存する。交換の連続相のそれぞれにおいて、各タスクは、送信側タスクの階層識別子およびネットワーク・トポロジに基づいて、その階層識別子が決定されるそれぞれの宛先タスクにネットワークを介してメッセージを送信し、結果として生じる全対全メッセージ交換のための交換パターンが、前記ネットワーク・トポロジにおける階層距離を所望の様式で活用する。【選択図】  図７
2014164756.tif 000002
【特許請求の範囲】
【請求項１】
Ｎ＞１の階層レベルｌｎを備え、ｎ＝１からＮである、階層型ネットワーク・トポロジを用いる相互接続ネットワークによって接続されたプログラム・タスク間での、全対全メッセージ交換のための方法であって、第１のレベルｌ１は前記タスクの複数のグループを備え、各上位レベルｌ（ｎ＞１）はレベルｌ（ｎ−１）グループの少なくとも１つのグループを備え、
各タスクについて、前記ネットワーク・トポロジのそれぞれの階層レベルにおいて、そのタスクが属する前記グループに依存する固有の階層識別子を定義すること、および、
送信側タスクの前記階層識別子および前記ネットワーク・トポロジに基づいて、各タスクで、前記交換の連続相のそれぞれにおいて、その階層識別子が決定されるそれぞれの宛先タスクに前記ネットワークを介してメッセージを送信することであって、結果として生じる全対全メッセージ交換のための交換パターンが、前記ネットワーク・トポロジにおける階層距離を所望の様式で活用する、前記送信すること、
を含む、方法。
【請求項２】
同じ階層レベルｌｎ内のすべてのグループが同じサイズＭｎを有し、
固有のサブグループ・ラベルｓｉ、ｉ＝１からＭｎが、各レベルｌｎグループ内の各タスクについて、および各レベルｌ（ｎ＞１）グループ内の各レベルｌ（ｎ−１）グループについて、定義され、
前記タスクについての前記階層識別子が、それぞれの階層レベルに対応するＮ個の識別子要素のセットを有し、階層レベルｌ１に対応する前記識別子要素ｍ１が、そのタスクに関する前記サブグループ・ラベルにｓｉに依存し、階層レベルｌ（ｎ＞１）に対応する前記識別子要素ｍ（ｎ＞１）が、そのタスクが属する前記レベルｌ（ｎ−１）グループに関する前記サブグループ・ラベルにｓｉに依存する、
請求項１に記載の方法。
【請求項３】
各サブグループ・ラベルｓｉ＝（ｉ−１）である、請求項２に記載の方法。
【請求項４】
前記タスクについての前記階層識別子において、前記識別子要素ｍ１がそのタスクについての前記サブグループ・ラベルｓｉであり、各識別子要素ｍ（ｎ＞１）がそのタスクが属する前記レベルｌ（ｎ−１）グループに関する前記サブグループ・ラベルｓｉである、請求項２または３に記載の方法。
【請求項５】
前記交換で送信される各メッセージについて、そのメッセージに関する前記宛先タスクの前記階層識別子が、前記交換の各連続相についてその値が変化する相インデックスにさらに依存する、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記相インデックスが、前記階層識別子のそれぞれの識別要素ｍｎに対応するＮ個の相要素ｐｎのセットを備える、請求項２に依存する請求項５に記載の方法。
【請求項７】
前記相インデックスｐが、前記交換の各連続相について、
【数１】
2014164756.tif 000025
を満たす整数値の異なる１つを取り、前記Ｎ個の相要素ｐｎが、各相要素ｐｎが基数Ｍｎに対応する前記値の可変基数表現を提供する、請求項６に記載の方法。
【請求項８】
前記交換の前記相のそれぞれで送信される各メッセージについて、そのメッセージに関する前記宛先タスクの前記階層識別子の前記Ｎ個の識別要素が、
【数２】
2014164756.tif 000026
として決定され、上式で
【数３】
2014164756.tif 000027
が前記宛先タスクの前記階層識別子のｎ番目の識別要素であり、
【数４】
2014164756.tif 000028
が前記メッセージに関する前記送信側タスクの前記階層識別子のｎ番目の識別要素である、
請求項７に記載の方法。
【請求項９】
各レベルｌｎグループに属する前記タスクについて、各タスクについてオフセット値Ｏが定義され、前記オフセット値がそのグループ内のタスク間で固有であり、
前記交換の各相において各タスクによって送信される各メッセージについて、そのメッセージに関する前記宛先タスクの前記階層識別子が、前記相に関する前記相インデックスｐ、および、そのタスクがそれぞれの階層レベル内で属する前記グループ内の前記タスクについて定義された前記オフセット値に依存する、オフセット相表現ｐｓに依存する、
請求項７に記載の方法。
【請求項１０】
前記交換の各相において各タスクによって送信される各メッセージについて、前記オフセット相表現ｐｓが、
【数５】
2014164756.tif 000029
のように、前記相に関する前記相インデックスｐのそれぞれの対応する相要素ｐｎに依存する、Ｎ個の構成要素
【数６】
2014164756.tif 000030
を含み、
ｎ＞１の場合、前記対応する相要素ｐｎ＝０であれば、
【数７】
2014164756.tif 000031
であり、そうでなければ、
【数８】
2014164756.tif 000032
＝１プラス（Ｍｎ−１）を法とする（ｐｎ−１）の合計、および、そのタスクが属する前記レベルｌ（ｎ−１）グループ内のそのタスクに関する前記オフセット値Ｏである、
請求項９に記載の方法。
【請求項１１】
前記交換の前記相のそれぞれで送信される各メッセージについて、そのメッセージに関する前記宛先タスクの前記階層識別子の前記Ｎ個の識別要素が、
【数９】
2014164756.tif 000033
として決定され、上式で
【数１０】
2014164756.tif 000034
が前記宛先タスクの前記階層識別子のｎ番目の識別要素であり、
【数１１】
2014164756.tif 000035
が前記メッセージに関する前記送信側タスクの前記階層識別子のｎ番目の識別要素である、
請求項１０に記載の方法。
【請求項１２】
各タスクの２次識別子を、可変基数ＭＮ、Ｍ（Ｎ−１）、．．．、Ｍｋ＋２、Ｍｋ＋１、Ｍ１、Ｍ２、．．．、Ｍｋにおけるそのタスクのタスク・インデックスｔの表現として定義することを含み、ここでｋは、１≦ｋ≦Ｎとなるような所定の調整パラメータであり、前記タスク・インデックスｔが、可変基数表現で前記タスクに関する前記階層識別子のＮ個の要素ｍｎの前記セットによって示される値であり、各識別子要素ｍｎが基数Ｍｎに対応し、それによって前記２次識別子は、それぞれの基数Ｍｊに対応するＮ個の２次要素ｍｊのセットを含み、ここでｊ＝Ｎ、（Ｎ−１）、．．．、ｋ＋２、ｋ＋１、１、２、．．．、ｋであり、
前記交換の前記相のそれぞれで送信される各メッセージについて、そのメッセージに関する前記宛先タスクの前記階層識別子が、前記交換の各連続相について、整数値
【数１２】
2014164756.tif 000036
の異なる１つを取る相インデックスｐにさらに依存し、前記相インデックスｐが、前記可変基数ＭＮ、Ｍ（Ｎ−１）、．．．、Ｍｋ＋２、Ｍｋ＋１、Ｍ１、Ｍ２、．．．、Ｍｋにおける前記整数値の可変基数表現を提供する、Ｎ個の相要素ｐｊのセットを含み、
前記交換の前記相のそれぞれで送信される各メッセージについて、そのメッセージに関する前記宛先タスクの前記階層識別子の前記Ｎ個の識別要素が、前記宛先タスクの前記２次識別子を、
【数１３】
2014164756.tif 000037
として取得することであって、上式で
【数１４】
2014164756.tif 000038
は、前記宛先タスクの前記２次識別子のｊ番目の要素であり、
【数１５】
2014164756.tif 000039
は、前記メッセージに関する前記送信側タスクの前記２次識別子のｊ番目の要素である、取得することによって、およびその後、前記宛先タスクの前記２次識別子の前記Ｎ個の要素
【数１６】
2014164756.tif 000040
を、前記基数Ｍｎの順に変えることであり、ｎ＝１からＮである、変えることによって、決定される、
請求項３および４に記載の方法。
【請求項１３】
前記ネットワークが、前記階層のレベルｌｃ内の前記グループが前記タスクを含む計算ノードに接続されたそれぞれのスイッチに対応する、ドラゴンフライ・ネットワークを含み、ここで、各計算ノードが単一のタスクを含む場合はｃ＝１であり、各計算ノードが複数のタスクを含む場合はｃ＝２であり、各レベルｌｃ＋１グループは、それぞれが遠距離リンクを介して少なくとも１つの他のレベルｌｃ＋１グループ内のスイッチに接続されたレベルｌｃスイッチの局所グループに対応し、各レベルｌｃ＋２グループは、レベルｌｃ＋１グループのグループに対応し、前記交換の連続相において、各タスクは、
ａ．そのタスクと同じ計算ノード内のタスク
ｂ．そのタスクと同じレベルｌｃスイッチに接続された計算ノード内のタスク
ｃ．スイッチＳと同じレベルｌｃ＋１局所グループ内のスイッチに接続された計算ノード内のタスク
ｄ．当該遠距離リンクを介して当該スイッチＳに接続された、当該少なくとも１つの他のレベルｌｃ＋１グループ内の、スイッチＳ’に接続された計算ノード内のタスク
ｅ．当該スイッチＳ’と同じレベルｌｃ＋１局所グループ内のレベルｌｃスイッチに接続された計算ノード内のタスク
ｆ．当該遠距離リンクを介して当該スイッチＳと同じレベルｌｃ＋１局所グループ内の別のスイッチに接続された、当該少なくとも１つの他のレベルｌｃ＋１グループ内の、スイッチＳ’に接続された計算ノード内のタスク
ｇ．すべての他のタスク
の順に選択されたそれぞれの宛先タスクにメッセージを送信する、
請求項１から７のいずれか一項に記載の方法。
【請求項１４】
前記交換の結果として生じる相が他の相順序で実行される、請求項１３に記載の方法。
【請求項１５】
各タスクで、前記交換の各相で送信される前記メッセージについて、前記宛先タスクの前記階層識別子を動的に決定することを含む、請求項１から１５のいずれか一項に記載の方法。
【請求項１６】
システムの相互接続ネットワークによって接続されたプログラム・タスクを含む、複数の計算ノードを備える並列コンピューティング・システムであって、前記ネットワークが、Ｎ＞１の階層レベルｌｎを備える階層ネットワーク・トポロジを有し、ｎ＝１からＮであり、第１のレベルｌ１は前記タスクの複数のグループを備え、各上位レベルｌ（ｎ＞１）はレベルｌ（ｎ−１）グループの少なくとも１つのグループを備え、前記システムが、前記プログラム・タスク間での全対全メッセージ交換のために、請求項１から１５に記載の方法を実行するように適合される、並列コンピューティング・システム。
【請求項１７】
前記ネットワークがファット・ツリー・ネットワークであり、前記システムが、前記プログラム・タスク間での全対全メッセージ交換のために、請求項８に記載の方法を実行するように適合される、請求項１６に記載のシステム。
【請求項１８】
前記ネットワークがドラゴンフライ・ネットワークを含み、前記システムが、前記プログラム・タスク間での全対全メッセージ交換のために、請求項１１に記載の方法を実行するように適合される、請求項１６に記載のシステム。
【請求項１９】
前記ネットワークがスリム・ファット・ツリー・ネットワークを含み、前記システムが、前記プログラム・タスク間での全対全メッセージ交換のために、請求項１２に記載の方法を実行するように適合される、請求項１６に記載のシステム。
【請求項２０】
前記ネットワークがドラゴンフライ・ネットワークを含み、前記システムが、前記プログラム・タスク間での全対全メッセージ交換のために、請求項１３または１４に記載の方法を実行するように適合される、請求項１６に記載のシステム。
【請求項２１】
前記システムの少なくとも１つのプログラム・タスクを含む計算ノードであって、前記システムの前記プログラム・タスク間での全対全メッセージ交換のために、前記システムの他の計算ノードと集合的に、前記方法を実行するように適合される、請求項１６から２０のいずれか一項に記載の並列コンピューティング・システムの計算ノード。
【請求項２２】
前記他の計算ノードと集合的に、全対全メッセージ交換のために、請求項２１に記載の計算ノードに前記方法を実行させるためのプログラム・コード手段を備える、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、並列コンピューティング・システムにおける全対全メッセージ交換（all-to-all message exchange）動作に関する。階層型相互接続ネットワークによって接続されたプログラム・タスク間での、全対全メッセージ交換のための方法、ならびにこうした方法を実装するための装置およびコンピュータ・プログラムが提供される。
【背景技術】
【０００２】
並列コンピューティング・システムにおいて、プログラムは、並列に動作している複数の計算ノードによって実行可能である。計算ノードは、一般に、並行処理が実装されるハードウェア・レベルに応じて、別々のマシン（たとえばワークステーション、サーバ）、プロセッサ、コアなどであってよい。個々の計算ノードは、並列アルゴリズムの並列プログラム・エンティティまたはタスクのうちの１つまたは複数を実行することができる（本明細書において「タスク」という用語は、一般に、いずれの特定レベルの細分性をも暗示することなく、こうしたプログラム・エンティティを表す）。ほとんどの並列アルゴリズムは計算と通信の相を交互に行い、データはプログラム・タスクによって交換される。集合的に並列アルゴリズムを実装する計算ノードのセットは、通常、このデータ交換を可能にするためにネットワークを介して相互接続される。
【０００３】
並列タスクのグループ間でデータが交換される方法は多様であるが、実際には、１ペアを超えるタスクが関与しているほとんどのデータ交換は、小規模の典型的な交換セットにマッピング可能である。最も幅広く使用される集合的な通信動作の１つが、全対全交換である（時には、全交換、インデックス動作、または個人化全対全交換と呼ばれる）。全対全メッセージ交換において、所与のセット内の各タスクは、１つの別個のメッセージをそのセット内のあらゆる他のタスクに（また、いくつかのケースではそれ自体にも）送信しなければならない。交換動作は、典型的には連続相に編成され、その数は各タスクによって送信されることになるメッセージの数に等しいため、各タスクは交換の各相において１つのメッセージを送信する。全体的な交換パターン、すなわち、交換の連続相において、ソース（送信側）タスクが宛先（受信側）タスクと通信する際に従うパターンは、交換の全体的な効率の基本である。これを検証するための簡単な方法は、所与の相においてすべての送信側タスクが同じ宛先タスクを同時に選択するという、極端なケースを考えることである。受信者の入力ポートでのメッセージのシリアル化により、すべての送信者は輻輳を体験することになる。相互接続ネットワーク内でのこれらすべてのメッセージのブロックによってさらに輻輳が生じ、性能に重大な影響を与える可能性がある。この極端な例は容易に回避され、ほとんどの全対全交換の提案がこの特定のシナリオに対処する。
【０００４】
形式上、全対全交換パターンは、ソース・タスク・インデックス（ｓ）及び相インデックス（ｐ）を採用し、それらを宛先タスク・インデックス（ｄ）にマッピングする、関数
【数１】
2014164756.tif 000003
によって完全に特徴付けられるため、各ｓは１つ（および唯一）のメッセージを各ｄに送信し、各ｄは１つ（および唯一）のメッセージを各ｓから受信することになる。ほとんどの通信ライブラリ内にある２つの非常に一般的な交換は、
（ａ）
【数２】
2014164756.tif 000004
で表される線形シフト（又は「ストライド化（ｓｔｒｉｄｅｄ）」）交換、および
（ｂ）
【数３】
2014164756.tif 000005
で表されるＸＯＲ（「２進ＸＯＲ」又は「再帰的２分化（recursive halving）」）交換、であり、
上式で「ｓｈｉｆｔ」は固定整数値であり、Ｘは通信しているタスクの合計数である。
【０００５】
タスクがそれを介して接続される相互接続ネットワークの厳密な構造は、メッセージ交換動作に対して強い影響を与える。こうしたネットワークは、一般に、何らかの形の階層型ネットワーク・トポロジを有する。階層型ネットワークは、ドラゴンフライ（dragonfly）ネットワークなどの明示的に階層型のトポロジ、並びに、ツリー・ネットワーク及びファット・ツリー・ネットワーク（拡張一般化ファット・ツリー、スリム化ファット・ツリーなどを含む）などのツリー型トポロジを含む。これらについて、以下で簡単に説明する。
【０００６】
ツリー型トポロジでは、階層は、ツリーのリーフ（レベル０）からルート（レベルＮ）までの一連のレベルによって定義される。タスクはリーフ・ノード上に配置されるものとみなされ、他のすべてのノードはメッセージ・ルーティングに使用される。添付の図面の図１は、計算ノード当たり１タスクの３レベル・ツリー相互接続の単純な例を示す。ここで、円で表される計算ノードは、ツリーのレベル０においてリーフを形成する。より上位のレベルはスイッチ（四角で表される）で構成され、それぞれがリンク（線で表される）を介して直前のレベル内の派生または「子」のグループに接続される。図示された例で、レベル１スイッチは、レベル０内の３つの計算ノードのグループにそれぞれ接続される。レベル２スイッチは、３つのレベル１スイッチのグループにそれぞれ接続される。この例の最上位レベルであるレベル３は、ここでは単一スイッチからなり、先行レベル内の３つのスイッチのグループに再度接続される。良く知られたファット・ツリー・ネットワーク・トポロジは、こうした標準ツリー・トポロジと同様に、レベル０のリーフ上にＮ個のレベルを有し、レベルｌ上の各ノードは正確にＭｌの派生を有するが、任意の所与のノードとその親との間の接続が複数のリンクで構成されるという相違点がある。オリジナルの設計では、ノードから親までが使用可能なリンク容量は、そのノードの子からそれ自体までの総リンク容量に等しかった。したがって、レベルｌでの各上方リンクの総容量は、上方リンクが開始するノードから到達可能なリーフに、ノード当たりの注入容量を掛け合わせた合計数に等しい（Ｍ１・Ｍ２・．．．・Ｍｌに等しく、「・」は乗算を示す）。この数はツリーの高さと共に指数関数的に大きくなるため、拡張一般化ファット・ツリー（ＸＧＦＴ）の概念が導入される。このクラスのトポロジは、ネットワークのルートに向かって容量が指数関数的に増加するスイッチを必要とせずに、基本のファット・ツリー・ネットワークのそれと機能的に同様の設計を達成する。ＸＧＦＴは、現在、高性能コンピューティングにおける相互接続設計のための最も普及しているオプションの１つである。
【０００７】
ドラゴンフライ・ネットワークは、図２が示す別の良く知られた階層型ネットワークの単純な例である。この例は、階層のレベル１で、それぞれのスイッチ（再度四角で表される）に２つずつのグループで接続された計算ノード（再度円で表される）あたり１タスクを有する。図中では、上位レベルは破線で示される。レベル２は４つのグループのレベル１スイッチを備え、各レベル２グループは、ここでは３つの相互接続されたレベル１スイッチの「局所グループ」を備える。ここでの最上位レベルであるレベル３は、すべてが４つのレベル２局所グループを含む、単一のグループを備える。
【０００８】
所与の全対全交換動作は、基礎となるトポロジにかかわらず正常に完了可能であるが、結果として交換パターンは次善の性能となる可能性がある。例として、図３は、図４に示された階層型ネットワーク・トポロジを用いて、相互接続ネットワークによって接続された１６のタスク間での線形シフト交換に関する交換パターンを示す。ここで特定のネットワーク実装は、リーフ・レベルのそれぞれの計算ノードに配置された１６の通信タスク、４つの第１レベル・スイッチ、および単一の第２レベル・スイッチを伴う、（Ｎ＝２）レベルのツリー型ネットワークとすることができる。ここではｌ１とラベル表示されたトポロジ階層の第１のレベルは、それぞれが４つのタスクからなる４つのｌ１グループを備える。ｌ２とラベル表示された次の（ここでは最上位の）レベルは、４つすべてのレベルｌ１グループからなる、単一のｌ２グループを備える。図３の交換パターンは、シフト値０を伴うこのトポロジにおける線形シフト交換パターンを示す。タスクは、図の左側に０から１５の番号が付けられた円で示される。図の連続列内の線は、交換の１６の連続相における送信側タスクと宛先側タスクのペアリングを示す。相０では、破線によって示されるように、各タスクはそれ自体にメッセージを送信する。
【０００９】
図３の交換パターンの考察から、線形シフト交換関数がネットワーク・トポロジのレイアウトを完全に無視することが明らかである。したがって、この交換パターンはトポロジの階層構造には気付かず、送信側ノードと受信側ノードとの間の階層距離（すなわち、通信のためにトラバースしなければならない階層レベル数）は考慮しない。しかしながら、階層距離の概念は階層型ネットワークの基本であり、これらのトポロジにおいて固有の局所性／遠隔性の概念を提供する。タスクのペアを区切る階層レベルが少ないほど、タスクは「近く」、すなわちそれらの間の経路は短く、互いに到達するための待ち時間は短い。
【００１０】
図５は、図４の階層型ネットワーク・トポロジに関するＸＯＲ交換アルゴリズムで取得される交換パターンを示す。第１の４つの相は、同じレベルｌ１グループ内のタスク間での局所交換を処理することが理解できよう。後続の相は、異なるレベルｌ１グループ内のノード間での交換を処理する。この単純な例によって示されるように、このネットワーク・トポロジにおけるＸＯＲ交換パターンの適用の結果、メッセージ交換は、遠隔性の増加順に実行されることになる。したがって、同じノード上に共設されたタスクは、（計算ノードあたり複数のタスクが存在する場合）第１にそれらの間の交換を実行し、次に（階層的な意味で）隣接するノード内のタスクが排他的にそれらの間で交換を実行する（したがって、ノード内交換は除外される）、という具合に、階層を通じて進行していく。これには、トラフィックが、大多数の相内でより下位レベルにできる限り多くのトラフィックが含まれることを保証し、さらに、所与の相内のすべてのペア間で（競合が存在しない場合）通信待ち時間は一定である、という利点がある。これにより、それぞれの相内により良い同期化が提供される。非同期化は、後続の相が重複し、したがって追加の競合が発生すること、または後続の相間にギャップが出現することの、いずれかを暗示するため、同期化は交換の全体性能を最適化する際に重要な要素である。
【００１１】
ＸＯＲ交換の重大な制限は、タスクが配置可能な相互接続されたノードの数が２の整数累乗である場合にのみ使用可能である、ということである。これは、ドラゴンフライ・ネットワークを含む実際的関心事の多くのネットワークを除外する。さらに、ＸＯＲ交換は、適用が２の累乗数のタスク内で区切られる場合にのみ、使用可能である。実際にアルゴリズムは、この制限されたクラスのネットワークに対するその適用の制約を通じて、上記で説明した「遠隔性増加」機能を達成するのみである。アルゴリズム自体は、真のネットワーク・トポロジに依然として気付かず、物理ネットワーク階層に関係なく、単にソース・タスク・インデックスｓおよび相インデックスｐの２進表現のビット単位の２を法とする加算を実行する。たとえば図４および図５の例では、ＸＯＲ交換は、各レベルｌ１グループ内に２つのタスクがあり、各レベルｌ（ｎ＞１）グループが２つのレベルｌ（ｎ−１）グループを含む、４つのレベルを有するオーバーレイ・トポロジの場合のように挙動する。したがって、図４のネットワーク・トポロジ内のそれぞれの実際の階層レベルは、２つのオーバーレイ・レベルに効果的に分離される。したがって局所交換および遠隔交換を、１つが一方のオーバーレイ下位レベルを含み、１つが他方を含む、２つの別々のカテゴリに分化することがわかる。したがって、ＸＯＲ関数がメッセージの宛先タスクを決定する方法が、実際のネットワーク・トポロジには依存せず、制限されたクラスのネットワーク・トポロジにのみ課せられる可能性のある単純なオーバーレイ構造に依存していることが理解できる。
【００１２】
実際、並列コンピューティング・システムは、特に基礎となるネットワーク・トポロジに関して、ＸＯＲ交換関数を使用するために必要な制限にほとんど準拠しない。そのため、より効果的ではないが、より一般的な、前述の線形シフト交換の使用をしばしば採用する。元のノード数の２の累乗の下位区分におけるＸＯＲパターンの不均衡かつ次善の適用は、Thakur等による「Optimization of Collective CommunicationOperations in MPICH」、２００５年春、International Journal of HighPerformance Computing Applications, Vol.19, No.1, 49〜66ページでも提案されている。Sanders等による「The Hierarchical Factor Algorithm forAll-to-All Communication」、2002年、Proceedingsof the 8th International Euro-Par Conference on Parallel Processing, LNCS 2400、799〜803ページでは、ノード・サイズ（ノード内のプロセッサの数）の順にメッセージが交換される、異なる数のプロセッサを有するノードを伴う階層型システムについての手法が記載されている。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】Thakur等による「Optimization of Collective CommunicationOperations in MPICH」、２００５年春、International Journal of HighPerformance Computing Applications, Vol.19, No.1, 49〜66ページ
【非特許文献２】Sanders等による「The Hierarchical Factor Algorithm forAll-to-All Communication」、2002年、Proceedingsof the 8th International Euro-Par Conference on Parallel Processing, LNCS 2400、799〜803ページ
【発明の概要】
【発明が解決しようとする課題】
【００１４】
階層型ネットワークのための全対全交換動作における改良が、非常に望ましい。
【課題を解決するための手段】
【００１５】
本発明の第１の態様は、Ｎ＞１の階層レベルｌｎを備え、ｎ＝１からＮである、階層型ネットワーク・トポロジを用いる相互接続ネットワークによって接続されたプログラム・タスク間での、全対全メッセージ交換のための方法を提供し、ここで第１のレベルｌ１は当該タスクの複数のグループを備え、各上位レベルｌ（ｎ＞１）はレベルｌ（ｎ−１）グループの少なくとも１つのグループを備える。方法は、
各タスクについて、ネットワーク・トポロジのそれぞれの階層レベルにおいて、そのタスクが属するグループに依存する固有の階層識別子を定義すること、および、
送信側タスクの階層識別子およびネットワーク・トポロジに基づいて、各タスクで、交換の連続相のそれぞれにおいて、その階層識別子が決定されるそれぞれの宛先タスクにネットワークを介してメッセージを送信することであって、結果として生じる全対全メッセージ交換のための交換パターンが、ネットワーク・トポロジにおける階層距離を所望の様式で活用する、送信すること、
を含む。
【００１６】
したがって、本発明を具体化する方法は、タスクが通信する際に介するネットワークが階層トポロジを有するシステムにおいて、全対全メッセージ交換を提供する。タスクに関する階層識別子は、トポロジの異なる階層レベルにおいてそれらのタスクが属するグループに依存し、したがって、ネットワークに関する階層情報を取り込む。メッセージ交換プロセスの各相において、それぞれのタスクはそれぞれの宛先タスクにメッセージを送信し、それによって各タスクは各連続相においてメッセージを送信および受信する。所与の相でタスクを送信するために、各メッセージの宛先タスクの階層識別子は、送信側タスクの階層識別子およびネットワーク・トポロジの両方に基づいて決定され、ネットワーク・トポロジにおける階層距離を所望の様式で活用する。したがって、前述の従来の交換とは異なり、交換動作は、（たとえばＸＯＲ交換関数に埋め込まれたような、実際のネットワーク・トポロジの上に課せられたオーバーレイの何らかの固定トポロジとは対照的に）物理ネットワークの実際の階層トポロジに依存するという意味で、真に「トポロジを意識」している。これにより、ネットワーク・トポロジにおける階層距離を所望に応じて活用することが可能であり、階層型ネットワーク内に非常に効率的な交換パターンを提供する。さらに、本発明を具体化する方法は、前述のＸＯＲ交換のような制限されたクラスのネットワークに制約されることはない。以下に記載された例によって示されるように、本発明を具体化するトポロジを意識した交換方法は、著しい性能特典を提供し、様々な性能要件に容易に適合可能であり、様々なタイプの階層型ネットワークについて異なる基準に従った交換の最適化を可能にする。
【００１７】
本発明の実施形態における交換パターンは、ネットワーク・トポロジにおける階層距離を様々な方法で活用することができる。たとえば、交換パターンは、階層距離の増加の順に（全体的または部分的に）メッセージ交換を実装することができる。したがって交換は、前述のように、「遠隔性増加」の順に実行可能である。いくつかの実施形態は、負荷分散、待ち時間、相内同期化、または帯域幅効率などの、動作のいくつかの特定の態様を改良するために、さらに適合される。本発明を具体化するいくつかの交換では、交換パターンはある程度遠隔増加の順に進行し、所望の程度の帯域幅最適化を達成するために、この順序から逸脱する。記載される特定の例では、交換パターンは、遠隔性増加の程度が効果的に最小化され、完全な帯域幅最適化が達成されるように保証することによって、階層距離を活用する。
【００１８】
連続メッセージに関する特定順序の宛先タスクが各送信側タスクについて事前に計算される、実施形態が想定され得るが、各メッセージに関する適切な宛先タスクの階層識別子は、典型的には、各タスクで動的に決定される。したがって、本発明を具体化する方法は、好ましくは、各タスクで、交換の各相で送信されるメッセージに関する宛先タスクの階層識別子を動的に決定することを含む。
【００１９】
本発明の第２の態様は、システムの相互接続ネットワークによって接続されたプログラム・タスクを含む複数の計算ノードを備える並列コンピューティング・システムを提供し、ネットワークは、Ｎ＞１の階層レベルｌｎを備え、ｎ＝１からＮである、階層型ネットワーク・トポロジを有し、ここで第１のレベルｌ１は当該タスクの複数のグループを備え、各上位レベルｌ（ｎ＞１）はレベルｌ（ｎ−１）グループの少なくとも１つのグループを備え、システムは、当該プログラム・タスク間での全対全メッセージ交換のための本発明の第１の態様に従った方法を実行するように適合される。
【００２０】
本発明の第３の態様は、本発明の第２の態様に従った並列コンピューティング・システムの計算ノードを提供し、計算ノードは当該システムの少なくとも１つのプログラム・タスクを含み、当該システムの他の計算ノードと集合的に、システムのプログラム・タスク間での全対全メッセージ交換のための当該方法を実行するように適合される。
【００２１】
本発明の第４の態様は、本発明の第３の態様に従い、当該他の計算ノードと集合的に、全対全メッセージ交換のための当該方法を計算ノードに実行させるための、プログラム・コード手段を含む、コンピュータ・プログラムを提供する。計算ノードは何らかの形のコンピュータによって実装可能であり、「コンピュータ」という用語は、本明細書では最も一般的な意味で使用され、コンピュータ・プログラムを実装するためのデータ処理機能を有する、任意のデバイス、構成要素、またはシステムを含む。さらに、本発明を具体化するコンピュータ・プログラムは、独立プログラムを構成するか、またはより大きなプログラムの要素とすることが可能であり、コンピュータ内にロードするためのディスクまたは電子伝送などのコンピュータ読み取り可能媒体内に供給され、たとえば具体化されることが可能である。コンピュータ・プログラムのプログラム・コード手段は、当該の方法を、直接、あるいは、（ａ）他の言語、コード、または表記への変換、および（ｂ）異なる材料形式での再作成の、いずれかまたは両方の後に、コンピュータに実行させるように意図された命令セットの、任意の言語、コード、または表記での任意の式を含むことができる。
【００２２】
一般に、本明細書では、本発明の一態様の実施形態を参照しながら特徴が説明され、対応する特徴は、適宜、本発明の他の態様の実施形態において提供可能である。
【００２３】
ここで、本発明の好ましい実施形態について、添付の図面を参照しながら例として説明する。
【図面の簡単な説明】
【００２４】
【図１】ツリー型相互接続ネットワークの例を示す図である。
【図２】ドラゴンフライ・ネットワークの例を示す図である。
【図３】例示のネットワーク・トポロジに関する線形シフト交換パターンを示す図である。
【図４】図３の交換パターンに関するネットワーク・トポロジを示す図である。
【図５】図４のトポロジに関するＸＯＲ交換パターンを示す図である。
【図６】本発明を具体化する方法における、タスクおよび階層相互接続トポロジのグループへのサブグループ・ラベルの割り当てを示す図である。
【図７】本発明を具体化する第１の全対全交換方法に関する交換パターンを示す図である。
【図８】本発明を具体化する第２の全対全交換方法に関する交換パターンを示す図である。
【図９】本発明を具体化する第３の全対全交換方法におけるステップの順序付けを示す図である。
【図１０】本発明を具体化する第４の全対全交換方法に関する交換パターンを示す図である。
【発明を実施するための形態】
【００２５】
説明される方法は、通信中のプログラム・タスクが、階層型ネットワーク・トポロジを用いて相互接続ネットワークによってシステム内で接続される、並列コンピューティング・システムにおける全対全メッセージ交換を提供する。一般に、こうしたネットワーク・トポロジは、ここではｌｎで示されるＮ＞１階層レベルを備えるものとみなすことが可能であり、ここでｎ＝１からＮである。階層の第１のレベルｌ１は、複数グループのプログラム・タスクを備える。各上位レベルｌ（ｎ＞１）は、レベルｌ（ｎ−１）グループの少なくとも１つのグループを備える。
【００２６】
図６は、本発明を具体化する交換方法において、タスクに関して階層識別子がどのように定義されるかを説明するために使用されることになる例示のシステムのトポロジを示す。示された特定のトポロジは、計算ノードあたり１つのタスク、１２のレベル１スイッチ、４つのレベル２スイッチ、および１つのレベル３スイッチを伴う、ツリー型相互接続ネットワークに対応する。しかしながら、説明される原理は、他の階層型ネットワークに容易に拡張可能であることを理解されよう。
【００２７】
図６のトポロジにおいて、影付き円は集合的通信動作に関与する並列プログラム・タスクのセットに対応する。これらのタスクはそれぞれ、計算ノード上で実行しているソフトウェアによって実装される。この例で計算ノードあたり１タスクと想定すると、影付き円はそれぞれが１タスクを含むそれぞれの計算ノードを表す。階層の第１のレベルｌ１は、それぞれが３つのプログラム・タスクを含む、１２のレベルｌ１グループを備える。階層の第２のレベルｌ２は、それぞれが３つのレベルｌ１グループを含む４つのレベルｌ２グループを備える。ここでは最上位である階層の第３のレベルｌ３は、４つのレベルｌ２グループを含む単一のレベルｌ３グループを備える。結果として生じる構造は、同種の階層であり、それによって同じ階層レベルｌｎ内のすべてのグループは同じサイズＭｎを有する（ここでグループの「サイズ」は以前の階層レベルから含む要素の数（すなわち、レベルｌ１グループ内のタスクの数またはレベルｌｎグループ内のレベルｌ（ｎ−１）グループの数）として定義される）。したがって、示された例におけるグループ・サイズは、Ｍ１＝３、Ｍ２＝３、Ｍ３＝４である。Ｎレベル階層への一般化の場合、階層のレベルｌ１内のグループはＭ１の通信タスクで構成され、レベルｌ２内のグループはＭ２のレベルｌ１グループ（したがってＭ１・Ｍ２）タスクで構成され、ＭＮのレベルｌ（Ｎ−１）グループ、したがって、
【数４】
2014164756.tif 000006
の通信タスクで構成される、レベルＮまで同様であることが理解できよう。
【００２８】
固有の階層識別子が、システム内の各タスクについて定義される。タスクの階層識別子は、それぞれの階層レベル内でそのタスクが属するグループに依存する。好ましい実施形態において、階層識別子は、それぞれの階層レベルｌ１、ｌ２、．．．、ｌＮに対応するＮ個の値セット（本明細書では「識別子要素」と呼ばれる）ｍ１、ｍ２、．．．、ｍＮを含む。階層識別子は、以下の方法で取得される。固有のサブグループ・ラベルｓｉ、ｉ＝１からＭｎは、最初に各レベルｌ１グループ内の各タスクについて、および各レベルｌ（ｎ＞１）グループ内の各レベルｌ（ｎ−１）グループについて、定義される。代替が想定可能であるが、好ましい実施形態において、各サブグループ・ラベルはｓｉ＝（ｉ−１）であるため、ｓ１＝０、ｓ２＝１、以下同様であり、それによってサブグループ・ラベルｓｉは整数０、１、．．．、（Ｍｎ−１）である。タスクに関する階層識別子のＮ個の識別子要素ｍｎ（ｎ＝１からＮ）のセットにおいて、階層レベルｌ１に対応する識別子要素ｍ１は、そのタスクに関するサブグループ・ラベルｓｉに依存する。階層レベルｌ（ｎ＞１）に対応するさらなる各識別子要素ｍ（ｎ＞１）は、そのタスクが属するレベルｌ（ｎ−１）グループのサブグループ・ラベルｓｉに依存する。
【００２９】
前述のようなサブグループ・ラベルの割り当ては、図６内のタスクおよびグループのうちのいくつかについて示されている。説明される第１の交換方法において、識別子要素ｍ１は、単にそのタスクのサブグループ・ラベルｓｉに等しい。同様に、さらなる識別子要素ｍ（ｎ＞１）は、単にそのタスクが属するレベルｌ（ｎ−１）グループのサブグループ・ラベルｓｉである。このシステムに基づき、図内でｔ１とラベル付けされたタスクの階層識別子は、０，０，０となる。ｔ２とラベル付けされたタスクの階層識別子は、２，２，０となり、以下同様である。（しかしながら、サブグループ・ラベル付けステップでは、サブグループ／タスクのセット全体をラベル付けする明確な方法、Ｍ１！・Ｍ２！・．．．・ＭＮ！があり、これらのいずれも説明される方法で使用可能であることに留意されたい。）
【００３０】
本発明を具体化する交換方法は、階層識別子に加えて、交換プロセスの相に同様の表現を使用する。特定の相は、値が交換の各連続相によって変化する相インデックスによって識別される。説明されるいくつかの交換方法において、相インデックスｐは、当該階層識別子のそれぞれの識別要素ｍｎに対応するＮ個の相要素ｐｎのセットを含む。全対全交換プロセスには、通信タスクと同数の相が存在するため、相インデックスｐは、交換の連続相について、整数値
【数５】
2014164756.tif 000007
を通じて増分可能である。Ｎ個の相要素のセットｐ１、ｐ２、．．．、ｐＮは、可変基数Ｍ１、Ｍ２、．．．、ＭＮ内にこれらの値の可変基数表現を提供し、これによって各相要素ｐｎは基数Ｍｎに対応する。可変基数表現は、数の均一基数表現の良く知られた概念と同様であるが、あらゆる数字の基数があらゆる他の数字の基数に依存していないという点が異なる。例として、数の（均一な）基数１０表現において、いずれの数字も０から９の値（すなわち１０−１）を取ることが可能である。同様に、数の（均一な）基数２表現において、いずれの数字も０から１の値（すなわち２−１）を取ることが可能である。これに対して、可変基数（２，１０）表現では、最下位の数字は０から（２−１）の間の値を取ることが可能であり、最下位から２番目の数字は０から（１０−１）の間の値を取ることが可能である。この可変基数における数０、１、２、３、４は、００、１０、０１、１１、０２（一番左が最下位の数字）として表されることになる。相表現ｐ１、ｐ２、．．．、ｐＮに戻ると、ｑｒが積Ｍ１・Ｍ２・．．．・Ｍ（ｒ−１）によるｐの整数除算の商である場合、各数字ｐｒは、Ｍｒによるｑｒの整数除算の剰余として算出可能である。
【００３１】
前述の階層識別子は、ネットワークの初期セットアップ時、または集合的通信のための特定の並列タスク・セットの定義時に決定可能であり、各特定タスクの識別子を定義するために計算ノードのメモリ内に格納可能である。可変基数相表現は同様に、相インデックスｐがメッセージ交換の連続相に対して適切に増分できるように、計算ノードで定義される。タスク・セットによって全対全交換動作が実行される場合、各タスクは、交換の連続相のそれぞれにおけるそれぞれの宛先タスクに、ネットワークを介してメッセージを送信する。したがって各タスクは、正確に１つのメッセージを送信および受信するため、各相内の送信側タスクと宛先タスクとの間に１対１のペアリングが存在することになる。各送信側タスクからの各メッセージについて、ペアリングされる宛先タスクの階層識別子は、
送信側タスクの階層識別子および相互接続ネットワークのトポロジの両方に依存する交換アルゴリズム、ならびに相インデックスの値を介して、動的に決定される。交換アルゴリズムは、結果として生じる交換パターンがネットワーク・トポロジにおける階層距離を所望の様式で活用するようなものである。
【００３２】
本発明を具体化する第１の交換方法において、各メッセージに関する宛先タスクの階層識別子は、送信側タスクの階層識別子、および相の可変基数表現から、以下の交換関数
【数６】
2014164756.tif 000008
を介して決定され、上式で、
【数７】
2014164756.tif 000009
は、宛先タスクの階層識別子のｎ番目の識別要素であり、
【数８】
2014164756.tif 000010
は、送信側タスクの階層識別子のｎ番目の識別要素である。この関数を用いると、各ステップにおける加算はＭｎを法として実行されるため、相互接続ネットワーク階層の適切なレベルでの実際のグループ・サイズに依存する。この交換関数の効果は図７に示されている。この図は、各レベルｌ１グループにおける４つの通信タスク、および単一のレベルｌ２グループにおける４つのレベルｌ１グループに対応する、図４の階層トポロジを伴うシステムに対して結果として生じる交換パターンを示している。相０から３は局所（同じレベルｌ１グループ内のタスク間での交換に対応する）であり、残りの相は遠隔である。遠隔相については、明確にするために、第１のｌ１グループ内のタスクから開始される交換のみが示されている。（図７は、特定のサブグループ・ラベル付けシステムに対応する１つの可能な交換パターンのみを示していることに留意されたい。このラベル付けは交換の特性に対して直角であり、Ｍ１！・Ｍ２！・．．．・ＭＮ！の明確なラベル付けシステムのそれぞれは、新しい明確な交換パターンにつながる。）
【００３３】
図７から、この全対全メッセージ交換に関する交換パターンは、ネットワーク・トポロジにおける階層距離の増加順に進行することが理解できよう。特に、交換は第１に階層の最下位レベル内で実行され、次に階層の第２レベル内の同じ第１の階層レベル・グループに属さないノード間で排他的に実行され、以下同様に実行される。したがって、メッセージ交換は遠隔性増加の順に実行され、結果として前述の性能利点が生じる。さらに、ＸＯＲ交換とは対照的に、この交換は、物理ネットワークの実際の階層トポロジに忠実な方法で達成される。ＸＯＲ交換とは異なり、数式１によって定義される交換は、基礎となるいかなる物理ネットワークにもオーバーレイを課すことがなく、実際のネットワーク階層の本来のトポロジ特性を使用するのみである。
【００３４】
上記の交換プロセスの他の利点は、ツリー型ネットワーク（たとえば標準ツリー、および、ＸＧＦＴ、スリム・ファット・ツリーなどのそれらの様々な形のファット・ツリー）およびドラゴンフライ・ネットワークの両方を含む、直接および間接の階層型ネットワークに適用可能な点である。しかしながら、この第１の交換は本明細書で説明される実施形態の最も通常の形状を有し、この通常性は、いくつかのタイプのトポロジにおけるある欠点を犠牲にするものである。たとえばドラゴンフライなどの直接階層型ネットワークにおいて、第１の交換は遠隔リンクに過負荷をかける傾向がある。この影響を軽減する第２の交換について、以下で説明する。
【００３５】
本発明を具体化する第２の交換方法において、発明者等は、サブグループ・ラベルｓｉに加えて、各階層レベル内でタスクが属する各グループ内のオフセットを各タスクに割り当てる。特に、各レベルｌｎグループに属するタスクの場合、各タスクにオフセット値Ｏが定義され、このオフセット値はそのグループ内のタスク間で固有である。この特定の例では、各レベルｌｎグループに属するタスクのオフセット値Ｏは整数｛０，１，．．．，（Ｔｎ−１）｝であり、ここでＴｎは、そのグループ内のタスクの数である。この実施形態において、メッセージの宛先タスクの階層識別子は、ここでは「オフセット相表現」と呼ばれる、ｐｓで示される修正された相表現を用いて決定される。このオフセット相表現ｐｓは、メッセージの送信側タスクに特有である。特にオフセット相表現ｐｓは、相インデックスｐ、および、それぞれの階層レベルでタスクが属するグループ内の送信側タスクについて定義されたオフセット値の、両方に依存する。この好ましい実施形態では、所与の相内の所与の送信側タスクｓについて、オフセット相表現ｐｓは、Ｎ個の構成要素
【数９】
2014164756.tif 000011
を含み、これら構成要素は、
【数１０】
2014164756.tif 000012
のように、その相に関する相インデックスｐのそれぞれの対応する相要素ｐｎに依存し、
ｎ＞１の場合、対応する相要素ｐｎ＝０であれば、
【数１１】
2014164756.tif 000013
であり、そうでなければ、
【数１２】
2014164756.tif 000014
である。したがって第１の実施形態と比較すると、そのメッセージの宛先を計算するためにソース・タスクによって使用される元の相インデックスの各非ゼロ相要素ｐ（ｎ＞１）は、その相要素ｐｎに対応するレベルｌｎの直下の階層レベル内でそのソース・タスクに割り当てられたオフセットによって効果的に増補される。結果として生じるオフセット相表現ｐｓは、第２の実施形態のための交換関数を取得するために、上記の数式（１）内の相インデックスｐの代わりに使用される。すなわち、各メッセージに関する宛先タスクの階層識別子は、以下の交換関数
【数１３】
2014164756.tif 000015
を介して、送信側タスクの階層識別子およびオフセット相表現から決定される。再度、図４の階層トポロジに対して、結果として生じる交換パターンが図８に示されている。前述のように、相０から３は局所であり、後続の相は遠隔であって、遠隔相では明確にするために、第１のレベルｌ１グループ内のタスクから開始される交換のみが示されている。
【００３６】
図８から、交換パターンは、ネットワーク・トポロジにおける階層距離の増加の順に進行することが理解されよう。しかしながらこの方法は、対称性のわずかな損失を犠牲にして遠隔リンクの競合を最小限に減少させる一方で、交換の階層特性を維持し、性能を向上させる、負荷分散型階層交換を提供する。
【００３７】
直前で説明した第２の交換を用いるドラゴンフライ・ネットワークとの関連を維持しながら、同じ相内の交換は、ネットワークをトラバースする際に、異なる経路長さによる異なる待ち時間を有する。この非対称性は、本発明を具体化する第３の交換方法を用いて取り除き、結果として相内同期化を大幅に増加することができる。
【００３８】
第３の交換方法は、ドラゴンフライ・ネットワークに特に適用可能である。これらのネットワークにおいて、階層のレベルｌｃ内のグループはタスクを含む計算ノードに接続されたそれぞれのスイッチに対応し、ここで、各計算ノードが単一のタスクを含む場合はｃ＝１であり、各計算ノードが複数のタスクを含む場合はｃ＝２である。たとえば図２では、ｃ＝１であり、これによってレベルｌ１グループはスイッチに対応する。しかしながら、このネットワーク内で各計算ノードが複数のタスクを含む場合、計算ノードはレベルｌ１グループに対応し、レベルｌ２はスイッチの第１のレベルを表すことになる。したがって、一般にドラゴンフライ・トポロジの場合、各レベルｌｃ＋１グループはレベルｌｃスイッチの局所グループに対応する。これらレベルｌｃスイッチのそれぞれは、遠距離リンクを介して、少なくとも１つの他のレベルｌｃ＋１グループ内のスイッチに接続される。その後、各レベルｌｃ＋２グループは、レベルｌｃ＋１グループのグループに対応する。図９は、図２の単純なドラゴンフライ・ネットワークに関する様々なグループを示す。図内では遠距離リンクは太線で示される。この例で各スイッチは、遠距離リンクを介して、単一の他の局所グループ内のスイッチに接続される。他のドラゴンフライ・ネットワークにおいて、各スイッチは、遠距離リンクを介して、複数の他の局所グループ内のスイッチに接続可能である。
【００３９】
前述の定義に基づき、第３の交換方法は、特定の順序で宛先タスクを選択することによって、所与の送信側タスクからのメッセージに関して宛先タスクを決定する。特に、交換の連続相において、各タスクは、以下の順に選択されたそれぞれの宛先タスクにメッセージを送信する。
ａ．送信側タスクと同じ計算ノード内のタスク
ｂ．送信側タスクと同じレベルｌｃスイッチに接続された計算ノード内のタスク
ｃ．スイッチＳと同じレベルｌｃ＋１局所グループ内のスイッチに接続された計算ノード内のタスク
ｄ．当該遠距離リンクを介して当該スイッチＳに接続された、当該少なくとも１つの他のレベルｌｃ＋１グループ内の、スイッチＳ’に接続された計算ノード内のタスク
ｅ．当該スイッチＳ’と同じレベルｌｃ＋１局所グループ内のレベルｌｃスイッチに接続された計算ノード内のタスク
ｆ．当該遠距離リンクを介して当該スイッチＳと同じレベルｌｃ＋１局所グループ内の別のスイッチに接続された、当該少なくとも１つの他のレベルｌｃ＋１グループ内の、スイッチＳ’に接続された計算ノード内のタスク
ｇ．すべての他のタスク
したがってこの第３の交換方法では、送信側タスクからのメッセージに関する宛先タスクの階層識別子が、送信側タスクの階層識別子およびネットワーク・トポロジに基づいて、各送信側タスクに対する上記の順序に従い、連続相内で決定される。図９は、特定の送信側タスクに対する、上記のステップのそれぞれに対応するノードを示す。ここで「ａ」とラベル付けされたノードは、送信側タスクを含むノードである。上記プロセスの後続のステップが到達するタスクを含むノードは、適切なステップに対応する文字でラベル付けされる。
【００４０】
この方法の階層識別子は、第１または第２の交換について定義され得るか、あるいは、何らかの他の方法で、異なる階層レベルにおいてタスクが属するグループに依存することができる。相は、前述のように、または何らかの他の便利な方法で、相インデックスによって同様に表すことができる。当業者であれば、特に、全対全交換の特性が維持されることを保証することによって、および、負荷分散手法などの第２の交換を定義する際に使用される原理から借用することによって、所与のシナリオで上記メッセージ順を正確かつ効率的に実装するための、特定のアルゴリズムが明らかとなろう。この負荷分散手法を用いる場合、結果として生じる第３の交換方法に関する交換パターンは、一般に、第２の交換に関する階層距離の増加の順に進行することに対応するが、同じ相内のメッセージ交換のための待ち時間も均一にし、それによって相内の同期化を向上させる。待ち時間は、任意の所与の相において、それぞれおよびあらゆるメッセージがたどる経路が同一である点、それらが同じ数およびリンクのタイプ、同じ順序で構成される点で、均一になる。したがって、ネットワーク競合がない場合、メッセージはその経路をトラバースするために任意の他のメッセージと同じ時間がかかることになる。しかしながら、競合が存在する場合、待ち時間は異なる可能性があるが、交換の待ち時間最適化特性はこの経路の均一化を精密に言い表す。
【００４１】
本発明を具体化する第４の交換方法は、スリム・ファット・ツリー・ネットワークにおける帯域幅使用の問題に対処する。ＸＧＦＴなどの間接階層トロポジの場合、典型的なネットワーク設計は、同じ階層レベルのグループ間、および、任意の置換トラフィック・パターンにルーティングするための階層レベル間に、競合が無いように十分な帯域幅容量を提供する（置換トラフィック・パターンとは、あらゆるソースが単一の宛先に送信し、宛先セットがソース・セットと同一である、トラフィック・パターンのことである）。したがって、負荷分散はいかなる追加の特典も提供しない。さらに、トポロジの間接的な性質により、前述の第１の交換方法はすでに待ち時間も均衡化されている。したがってこの典型的なケース（たとえばすべてのｋ変数、ｎツリーのケース）では、第１の交換方法はすでに最適である。しかしながら、新しい設計は、使用可能な帯域幅の一部を削減することによってネットワーク・コストを削減することを追及している。これがいわゆるスリム・ファット・ツリーのケースである。前述の純粋に階層型の交換方法は、いくつかの相において全帯域幅を必要とし、他の相はネットワークの一部を完全に未使用のまま残す。第４の交換方法は、相全体にわたってより均一にネットワークを使用する傾向があるため、交換の対称性および階層特性を犠牲にして帯域幅使用を最適化する。言い換えれば、この交換方法は、一方の階層構造と他方の帯域幅使用との間のトレードオフを調整することができる。これにより、非スリム化設計よりも二分割（bisection）帯域幅を１／ＭＮ減らすことで、したがって非スリム化二分割帯域幅のわずか半分で、最適な性能が可能となる。
【００４２】
第４の交換方法では、第１の方法の階層識別子を使用して、階層識別子を可変基数Ｍ１、Ｍ２、．．．、ＭＮ内の可変基数表現として取り扱うことで、各タスクのタスク・インデックスｔが取得される。すなわち、タスク・インデックスｔは、各識別子要素ｍｎが基数Ｍｎに対応する可変基数表現において、タスクの階層識別子のＮ個の識別子要素ｍｎのセットによって示される値である。その後、各タスクの２次識別子が、異なる可変基数ＭＮ、Ｍ（Ｎ−１）、．．．、Ｍｋ＋２、Ｍｋ＋１、Ｍ１、Ｍ２、．．．、Ｍｋにおけるそのタスクのタスク・インデックスｔの表現として定義され、ここでｋは、１≦ｋ≦Ｎとなるように選択される調整パラメータである。したがって、タスクの２次識別子は、それぞれの基数Ｍｊに対応するＮ個の２次要素ｍｊのセットを含み、ここでｊ＝Ｎ、（Ｎ−１）、．．．、ｋ＋２、ｋ＋１、１、２、．．．、ｋである。その後、相インデックスｐ（その値はここでは、交換の連続相について整数値
【数１４】
2014164756.tif 000016
を通じて増分される）はこの新しい可変基数で表される。したがって、相インデックスｐは、可変基数ＭＮ、Ｍ（Ｎ−１）、．．．、Ｍｋ＋２、Ｍｋ＋１、Ｍ１、Ｍ２、．．．、Ｍｋにおける整数値
【数１５】
2014164756.tif 000017
の可変基数表現を提供する、Ｎ個の相要素ｐｊのセットを含む。
【００４３】
その後、送信側タスクおよび相インデックスのこれらの新しい表現を使用して、前述のようにモジュロ加算が実行される。宛先タスクの階層識別子を取得するために、可変基数結果の数字が単にその元の階層順に戻される。すなわち、交換の各相で送信される各メッセージについて、そのメッセージの宛先タスクの階層識別子のＮ個の識別要素は、
（ａ）宛先タスクの２次識別子を
【数１６】
2014164756.tif 000018
として取得することであり、ここで
【数１７】
2014164756.tif 000019
は、宛先タスクの２次識別子のｊ番目の要素であり、
【数１８】
2014164756.tif 000020
は、送信側タスクの２次識別子のｊ番目の要素である、取得すること、およびその後、
（ｂ）宛先タスクの２次識別子のＮ個の要素
【数１９】
2014164756.tif 000021
を、基数順Ｍｎに変えることであり、ｎ＝１からＮである、変えること、
によって決定される。
【００４４】
この第４の交換について結果として生じる交換パターンは、帯域幅最適化と、ネットワーク・トポロジにおいて階層距離の増加の順に進行することの間に、パラメータｋを調整するために選択された値を介して調整可能なトレードオフを提供する。調整パラメータｋのために選択される値が小さいほど、帯域幅占有がより最適化され（拡張された一般化ファット・ツリー内で最上位レベルから始まるより多くのレベルが、帯域幅を最適化され）、ｋ＝１の場合、最終的に完全な最適化となる。ｋのために選択される値が大きいほど、交換がより階層的になり、ｋ＝Ｎの場合、最終的に前述の第１の交換方法になる。２つのレベルと、下方分岐パラメータ４および４を伴う、拡張された一般化ファット・ツリーに関するｋ＝１の交換パターンが、図１０に示されている。太線で示された以外の線は、ネットワークの二分割をまたがる交換を表す。純粋な階層交換とは対照的に、（図の下部に各相についてマーク付けされた）二分割の使用は、交換の相全体に均一に広がり、帯域幅使用の最適化につながることが理解できよう。したがってこの特定のパターンは、「遠隔性増加」の程度が効果的に最小化され、完全な帯域幅最適化が達成されることを保証することによって、トポロジ内の階層距離を活用する。単一相内の通信ペアはすべて、可能な限り多くの遠隔性レベルをまたがって分散される。これにより、完全なファット・ツリーのすべてのリンクの完全に均衡な帯域幅使用によって、ファット・ツリーを最低限のコストに最適化する（最上位レベルの二分割帯域幅を大幅に削減する）ことができる。従来のアルゴリズムには、帯域幅を二分割してファット・ツリーで最適な性能を達成できたものはなかった。特に、線形シフトおよびＸＯＲ（およびその変形）交換パターンは、コストが削減されたネットワークでは性能が低い。
【００４５】
前述の様々な実施形態は、ネットワーク・トポロジの階層構造を本質的に考慮する、効率的なトポロジを意識した交換パターン群を提供することが理解されよう。これらの交換の非常に重要な利点は、それらの適用が、ＸＯＲのように階層型ネットワーク設計の制限されたクラスに制約されないことである。さらにこれらの交換は、性能の点で、スリム・ファット・ツリーにおけるＸＯＲおよび線形シフトの両方を２０から４０％上回る。ドラゴンフライでは、この差はより顕著であり、基本的な線形シフトに比べて３００％（交換は３倍の速さで完了する）、ランダムな線形シフトに比べて６０％上回り、これが現在は最善の手法であるとみなされている（もちろん、ＸＯＲはこのケースでは適用不可である）。
【００４６】
説明された例示の実施形態に対して、多くの変形および修正が実行可能であることを理解されよう。たとえば前述の交換の代替実施形態において、あらゆる相における交換の構造は完全に保持されるが、相自体は、上記で使用された基本の
【数２０】
2014164756.tif 000022
の順序とは異なる順序で実行される。この相順序は、シーケンス
【数２１】
2014164756.tif 000023
の任意の置換とすることができる。すなわち前述の交換方法は、相の順序を前述の順序の任意の置換に変更することによって、修正可能である。第１、第２、および第４の交換方法では、これは、交換の各連続相について、整数値
【数２２】
2014164756.tif 000024
の異なる１つを取る相インデックスｐを使用することによって達成可能であり、これらの値は任意の順序で発生可能である。前述の第３の交換方法では、この方法と共に取得される結果として生じる交換の相は、単に別の相順序で実行可能である。以前の交換プロセスは遠隔性増加（すなわちネットワーク・トポロジにおける階層距離の増加）の順に進行し、異なる相順序では、任意の所与の相でのメッセージ交換は同じ「遠隔性の値」を有するものであった。すなわち、任意の特定相内のすべてのメッセージによって、同じ階層距離がトラバースされた。各個別の相の構造がこの順序変更によって影響を受けないままであるという事実は、依然として、前述のほとんどの性能利得が保持されることにつながる。
【００４７】
ここまで、いくつかのシステムについて、簡略化のために計算ノードあたり１つのタスクを有するものとして説明してきたが、計算ノードあたり複数のタスクが存在する場合でも動作は本質的に同じである。そのため、タスク・レベルとスイッチ・レベルとの間に追加の階層レベルが効果的に加えられる。したがって、計算ノードあたり単一のタスクを備えるシステムでは、レベルｌ１グループは、計算ノードのグループに接続されたスイッチに対応する。計算ノードが複数のタスクを含むシステムでは、レベルｌ１グループは計算ノードに対応する。
【００４８】
所与のネットワークについて特定の交換関数が事前に決定できるが、この関数はもちろん、たとえば条件または動作要件の変更に合わせるために、動作時に動的に変更可能である。
【００４９】
本発明の範囲を逸脱することなく、説明された実施形態に対して多くの他の変更および修正が実行可能である。
【図１】
2014164756.tif 000041
【図２】
2014164756.tif 000042
【図３】
2014164756.tif 000043
【図４】
2014164756.tif 000044
【図５】
2014164756.tif 000045
【図６】
2014164756.tif 000046
【図７】
2014164756.tif 000047
【図８】
2014164756.tif 000048
【図９】
2014164756.tif 000049
【図１０】
2014164756.tif 000050