(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6366291
(24)【登録日】2018年7月13日
(45)【発行日】2018年8月1日
(54)【発明の名称】並列コンピューティング・システムにおける全対全メッセージ交換のための方法、システム、計算ノード、およびコンピュータ・プログラム(並列コンピューティング・システムにおける全対全メッセージ交換)
(51)【国際特許分類】
G06F 15/173 20060101AFI20180723BHJP
G06F 9/54 20060101ALI20180723BHJP
【FI】
G06F15/173 660C
G06F9/54 Z
【請求項の数】21
【全頁数】23
(21)【出願番号】特願2014-23356(P2014-23356)
(22)【出願日】2014年2月10日
(65)【公開番号】特開2014-164756(P2014-164756A)
(43)【公開日】2014年9月8日
【審査請求日】2016年12月20日
(31)【優先権主張番号】1303181.0
(32)【優先日】2013年2月22日
(33)【優先権主張国】GB
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ボグダン・プリサカリ
(72)【発明者】
【氏名】シリエル・ジェイ・ミンケンバーグ
(72)【発明者】
【氏名】ゲルマン・ロドリゲス・ヘレッラ
【審査官】
原 忠
(56)【参考文献】
【文献】
特開2013−025505(JP,A)
【文献】
特開平08−110846(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/46−9/54
G06F 15/80
G06F 15/173
(57)【特許請求の範囲】
【請求項1】
N>1の階層レベルlnを備え、n=1からNである、階層型ネットワーク・トポロジを用いる相互接続ネットワークによって接続されたプログラム・タスク間での、全対全メッセージ交換のための方法であって、第1のレベルl1は前記タスクの複数のグループを備え、各上位レベルl(n>1)はレベルl(n−1)グループの少なくとも1つのグループを備え、
各タスクについて、前記ネットワーク・トポロジのそれぞれの階層レベルにおいて、そのタスクが属する前記グループに依存する固有の階層識別子を定義すること、および、
送信側タスクの前記階層識別子および前記ネットワーク・トポロジに基づいて、各タスクで、前記交換の連続相のそれぞれにおいて、その階層識別子が決定されるそれぞれの宛先タスクに前記ネットワークを介してメッセージを送信することであって、結果として生じる全対全メッセージ交換のための交換パターンが、前記ネットワーク・トポロジにおける階層距離を使用する、前記送信すること、
を含み、
同じ階層レベルln内のすべてのグループが同じサイズMnを有し、
固有のサブグループ・ラベルsi、i=1からMnが、各レベルlnグループ内の各タスクについて、および各レベルl(n>1)グループ内の各レベルl(n−1)グループについて、定義され、
前記タスクについての前記階層識別子が、それぞれの階層レベルに対応するN個の識別子要素のセットを有し、前記N個の識別子要素のセットのうち階層レベルl1に対応する識別子要素m1が、そのタスクに関する前記サブグループ・ラベルsiに依存し、前記N個の識別子要素のセットのうち階層レベルl(n>1)に対応する識別子要素m(n>1)が、そのタスクが属する前記レベルl(n−1)グループに関する前記サブグループ・ラベルsiに依存する、方法。
【請求項2】
各サブグループ・ラベルsi=(i−1)である、請求項1に記載の方法。
【請求項3】
前記タスクについての前記階層識別子において、前記識別子要素m1がそのタスクについての前記サブグループ・ラベルsiであり、各識別子要素m(n>1)がそのタスクが
属する前記レベルl(n−1)グループに関する前記サブグループ・ラベルsiである、
請求項1または2に記載の方法。
【請求項4】
前記交換で送信される各メッセージについて、そのメッセージに関する前記宛先タスクの前記階層識別子が、前記交換の各連続相についてその値が変化する相インデックスにさらに依存する、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記相インデックスが、前記階層識別子のそれぞれの識別要素mnに対応するN個の相要素pnのセットを備える、請求項1に依存する請求項4に記載の方法。
【請求項6】
前記相インデックスpが、前記交換の各連続相について、
【数1】
を満たす整数値の異なる1つを取り、前記N個の相要素p
nが、各相要素p
nが基数M
n
に対応する前記値の可変基数表現を提供する、請求項
5に記載の方法。
【請求項7】
前記交換の前記相のそれぞれで送信される各メッセージについて、そのメッセージに関する前記宛先タスクの前記階層識別子の前記N個の識別要素が、
【数2】
として決定され、上式で
【数3】
が前記宛先タスクの前記階層識別子のn番目の識別要素であり、
【数4】
が前記メッセージに関する前記送信側タスクの前記階層識別子のn番目の識別要素である、
請求項
6に記載の方法。
【請求項8】
各レベルlnグループに属する前記タスクについて、各タスクについてオフセット値O
が定義され、前記オフセット値がそのグループ内のタスク間で固有であり、
前記交換の各相において各タスクによって送信される各メッセージについて、そのメッセージに関する前記宛先タスクの前記階層識別子が、前記相に関する前記相インデックスp、および、そのタスクがそれぞれの階層レベル内で属する前記グループ内の前記タスクについて定義された前記オフセット値に依存する、オフセット相表現psに依存する、
請求項6に記載の方法。
【請求項9】
前記交換の各相において各タスクによって送信される各メッセージについて、前記オフセット相表現p
sが、
【数5】
のように、前記相に関する前記相インデックスpのそれぞれの対応する相要素p
nに依存する、N個の構成要素
【数6】
を含み、n>1の場合、前記対応する相要素p
n=0であれば、
【数7】
であり、そうでなければ、
【数8】
=1プラス(M
n−1)を法とする(p
n−1)の合計、および、そのタスクが属する前記レベルl
(n−1)グループ内のそのタスクに関する前記オフセット値Oである、
請求項
8に記載の方法。
【請求項10】
前記交換の前記相のそれぞれで送信される各メッセージについて、そのメッセージに関する前記宛先タスクの前記階層識別子の前記N個の識別要素が、
【数9】
として決定され、上式で
【数10】
が前記宛先タスクの前記階層識別子のn番目の識別要素であり、
【数11】
が前記メッセージに関する前記送信側タスクの前記階層識別子のn番目の識別要素である、
請求項
9に記載の方法。
【請求項11】
各タスクの2次識別子を、可変基数M
N、M
(N−1)、...、M
k+2、M
k+1、M
1、M
2、...、M
kにおけるそのタスクのタスク・インデックスtの表現として定義することを含み、ここでkは、1≦k≦Nとなるような所定の調整パラメータであり、前記タスク・インデックスtが、可変基数表現で前記タスクに関する前記階層識別子の
N個の要素m
nの前記セットによって示される値であり、各識別子要素m
nが基数M
nに
対応し、それによって前記2次識別子は、それぞれの基数M
jに対応するN個の2次要素m
jのセットを含み、ここでj=N、(N−1)、...、k+2、k+1、1、2、.
..、kであり、
前記交換の前記相のそれぞれで送信される各メッセージについて、そのメッセージに関する前記宛先タスクの前記階層識別子が、前記交換の各連続相について、整数値
【数12】
の異なる1つを取る相インデックスpにさらに依存し、前記相インデックスpが、前記可
変基数M
N、M
(N−1)、...、M
k+2、M
k+1、M
1、M
2、...、M
kに
おける前記整数値の可変基数表現を提供する、N個の相要素p
jのセットを含み、
前記交換の前記相のそれぞれで送信される各メッセージについて、そのメッセージに関する前記宛先タスクの前記階層識別子の前記N個の識別要素が、前記宛先タスクの前記2次識別子を、
【数13】
として取得することであって、上式で
【数14】
は、前記宛先タスクの前記2次識別子のj番目の要素であり、
【数15】
は、前記メッセージに関する前記送信側タスクの前記2次識別子のj番目の要素である、取得することによって、およびその後、前記宛先タスクの前記2次識別子の前記N個の要素
【数16】
を、前記基数M
nの順に変えることであり、n=1からNである、変えることによって、
決定される、
請求項
2および
3に記載の方法。
【請求項12】
前記ネットワークが、前記階層のレベルlc内の前記グループが前記タスクを含む計算ノードに接続されたそれぞれのスイッチに対応する、ドラゴンフライ・ネットワークを含み、ここで、各計算ノードが単一のタスクを含む場合はc=1であり、各計算ノードが複数のタスクを含む場合はc=2であり、各レベルlc+1グループは、それぞれが遠距離リンクを介して少なくとも1つの他のレベルlc+1グループ内のスイッチに接続された
レベルlcスイッチの局所グループに対応し、各レベルlc+2グループは、レベルlc
+1グループのグループに対応し、前記交換の連続相において、各タスクは、
a.そのタスクと同じ計算ノード内のタスク、
b.そのタスクと同じレベルlcスイッチに接続された計算ノード内のタスク、
c.スイッチSと同じレベルlc+1局所グループ内のスイッチに接続された計算ノード内のタスク、
d.当該遠距離リンクを介して当該スイッチSに接続された、当該少なくとも1つの他のレベルlc+1グループ内の、スイッチS’に接続された計算ノード内のタスク、
e.当該スイッチS’と同じレベルlc+1局所グループ内のレベルlcスイッチに接続された計算ノード内のタスク、
f.当該遠距離リンクを介して当該スイッチSと同じレベルlc+1局所グループ内の別のスイッチに接続された、当該少なくとも1つの他のレベルlc+1グループ内の、スイッチS’に接続された計算ノード内のタスク、
g.すべての他のタスク、
の順に選択されたそれぞれの宛先タスクにメッセージを送信する、請求項1から6のいずれか一項に記載の方法。
【請求項13】
前記交換の結果として生じる相が他の相順序で実行される、請求項12に記載の方法。
【請求項14】
各タスクで、前記交換の各相で送信される前記メッセージについて、前記宛先タスクの前記階層識別子を動的に決定することを含む、請求項1から13のいずれか一項に記載の方法。
【請求項15】
システムの相互接続ネットワークによって接続されたプログラム・タスクを含む、複数の計算ノードを備える並列コンピューティング・システムであって、前記ネットワークが、N>1の階層レベルlnを備える階層ネットワーク・トポロジを有し、n=1からNで
あり、第1のレベルl1は前記タスクの複数のグループを備え、各上位レベルl(n>1
)はレベルl(n−1)グループの少なくとも1つのグループを備え、前記システムが、
前記プログラム・タスク間での全対全メッセージ交換のために、請求項1から14に記載の方法を実行するように適合される、並列コンピューティング・システム。
【請求項16】
前記ネットワークがファット・ツリー・ネットワークであり、前記システムが、前記プ
ログラム・タスク間での全対全メッセージ交換のために、請求項7に記載の方法を実行するように適合される、請求項15に記載のシステム。
【請求項17】
前記ネットワークがドラゴンフライ・ネットワークを含み、前記システムが、前記プロ
グラム・タスク間での全対全メッセージ交換のために、請求項11に記載の方法を実行するように適合される、請求項15に記載のシステム。
【請求項18】
前記ネットワークがスリム・ファット・ツリー・ネットワークを含み、前記システムが、前記プログラム・タスク間での全対全メッセージ交換のために、請求項12に記載の方法を実行するように適合される、請求項15に記載のシステム。
【請求項19】
前記ネットワークがドラゴンフライ・ネットワークを含み、前記システムが、前記プロ
グラム・タスク間での全対全メッセージ交換のために、請求項13または14に記載の方法を実行するように適合される、請求項15に記載のシステム。
【請求項20】
前記システムの少なくとも1つのプログラム・タスクを含む計算ノードであって、前記
システムの前記プログラム・タスク間での全対全メッセージ交換のために、前記システムの他の計算ノードと集合的に、前記方法を実行するように適合される、請求項15から19のいずれか一項に記載の並列コンピューティング・システムの計算ノード。
【請求項21】
前記他の計算ノードと集合的に、全対全メッセージ交換のために、請求項20に記載の計算ノードに前記方法を実行させるためのプログラム・コード手段を備える、コンピータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、並列コンピューティング・システムにおける全対全メッセージ交換(all-to-all message exchange)動作に関する。階層型相互接続ネットワークによって接続されたプログラム・タスク間での、全対全メッセージ交換のための方法、ならびにこうした方法を実装するための装置およびコンピュータ・プログラムが提供される。
【背景技術】
【0002】
並列コンピューティング・システムにおいて、プログラムは、並列に動作している複数の計算ノードによって実行可能である。計算ノードは、一般に、並行処理が実装されるハードウェア・レベルに応じて、別々のマシン(たとえばワークステーション、サーバ)、プロセッサ、コアなどであってよい。個々の計算ノードは、並列アルゴリズムの並列プログラム・エンティティまたはタスクのうちの1つまたは複数を実行することができる(本明細書において「タスク」という用語は、一般に、いずれの特定レベルの細分性をも暗示することなく、こうしたプログラム・エンティティを表す)。ほとんどの並列アルゴリズムは計算と通信の相を交互に行い、データはプログラム・タスクによって交換される。集合的に並列アルゴリズムを実装する計算ノードのセットは、通常、このデータ交換を可能にするためにネットワークを介して相互接続される。
【0003】
並列タスクのグループ間でデータが交換される方法は多様であるが、実際には、1ペアを超えるタスクが関与しているほとんどのデータ交換は、小規模の典型的な交換セットにマッピング可能である。最も幅広く使用される集合的な通信動作の1つが、全対全交換である(時には、全交換、インデックス動作、または個人化全対全交換と呼ばれる)。全対全メッセージ交換において、所与のセット内の各タスクは、1つの別個のメッセージをそのセット内のあらゆる他のタスクに(また、いくつかのケースではそれ自体にも)送信しなければならない。交換動作は、典型的には連続相に編成され、その数は各タスクによって送信されることになるメッセージの数に等しいため、各タスクは交換の各相において1つのメッセージを送信する。全体的な交換パターン、すなわち、交換の連続相において、ソース(送信側)タスクが宛先(受信側)タスクと通信する際に従うパターンは、交換の全体的な効率の基本である。これを検証するための簡単な方法は、所与の相においてすべての送信側タスクが同じ宛先タスクを同時に選択するという、極端なケースを考えることである。受信者の入力ポートでのメッセージのシリアル化により、すべての送信者は輻輳を体験することになる。相互接続ネットワーク内でのこれらすべてのメッセージのブロックによってさらに輻輳が生じ、性能に重大な影響を与える可能性がある。この極端な例は容易に回避され、ほとんどの全対全交換の提案がこの特定のシナリオに対処する。
【0004】
形式上、全対全交換パターンは、ソース・タスク・インデックス(s)及び相インデックス(p)を採用し、それらを宛先タスク・インデックス(d)にマッピングする、関数
【数1】
によって完全に特徴付けられるため、各sは1つ(および唯一)のメッセージを各dに送信し、各dは1つ(および唯一)のメッセージを各sから受信することになる。ほとんどの通信ライブラリ内にある2つの非常に一般的な交換は、
(a)
【数2】
で表される線形シフト(又は「ストライド化(strided)」)交換、および
(b)
【数3】
で表されるXOR(「2進XOR」又は「再帰的2分化(recursive halving)」)交換、であり、
上式で「shift」は固定整数値であり、Xは通信しているタスクの合計数である。
【0005】
タスクがそれを介して接続される相互接続ネットワークの厳密な構造は、メッセージ交換動作に対して強い影響を与える。こうしたネットワークは、一般に、何らかの形の階層型ネットワーク・トポロジを有する。階層型ネットワークは、ドラゴンフライ(dragonfly)ネットワークなどの明示的に階層型のトポロジ、並びに、ツリー・ネットワーク及びファット・ツリー・ネットワーク(拡張一般化ファット・ツリー、スリム化ファット・ツリーなどを含む)などのツリー型トポロジを含む。これらについて、以下で簡単に説明する。
【0006】
ツリー型トポロジでは、階層は、ツリーのリーフ(レベル0)からルート(レベルN)までの一連のレベルによって定義される。タスクはリーフ・ノード上に配置されるものとみなされ、他のすべてのノードはメッセージ・ルーティングに使用される。添付の図面の
図1は、計算ノード当たり1タスクの3レベル・ツリー相互接続の単純な例を示す。ここで、円で表される計算ノードは、ツリーのレベル0においてリーフを形成する。より上位のレベルはスイッチ(四角で表される)で構成され、それぞれがリンク(線で表される)を介して直前のレベル内の派生または「子」のグループに接続される。図示された例で、レベル1スイッチは、レベル0内の3つの計算ノードのグループにそれぞれ接続される。レベル2スイッチは、3つのレベル1スイッチのグループにそれぞれ接続される。この例の最上位レベルであるレベル3は、ここでは単一スイッチからなり、先行レベル内の3つのスイッチのグループに再度接続される。良く知られたファット・ツリー・ネットワーク・トポロジは、こうした標準ツリー・トポロジと同様に、レベル0のリーフ上にN個のレベルを有し、レベルl上の各ノードは正確にM
lの派生を有するが、任意の所与のノードとその親との間の接続が複数のリンクで構成されるという相違点がある。オリジナルの設計では、ノードから親までが使用可能なリンク容量は、そのノードの子からそれ自体までの総リンク容量に等しかった。したがって、レベルlでの各上方リンクの総容量は、上方リンクが開始するノードから到達可能なリーフに、ノード当たりの注入容量を掛け合わせた合計数に等しい(M
1・M
2・...・M
lに等しく、「・」は乗算を示す)。この数はツリーの高さと共に指数関数的に大きくなるため、拡張一般化ファット・ツリー(XGFT)の概念が導入される。このクラスのトポロジは、ネットワークのルートに向かって容量が指数関数的に増加するスイッチを必要とせずに、基本のファット・ツリー・ネットワークのそれと機能的に同様の設計を達成する。XGFTは、現在、高性能コンピューティングにおける相互接続設計のための最も普及しているオプションの1つである。
【0007】
ドラゴンフライ・ネットワークは、
図2が示す別の良く知られた階層型ネットワークの単純な例である。この例は、階層のレベル1で、それぞれのスイッチ(再度四角で表される)に2つずつのグループで接続された計算ノード(再度円で表される)あたり1タスクを有する。図中では、上位レベルは破線で示される。レベル2は4つのグループのレベル1スイッチを備え、各レベル2グループは、ここでは3つの相互接続されたレベル1スイッチの「局所グループ」を備える。ここでの最上位レベルであるレベル3は、すべてが4つのレベル2局所グループを含む、単一のグループを備える。
【0008】
所与の全対全交換動作は、基礎となるトポロジにかかわらず正常に完了可能であるが、結果として交換パターンは次善の性能となる可能性がある。例として、
図3は、
図4に示された階層型ネットワーク・トポロジを用いて、相互接続ネットワークによって接続された16のタスク間での線形シフト交換に関する交換パターンを示す。ここで特定のネットワーク実装は、リーフ・レベルのそれぞれの計算ノードに配置された16の通信タスク、4つの第1レベル・スイッチ、および単一の第2レベル・スイッチを伴う、(N=2)レベルのツリー型ネットワークとすることができる。ここではl
1とラベル表示されたトポロジ階層の第1のレベルは、それぞれが4つのタスクからなる4つのl
1グループを備える。l
2とラベル表示された次の(ここでは最上位の)レベルは、4つすべてのレベルl
1グループからなる、単一のl
2グループを備える。
図3の交換パターンは、シフト値0を伴うこのトポロジにおける線形シフト交換パターンを示す。タスクは、図の左側に0から15の番号が付けられた円で示される。図の連続列内の線は、交換の16の連続相における送信側タスクと宛先側タスクのペアリングを示す。相0では、破線によって示されるように、各タスクはそれ自体にメッセージを送信する。
【0009】
図3の交換パターンの考察から、線形シフト交換関数がネットワーク・トポロジのレイアウトを完全に無視することが明らかである。したがって、この交換パターンはトポロジの階層構造には気付かず、送信側ノードと受信側ノードとの間の階層距離(すなわち、通信のためにトラバースしなければならない階層レベル数)は考慮しない。しかしながら、階層距離の概念は階層型ネットワークの基本であり、これらのトポロジにおいて固有の局所性/遠隔性の概念を提供する。タスクのペアを区切る階層レベルが少ないほど、タスクは「近く」、すなわちそれらの間の経路は短く、互いに到達するための待ち時間は短い。
【0010】
図5は、
図4の階層型ネットワーク・トポロジに関するXOR交換アルゴリズムで取得される交換パターンを示す。第1の4つの相は、同じレベルl1グループ内のタスク間での局所交換を処理することが理解できよう。後続の相は、異なるレベルl1グループ内のノード間での交換を処理する。この単純な例によって示されるように、このネットワーク・トポロジにおけるXOR交換パターンの適用の結果、メッセージ交換は、遠隔性の増加順に実行されることになる。したがって、同じノード上に共設されたタスクは、(計算ノードあたり複数のタスクが存在する場合)第1にそれらの間の交換を実行し、次に(階層的な意味で)隣接するノード内のタスクが排他的にそれらの間で交換を実行する(したがって、ノード内交換は除外される)、という具合に、階層を通じて進行していく。これには、トラフィックが、大多数の相内でより下位レベルにできる限り多くのトラフィックが含まれることを保証し、さらに、所与の相内のすべてのペア間で(競合が存在しない場合)通信待ち時間は一定である、という利点がある。これにより、それぞれの相内により良い同期化が提供される。非同期化は、後続の相が重複し、したがって追加の競合が発生すること、または後続の相間にギャップが出現することの、いずれかを暗示するため、同期化は交換の全体性能を最適化する際に重要な要素である。
【0011】
XOR交換の重大な制限は、タスクが配置可能な相互接続されたノードの数が2の整数累乗である場合にのみ使用可能である、ということである。これは、ドラゴンフライ・ネットワークを含む実際的関心事の多くのネットワークを除外する。さらに、XOR交換は、適用が2の累乗数のタスク内で区切られる場合にのみ、使用可能である。実際にアルゴリズムは、この制限されたクラスのネットワークに対するその適用の制約を通じて、上記で説明した「遠隔性増加」機能を達成するのみである。アルゴリズム自体は、真のネットワーク・トポロジに依然として気付かず、物理ネットワーク階層に関係なく、単にソース・タスク・インデックスsおよび相インデックスpの2進表現のビット単位の2を法とする加算を実行する。たとえば
図4および
図5の例では、XOR交換は、各レベルl
1グループ内に2つのタスクがあり、各レベルl
(n>1)グループが2つのレベルl
(n−1)グループを含む、4つのレベルを有するオーバーレイ・トポロジの場合のように挙動する。したがって、
図4のネットワーク・トポロジ内のそれぞれの実際の階層レベルは、2つのオーバーレイ・レベルに効果的に分離される。したがって局所交換および遠隔交換を、1つが一方のオーバーレイ下位レベルを含み、1つが他方を含む、2つの別々のカテゴリに分化することがわかる。したがって、XOR関数がメッセージの宛先タスクを決定する方法が、実際のネットワーク・トポロジには依存せず、制限されたクラスのネットワーク・トポロジにのみ課せられる可能性のある単純なオーバーレイ構造に依存していることが理解できる。
【0012】
実際、並列コンピューティング・システムは、特に基礎となるネットワーク・トポロジに関して、XOR交換関数を使用するために必要な制限にほとんど準拠しない。そのため、より効果的ではないが、より一般的な、前述の線形シフト交換の使用をしばしば採用する。元のノード数の2の累乗の下位区分におけるXORパターンの不均衡かつ次善の適用は、Thakur等による「Optimization of Collective CommunicationOperations in MPICH」、2005年春、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ページでは、ノード・サイズ(ノード内のプロセッサの数)の順にメッセージが交換される、異なる数のプロセッサを有するノードを伴う階層型システムについての手法が記載されている。
【先行技術文献】
【非特許文献】
【0013】
【非特許文献1】Thakur等による「Optimization of Collective CommunicationOperations in MPICH」、2005年春、International Journal of HighPerformance Computing Applications, Vol.19, No.1, 49〜66ページ
【非特許文献2】Sanders等による「The Hierarchical Factor Algorithm forAll-to-All Communication」、2002年、Proceedingsof the 8th International Euro-Par Conference on Parallel Processing, LNCS 2400、799〜803ページ
【発明の概要】
【発明が解決しようとする課題】
【0014】
階層型ネットワークのための全対全交換動作における改良が、非常に望ましい。
【課題を解決するための手段】
【0015】
本発明の第1の態様は、N>1の階層レベルl
nを備え、n=1からNである、階層型ネットワーク・トポロジを用いる相互接続ネットワークによって接続されたプログラム・タスク間での、全対全メッセージ交換のための方法を提供し、ここで第1のレベルl
1は当該タスクの複数のグループを備え、各上位レベルl
(n>1)はレベルl
(n−1)グループの少なくとも1つのグループを備える。方法は、
各タスクについて、ネットワーク・トポロジのそれぞれの階層レベルにおいて、そのタスクが属するグループに依存する固有の階層識別子を定義すること、および、
送信側タスクの階層識別子およびネットワーク・トポロジに基づいて、各タスクで、交換の連続相のそれぞれにおいて、その階層識別子が決定されるそれぞれの宛先タスクにネットワークを介してメッセージを送信することであって、結果として生じる全対全メッセージ交換のための交換パターンが、ネットワーク・トポロジにおける階層距離を所望の様式で活用する、送信すること、
を含む。
【0016】
したがって、本発明を具体化する方法は、タスクが通信する際に介するネットワークが階層トポロジを有するシステムにおいて、全対全メッセージ交換を提供する。タスクに関する階層識別子は、トポロジの異なる階層レベルにおいてそれらのタスクが属するグループに依存し、したがって、ネットワークに関する階層情報を取り込む。メッセージ交換プロセスの各相において、それぞれのタスクはそれぞれの宛先タスクにメッセージを送信し、それによって各タスクは各連続相においてメッセージを送信および受信する。所与の相でタスクを送信するために、各メッセージの宛先タスクの階層識別子は、送信側タスクの階層識別子およびネットワーク・トポロジの両方に基づいて決定され、ネットワーク・トポロジにおける階層距離を所望の様式で活用する。したがって、前述の従来の交換とは異なり、交換動作は、(たとえばXOR交換関数に埋め込まれたような、実際のネットワーク・トポロジの上に課せられたオーバーレイの何らかの固定トポロジとは対照的に)物理ネットワークの実際の階層トポロジに依存するという意味で、真に「トポロジを意識」している。これにより、ネットワーク・トポロジにおける階層距離を所望に応じて活用することが可能であり、階層型ネットワーク内に非常に効率的な交換パターンを提供する。さらに、本発明を具体化する方法は、前述のXOR交換のような制限されたクラスのネットワークに制約されることはない。以下に記載された例によって示されるように、本発明を具体化するトポロジを意識した交換方法は、著しい性能特典を提供し、様々な性能要件に容易に適合可能であり、様々なタイプの階層型ネットワークについて異なる基準に従った交換の最適化を可能にする。
【0017】
本発明の実施形態における交換パターンは、ネットワーク・トポロジにおける階層距離を様々な方法で活用することができる。たとえば、交換パターンは、階層距離の増加の順に(全体的または部分的に)メッセージ交換を実装することができる。したがって交換は、前述のように、「遠隔性増加」の順に実行可能である。いくつかの実施形態は、負荷分散、待ち時間、相内同期化、または帯域幅効率などの、動作のいくつかの特定の態様を改良するために、さらに適合される。本発明を具体化するいくつかの交換では、交換パターンはある程度遠隔増加の順に進行し、所望の程度の帯域幅最適化を達成するために、この順序から逸脱する。記載される特定の例では、交換パターンは、遠隔性増加の程度が効果的に最小化され、完全な帯域幅最適化が達成されるように保証することによって、階層距離を活用する。
【0018】
連続メッセージに関する特定順序の宛先タスクが各送信側タスクについて事前に計算される、実施形態が想定され得るが、各メッセージに関する適切な宛先タスクの階層識別子は、典型的には、各タスクで動的に決定される。したがって、本発明を具体化する方法は、好ましくは、各タスクで、交換の各相で送信されるメッセージに関する宛先タスクの階層識別子を動的に決定することを含む。
【0019】
本発明の第2の態様は、システムの相互接続ネットワークによって接続されたプログラム・タスクを含む複数の計算ノードを備える並列コンピューティング・システムを提供し、ネットワークは、N>1の階層レベルl
nを備え、n=1からNである、階層型ネットワーク・トポロジを有し、ここで第1のレベルl
1は当該タスクの複数のグループを備え、各上位レベルl
(n>1)はレベルl
(n−1)グループの少なくとも1つのグループを備え、システムは、当該プログラム・タスク間での全対全メッセージ交換のための本発明の第1の態様に従った方法を実行するように適合される。
【0020】
本発明の第3の態様は、本発明の第2の態様に従った並列コンピューティング・システムの計算ノードを提供し、計算ノードは当該システムの少なくとも1つのプログラム・タスクを含み、当該システムの他の計算ノードと集合的に、システムのプログラム・タスク間での全対全メッセージ交換のための当該方法を実行するように適合される。
【0021】
本発明の第4の態様は、本発明の第3の態様に従い、当該他の計算ノードと集合的に、全対全メッセージ交換のための当該方法を計算ノードに実行させるための、プログラム・コード手段を含む、コンピュータ・プログラムを提供する。計算ノードは何らかの形のコンピュータによって実装可能であり、「コンピュータ」という用語は、本明細書では最も一般的な意味で使用され、コンピュータ・プログラムを実装するためのデータ処理機能を有する、任意のデバイス、構成要素、またはシステムを含む。さらに、本発明を具体化するコンピュータ・プログラムは、独立プログラムを構成するか、またはより大きなプログラムの要素とすることが可能であり、コンピュータ内にロードするためのディスクまたは電子伝送などのコンピュータ読み取り可能媒体内に供給され、たとえば具体化されることが可能である。コンピュータ・プログラムのプログラム・コード手段は、当該の方法を、直接、あるいは、(a)他の言語、コード、または表記への変換、および(b)異なる材料形式での再作成の、いずれかまたは両方の後に、コンピュータに実行させるように意図された命令セットの、任意の言語、コード、または表記での任意の式を含むことができる。
【0022】
一般に、本明細書では、本発明の一態様の実施形態を参照しながら特徴が説明され、対応する特徴は、適宜、本発明の他の態様の実施形態において提供可能である。
【0023】
ここで、本発明の好ましい実施形態について、添付の図面を参照しながら例として説明する。
【図面の簡単な説明】
【0024】
【
図1】ツリー型相互接続ネットワークの例を示す図である。
【
図2】ドラゴンフライ・ネットワークの例を示す図である。
【
図3】例示のネットワーク・トポロジに関する線形シフト交換パターンを示す図である。
【
図4】
図3の交換パターンに関するネットワーク・トポロジを示す図である。
【
図5】
図4のトポロジに関するXOR交換パターンを示す図である。
【
図6】本発明を具体化する方法における、タスクおよび階層相互接続トポロジのグループへのサブグループ・ラベルの割り当てを示す図である。
【
図7】本発明を具体化する第1の全対全交換方法に関する交換パターンを示す図である。
【
図8】本発明を具体化する第2の全対全交換方法に関する交換パターンを示す図である。
【
図9】本発明を具体化する第3の全対全交換方法におけるステップの順序付けを示す図である。
【
図10】本発明を具体化する第4の全対全交換方法に関する交換パターンを示す図である。
【発明を実施するための形態】
【0025】
説明される方法は、通信中のプログラム・タスクが、階層型ネットワーク・トポロジを用いて相互接続ネットワークによってシステム内で接続される、並列コンピューティング・システムにおける全対全メッセージ交換を提供する。一般に、こうしたネットワーク・トポロジは、ここではl
nで示されるN>1階層レベルを備えるものとみなすことが可能であり、ここでn=1からNである。階層の第1のレベルl
1は、複数グループのプログラム・タスクを備える。各上位レベルl
(n>1)は、レベルl
(n−1)グループの少なくとも1つのグループを備える。
【0026】
図6は、本発明を具体化する交換方法において、タスクに関して階層識別子がどのように定義されるかを説明するために使用されることになる例示のシステムのトポロジを示す。示された特定のトポロジは、計算ノードあたり1つのタスク、12のレベル1スイッチ、4つのレベル2スイッチ、および1つのレベル3スイッチを伴う、ツリー型相互接続ネットワークに対応する。しかしながら、説明される原理は、他の階層型ネットワークに容易に拡張可能であることを理解されよう。
【0027】
図6のトポロジにおいて、影付き円は集合的通信動作に関与する並列プログラム・タスクのセットに対応する。これらのタスクはそれぞれ、計算ノード上で実行しているソフトウェアによって実装される。この例で計算ノードあたり1タスクと想定すると、影付き円はそれぞれが1タスクを含むそれぞれの計算ノードを表す。階層の第1のレベルl
1は、それぞれが3つのプログラム・タスクを含む、12のレベルl
1グループを備える。階層の第2のレベルl
2は、それぞれが3つのレベルl
1グループを含む4つのレベルl
2グループを備える。ここでは最上位である階層の第3のレベルl
3は、4つのレベルl
2グループを含む単一のレベルl
3グループを備える。結果として生じる構造は、同種の階層であり、それによって同じ階層レベルl
n内のすべてのグループは同じサイズM
nを有する(ここでグループの「サイズ」は以前の階層レベルから含む要素の数(すなわち、レベルl
1グループ内のタスクの数またはレベルl
nグループ内のレベルl
(n−1)グループの数)として定義される)。したがって、示された例におけるグループ・サイズは、M
1=3、M
2=3、M
3=4である。Nレベル階層への一般化の場合、階層のレベルl
1内のグループはM
1の通信タスクで構成され、レベルl
2内のグループはM
2のレベルl
1グループ(したがってM
1・M
2)タスクで構成され、M
Nのレベルl
(N−1)グループ、したがって、
【数4】
の通信タスクで構成される、レベルNまで同様であることが理解できよう。
【0028】
固有の階層識別子が、システム内の各タスクについて定義される。タスクの階層識別子は、それぞれの階層レベル内でそのタスクが属するグループに依存する。好ましい実施形態において、階層識別子は、それぞれの階層レベルl
1、l
2、...、l
Nに対応するN個の値セット(本明細書では「識別子要素」と呼ばれる)m
1、m
2、...、m
Nを含む。階層識別子は、以下の方法で取得される。固有のサブグループ・ラベルs
i、i=1からM
nは、最初に各レベルl
1グループ内の各タスクについて、および各レベルl
(n>1)グループ内の各レベルl
(n−1)グループについて、定義される。代替が想定可能であるが、好ましい実施形態において、各サブグループ・ラベルはs
i=(i−1)であるため、s
1=0、s
2=1、以下同様であり、それによってサブグループ・ラベルs
iは整数0、1、...、(M
n−1)である。タスクに関する階層識別子のN個の識別子要素m
n(n=1からN)のセットにおいて、階層レベルl
1に対応する識別子要素m
1は、そのタスクに関するサブグループ・ラベルs
iに依存する。階層レベルl
(n>1)に対応するさらなる各識別子要素m
(n>1)は、そのタスクが属するレベルl
(n−1)グループのサブグループ・ラベルs
iに依存する。
【0029】
前述のようなサブグループ・ラベルの割り当ては、
図6内のタスクおよびグループのうちのいくつかについて示されている。説明される第1の交換方法において、識別子要素m
1は、単にそのタスクのサブグループ・ラベルs
iに等しい。同様に、さらなる識別子要素m
(n>1)は、単にそのタスクが属するレベルl
(n−1)グループのサブグループ・ラベルs
iである。このシステムに基づき、図内でt
1とラベル付けされたタスクの階層識別子は、0,0,0となる。t
2とラベル付けされたタスクの階層識別子は、2,2,0となり、以下同様である。(しかしながら、サブグループ・ラベル付けステップでは、サブグループ/タスクのセット全体をラベル付けする明確な方法、M
1!・M
2!・...・M
N!があり、これらのいずれも説明される方法で使用可能であることに留意されたい。)
【0030】
本発明を具体化する交換方法は、階層識別子に加えて、交換プロセスの相に同様の表現を使用する。特定の相は、値が交換の各連続相によって変化する相インデックスによって識別される。説明されるいくつかの交換方法において、相インデックスpは、当該階層識別子のそれぞれの識別要素m
nに対応するN個の相要素p
nのセットを含む。全対全交換プロセスには、通信タスクと同数の相が存在するため、相インデックスpは、交換の連続相について、整数値
【数5】
を通じて増分可能である。N個の相要素のセットp
1、p
2、...、p
Nは、可変基数M
1、M
2、...、M
N内にこれらの値の可変基数表現を提供し、これによって各相要素p
nは基数M
nに対応する。可変基数表現は、数の均一基数表現の良く知られた概念と同様であるが、あらゆる数字の基数があらゆる他の数字の基数に依存していないという点が異なる。例として、数の(均一な)基数10表現において、いずれの数字も0から9の値(すなわち10−1)を取ることが可能である。同様に、数の(均一な)基数2表現において、いずれの数字も0から1の値(すなわち2−1)を取ることが可能である。これに対して、可変基数(2,10)表現では、最下位の数字は0から(2−1)の間の値を取ることが可能であり、最下位から2番目の数字は0から(10−1)の間の値を取ることが可能である。この可変基数における数0、1、2、3、4は、00、10、01、11、02(一番左が最下位の数字)として表されることになる。相表現p
1、p
2、...、p
Nに戻ると、q
rが積M
1・M
2・...・M
(r−1)によるpの整数除算の商である場合、各数字p
rは、M
rによるq
rの整数除算の剰余として算出可能である。
【0031】
前述の階層識別子は、ネットワークの初期セットアップ時、または集合的通信のための特定の並列タスク・セットの定義時に決定可能であり、各特定タスクの識別子を定義するために計算ノードのメモリ内に格納可能である。可変基数相表現は同様に、相インデックスpがメッセージ交換の連続相に対して適切に増分できるように、計算ノードで定義される。タスク・セットによって全対全交換動作が実行される場合、各タスクは、交換の連続相のそれぞれにおけるそれぞれの宛先タスクに、ネットワークを介してメッセージを送信する。したがって各タスクは、正確に1つのメッセージを送信および受信するため、各相内の送信側タスクと宛先タスクとの間に1対1のペアリングが存在することになる。各送信側タスクからの各メッセージについて、ペアリングされる宛先タスクの階層識別子は、
送信側タスクの階層識別子および相互接続ネットワークのトポロジの両方に依存する交換アルゴリズム、ならびに相インデックスの値を介して、動的に決定される。交換アルゴリズムは、結果として生じる交換パターンがネットワーク・トポロジにおける階層距離を所望の様式で活用するようなものである。
【0032】
本発明を具体化する第1の交換方法において、各メッセージに関する宛先タスクの階層識別子は、送信側タスクの階層識別子、および相の可変基数表現から、以下の交換関数
【数6】
を介して決定され、上式で、
【数7】
は、宛先タスクの階層識別子のn番目の識別要素であり、
【数8】
は、送信側タスクの階層識別子のn番目の識別要素である。この関数を用いると、各ステップにおける加算はM
nを法として実行されるため、相互接続ネットワーク階層の適切なレベルでの実際のグループ・サイズに依存する。この交換関数の効果は
図7に示されている。この図は、各レベルl
1グループにおける4つの通信タスク、および単一のレベルl
2グループにおける4つのレベルl
1グループに対応する、
図4の階層トポロジを伴うシステムに対して結果として生じる交換パターンを示している。相0から3は局所(同じレベルl
1グループ内のタスク間での交換に対応する)であり、残りの相は遠隔である。遠隔相については、明確にするために、第1のl
1グループ内のタスクから開始される交換のみが示されている。(
図7は、特定のサブグループ・ラベル付けシステムに対応する1つの可能な交換パターンのみを示していることに留意されたい。このラベル付けは交換の特性に対して直角であり、M
1!・M
2!・...・M
N!の明確なラベル付けシステムのそれぞれは、新しい明確な交換パターンにつながる。)
【0033】
図7から、この全対全メッセージ交換に関する交換パターンは、ネットワーク・トポロジにおける階層距離の増加順に進行することが理解できよう。特に、交換は第1に階層の最下位レベル内で実行され、次に階層の第2レベル内の同じ第1の階層レベル・グループに属さないノード間で排他的に実行され、以下同様に実行される。したがって、メッセージ交換は遠隔性増加の順に実行され、結果として前述の性能利点が生じる。さらに、XOR交換とは対照的に、この交換は、物理ネットワークの実際の階層トポロジに忠実な方法で達成される。XOR交換とは異なり、数式1によって定義される交換は、基礎となるいかなる物理ネットワークにもオーバーレイを課すことがなく、実際のネットワーク階層の本来のトポロジ特性を使用するのみである。
【0034】
上記の交換プロセスの他の利点は、ツリー型ネットワーク(たとえば標準ツリー、および、XGFT、スリム・ファット・ツリーなどのそれらの様々な形のファット・ツリー)およびドラゴンフライ・ネットワークの両方を含む、直接および間接の階層型ネットワークに適用可能な点である。しかしながら、この第1の交換は本明細書で説明される実施形態の最も通常の形状を有し、この通常性は、いくつかのタイプのトポロジにおけるある欠点を犠牲にするものである。たとえばドラゴンフライなどの直接階層型ネットワークにおいて、第1の交換は遠隔リンクに過負荷をかける傾向がある。この影響を軽減する第2の交換について、以下で説明する。
【0035】
本発明を具体化する第2の交換方法において、発明者等は、サブグループ・ラベルs
iに加えて、各階層レベル内でタスクが属する各グループ内のオフセットを各タスクに割り当てる。特に、各レベルl
nグループに属するタスクの場合、各タスクにオフセット値Oが定義され、このオフセット値はそのグループ内のタスク間で固有である。この特定の例では、各レベルl
nグループに属するタスクのオフセット値Oは整数{0,1,...,(T
n−1)}であり、ここでT
nは、そのグループ内のタスクの数である。この実施形態において、メッセージの宛先タスクの階層識別子は、ここでは「オフセット相表現」と呼ばれる、p
sで示される修正された相表現を用いて決定される。このオフセット相表現p
sは、メッセージの送信側タスクに特有である。特にオフセット相表現p
sは、相インデックスp、および、それぞれの階層レベルでタスクが属するグループ内の送信側タスクについて定義されたオフセット値の、両方に依存する。この好ましい実施形態では、所与の相内の所与の送信側タスクsについて、オフセット相表現p
sは、N個の構成要素
【数9】
を含み、これら構成要素は、
【数10】
のように、その相に関する相インデックスpのそれぞれの対応する相要素p
nに依存し、
n>1の場合、対応する相要素p
n=0であれば、
【数11】
であり、そうでなければ、
【数12】
である。したがって第1の実施形態と比較すると、そのメッセージの宛先を計算するためにソース・タスクによって使用される元の相インデックスの各非ゼロ相要素p
(n>1)は、その相要素p
nに対応するレベルl
nの直下の階層レベル内でそのソース・タスクに割り当てられたオフセットによって効果的に増補される。結果として生じるオフセット相表現p
sは、第2の実施形態のための交換関数を取得するために、上記の数式(1)内の相インデックスpの代わりに使用される。すなわち、各メッセージに関する宛先タスクの階層識別子は、以下の交換関数
【数13】
を介して、送信側タスクの階層識別子およびオフセット相表現から決定される。再度、
図4の階層トポロジに対して、結果として生じる交換パターンが
図8に示されている。前述のように、相0から3は局所であり、後続の相は遠隔であって、遠隔相では明確にするために、第1のレベルl
1グループ内のタスクから開始される交換のみが示されている。
【0036】
図8から、交換パターンは、ネットワーク・トポロジにおける階層距離の増加の順に進行することが理解されよう。しかしながらこの方法は、対称性のわずかな損失を犠牲にして遠隔リンクの競合を最小限に減少させる一方で、交換の階層特性を維持し、性能を向上させる、負荷分散型階層交換を提供する。
【0037】
直前で説明した第2の交換を用いるドラゴンフライ・ネットワークとの関連を維持しながら、同じ相内の交換は、ネットワークをトラバースする際に、異なる経路長さによる異なる待ち時間を有する。この非対称性は、本発明を具体化する第3の交換方法を用いて取り除き、結果として相内同期化を大幅に増加することができる。
【0038】
第3の交換方法は、ドラゴンフライ・ネットワークに特に適用可能である。これらのネットワークにおいて、階層のレベルl
c内のグループはタスクを含む計算ノードに接続されたそれぞれのスイッチに対応し、ここで、各計算ノードが単一のタスクを含む場合はc=1であり、各計算ノードが複数のタスクを含む場合はc=2である。たとえば
図2では、c=1であり、これによってレベルl
1グループはスイッチに対応する。しかしながら、このネットワーク内で各計算ノードが複数のタスクを含む場合、計算ノードはレベルl
1グループに対応し、レベルl
2はスイッチの第1のレベルを表すことになる。したがって、一般にドラゴンフライ・トポロジの場合、各レベルl
c+1グループはレベルl
cスイッチの局所グループに対応する。これらレベルl
cスイッチのそれぞれは、遠距離リンクを介して、少なくとも1つの他のレベルl
c+1グループ内のスイッチに接続される。その後、各レベルl
c+2グループは、レベルl
c+1グループのグループに対応する。
図9は、
図2の単純なドラゴンフライ・ネットワークに関する様々なグループを示す。図内では遠距離リンクは太線で示される。この例で各スイッチは、遠距離リンクを介して、単一の他の局所グループ内のスイッチに接続される。他のドラゴンフライ・ネットワークにおいて、各スイッチは、遠距離リンクを介して、複数の他の局所グループ内のスイッチに接続可能である。
【0039】
前述の定義に基づき、第3の交換方法は、特定の順序で宛先タスクを選択することによって、所与の送信側タスクからのメッセージに関して宛先タスクを決定する。特に、交換の連続相において、各タスクは、以下の順に選択されたそれぞれの宛先タスクにメッセージを送信する。
a.送信側タスクと同じ計算ノード内のタスク
b.送信側タスクと同じレベルl
cスイッチに接続された計算ノード内のタスク
c.スイッチSと同じレベルl
c+1局所グループ内のスイッチに接続された計算ノード内のタスク
d.当該遠距離リンクを介して当該スイッチSに接続された、当該少なくとも1つの他のレベルl
c+1グループ内の、スイッチS’に接続された計算ノード内のタスク
e.当該スイッチS’と同じレベルl
c+1局所グループ内のレベルl
cスイッチに接続された計算ノード内のタスク
f.当該遠距離リンクを介して当該スイッチSと同じレベルl
c+1局所グループ内の別のスイッチに接続された、当該少なくとも1つの他のレベルl
c+1グループ内の、スイッチS’に接続された計算ノード内のタスク
g.すべての他のタスク
したがってこの第3の交換方法では、送信側タスクからのメッセージに関する宛先タスクの階層識別子が、送信側タスクの階層識別子およびネットワーク・トポロジに基づいて、各送信側タスクに対する上記の順序に従い、連続相内で決定される。
図9は、特定の送信側タスクに対する、上記のステップのそれぞれに対応するノードを示す。ここで「a」とラベル付けされたノードは、送信側タスクを含むノードである。上記プロセスの後続のステップが到達するタスクを含むノードは、適切なステップに対応する文字でラベル付けされる。
【0040】
この方法の階層識別子は、第1または第2の交換について定義され得るか、あるいは、何らかの他の方法で、異なる階層レベルにおいてタスクが属するグループに依存することができる。相は、前述のように、または何らかの他の便利な方法で、相インデックスによって同様に表すことができる。当業者であれば、特に、全対全交換の特性が維持されることを保証することによって、および、負荷分散手法などの第2の交換を定義する際に使用される原理から借用することによって、所与のシナリオで上記メッセージ順を正確かつ効率的に実装するための、特定のアルゴリズムが明らかとなろう。この負荷分散手法を用いる場合、結果として生じる第3の交換方法に関する交換パターンは、一般に、第2の交換に関する階層距離の増加の順に進行することに対応するが、同じ相内のメッセージ交換のための待ち時間も均一にし、それによって相内の同期化を向上させる。待ち時間は、任意の所与の相において、それぞれおよびあらゆるメッセージがたどる経路が同一である点、それらが同じ数およびリンクのタイプ、同じ順序で構成される点で、均一になる。したがって、ネットワーク競合がない場合、メッセージはその経路をトラバースするために任意の他のメッセージと同じ時間がかかることになる。しかしながら、競合が存在する場合、待ち時間は異なる可能性があるが、交換の待ち時間最適化特性はこの経路の均一化を精密に言い表す。
【0041】
本発明を具体化する第4の交換方法は、スリム・ファット・ツリー・ネットワークにおける帯域幅使用の問題に対処する。XGFTなどの間接階層トロポジの場合、典型的なネットワーク設計は、同じ階層レベルのグループ間、および、任意の置換トラフィック・パターンにルーティングするための階層レベル間に、競合が無いように十分な帯域幅容量を提供する(置換トラフィック・パターンとは、あらゆるソースが単一の宛先に送信し、宛先セットがソース・セットと同一である、トラフィック・パターンのことである)。したがって、負荷分散はいかなる追加の特典も提供しない。さらに、トポロジの間接的な性質により、前述の第1の交換方法はすでに待ち時間も均衡化されている。したがってこの典型的なケース(たとえばすべてのk変数、nツリーのケース)では、第1の交換方法はすでに最適である。しかしながら、新しい設計は、使用可能な帯域幅の一部を削減することによってネットワーク・コストを削減することを追及している。これがいわゆるスリム・ファット・ツリーのケースである。前述の純粋に階層型の交換方法は、いくつかの相において全帯域幅を必要とし、他の相はネットワークの一部を完全に未使用のまま残す。第4の交換方法は、相全体にわたってより均一にネットワークを使用する傾向があるため、交換の対称性および階層特性を犠牲にして帯域幅使用を最適化する。言い換えれば、この交換方法は、一方の階層構造と他方の帯域幅使用との間のトレードオフを調整することができる。これにより、非スリム化設計よりも二分割(bisection)帯域幅を1/M
N減らすことで、したがって非スリム化二分割帯域幅のわずか半分で、最適な性能が可能となる。
【0042】
第4の交換方法では、第1の方法の階層識別子を使用して、階層識別子を可変基数M
1、M
2、...、M
N内の可変基数表現として取り扱うことで、各タスクのタスク・インデックスtが取得される。すなわち、タスク・インデックスtは、各識別子要素m
nが基数Mnに対応する可変基数表現において、タスクの階層識別子のN個の識別子要素m
nのセットによって示される値である。その後、各タスクの2次識別子が、異なる可変基数M
N、M
(N−1)、...、M
k+2、M
k+1、M
1、M
2、...、M
kにおけるそのタスクのタスク・インデックスtの表現として定義され、ここでkは、1≦k≦Nとなるように選択される調整パラメータである。したがって、タスクの2次識別子は、それぞれの基数M
jに対応するN個の2次要素m
jのセットを含み、ここでj=N、(N−1)、...、k+2、k+1、1、2、...、kである。その後、相インデックスp(その値はここでは、交換の連続相について整数値
【数14】
を通じて増分される)はこの新しい可変基数で表される。したがって、相インデックスpは、可変基数M
N、M
(N−1)、...、M
k+2、M
k+1、M
1、M
2、...、M
kにおける整数値
【数15】
の可変基数表現を提供する、N個の相要素p
jのセットを含む。
【0043】
その後、送信側タスクおよび相インデックスのこれらの新しい表現を使用して、前述のようにモジュロ加算が実行される。宛先タスクの階層識別子を取得するために、可変基数結果の数字が単にその元の階層順に戻される。すなわち、交換の各相で送信される各メッセージについて、そのメッセージの宛先タスクの階層識別子のN個の識別要素は、
(a)宛先タスクの2次識別子を
【数16】
として取得することであり、ここで
【数17】
は、宛先タスクの2次識別子のj番目の要素であり、
【数18】
は、送信側タスクの2次識別子のj番目の要素である、取得すること、およびその後、
(b)宛先タスクの2次識別子のN個の要素
【数19】
を、基数順M
nに変えることであり、n=1からNである、変えること、
によって決定される。
【0044】
この第4の交換について結果として生じる交換パターンは、帯域幅最適化と、ネットワーク・トポロジにおいて階層距離の増加の順に進行することの間に、パラメータkを調整するために選択された値を介して調整可能なトレードオフを提供する。調整パラメータkのために選択される値が小さいほど、帯域幅占有がより最適化され(拡張された一般化ファット・ツリー内で最上位レベルから始まるより多くのレベルが、帯域幅を最適化され)、k=1の場合、最終的に完全な最適化となる。kのために選択される値が大きいほど、交換がより階層的になり、k=Nの場合、最終的に前述の第1の交換方法になる。2つのレベルと、下方分岐パラメータ4および4を伴う、拡張された一般化ファット・ツリーに関するk=1の交換パターンが、
図10に示されている。太線で示された以外の線は、ネットワークの二分割をまたがる交換を表す。純粋な階層交換とは対照的に、(図の下部に各相についてマーク付けされた)二分割の使用は、交換の相全体に均一に広がり、帯域幅使用の最適化につながることが理解できよう。したがってこの特定のパターンは、「遠隔性増加」の程度が効果的に最小化され、完全な帯域幅最適化が達成されることを保証することによって、トポロジ内の階層距離を活用する。単一相内の通信ペアはすべて、可能な限り多くの遠隔性レベルをまたがって分散される。これにより、完全なファット・ツリーのすべてのリンクの完全に均衡な帯域幅使用によって、ファット・ツリーを最低限のコストに最適化する(最上位レベルの二分割帯域幅を大幅に削減する)ことができる。従来のアルゴリズムには、帯域幅を二分割してファット・ツリーで最適な性能を達成できたものはなかった。特に、線形シフトおよびXOR(およびその変形)交換パターンは、コストが削減されたネットワークでは性能が低い。
【0045】
前述の様々な実施形態は、ネットワーク・トポロジの階層構造を本質的に考慮する、効率的なトポロジを意識した交換パターン群を提供することが理解されよう。これらの交換の非常に重要な利点は、それらの適用が、XORのように階層型ネットワーク設計の制限されたクラスに制約されないことである。さらにこれらの交換は、性能の点で、スリム・ファット・ツリーにおけるXORおよび線形シフトの両方を20から40%上回る。ドラゴンフライでは、この差はより顕著であり、基本的な線形シフトに比べて300%(交換は3倍の速さで完了する)、ランダムな線形シフトに比べて60%上回り、これが現在は最善の手法であるとみなされている(もちろん、XORはこのケースでは適用不可である)。
【0046】
説明された例示の実施形態に対して、多くの変形および修正が実行可能であることを理解されよう。たとえば前述の交換の代替実施形態において、あらゆる相における交換の構造は完全に保持されるが、相自体は、上記で使用された基本の
【数20】
の順序とは異なる順序で実行される。この相順序は、シーケンス
【数21】
の任意の置換とすることができる。すなわち前述の交換方法は、相の順序を前述の順序の任意の置換に変更することによって、修正可能である。第1、第2、および第4の交換方法では、これは、交換の各連続相について、整数値
【数22】
の異なる1つを取る相インデックスpを使用することによって達成可能であり、これらの値は任意の順序で発生可能である。前述の第3の交換方法では、この方法と共に取得される結果として生じる交換の相は、単に別の相順序で実行可能である。以前の交換プロセスは遠隔性増加(すなわちネットワーク・トポロジにおける階層距離の増加)の順に進行し、異なる相順序では、任意の所与の相でのメッセージ交換は同じ「遠隔性の値」を有するものであった。すなわち、任意の特定相内のすべてのメッセージによって、同じ階層距離がトラバースされた。各個別の相の構造がこの順序変更によって影響を受けないままであるという事実は、依然として、前述のほとんどの性能利得が保持されることにつながる。
【0047】
ここまで、いくつかのシステムについて、簡略化のために計算ノードあたり1つのタスクを有するものとして説明してきたが、計算ノードあたり複数のタスクが存在する場合でも動作は本質的に同じである。そのため、タスク・レベルとスイッチ・レベルとの間に追加の階層レベルが効果的に加えられる。したがって、計算ノードあたり単一のタスクを備えるシステムでは、レベルl
1グループは、計算ノードのグループに接続されたスイッチに対応する。計算ノードが複数のタスクを含むシステムでは、レベルl
1グループは計算ノードに対応する。
【0048】
所与のネットワークについて特定の交換関数が事前に決定できるが、この関数はもちろん、たとえば条件または動作要件の変更に合わせるために、動作時に動的に変更可能である。
【0049】
本発明の範囲を逸脱することなく、説明された実施形態に対して多くの他の変更および修正が実行可能である。