(57)【特許請求の範囲】
【請求項１】
並列計算機システムに含まれる他の情報処理装置と複数の経路を介して接続される情報処理装置において、
輻輳情報の収集と、通信とを指示する演算処理装置と、
通信を行なう経路情報を保持する経路情報保持部と、
輻輳情報の収集を行なうための輻輳情報収集パケットを前記複数の経路のいずれかに送信する送信部と、
前記複数の経路のいずれかから前記輻輳情報収集パケットに対応する輻輳情報収集応答パケットを受信する受信部と、
前記演算処理装置が輻輳情報の収集を指示した場合に、生成した輻輳情報収集パケットを前記送信部に送信させ、前記受信部が受信した輻輳情報収集応答パケットから得られた輻輳情報に基づき前記経路情報を前記経路情報保持部に保持させ、前記演算処理装置が通信の開始を指示した場合に前記経路情報保持部から経路情報を選択し、選択した経路情報に基づいて前記演算処理装置が指示した通信を前記送信部に行なわせる制御部とを有し、
前記演算処理装置は、前記制御部の受信する輻輳情報収集応答パケット数と前記輻輳情報収集パケットを送信してから前記輻輳情報収集応答パケットを受信するまでのタイムアウト期間とを、前記輻輳情報の収集の指示を開始する時に指定し、
前記制御部は、指定された数の輻輳情報収集応答パケットを受信したとき、または輻輳情報の収集を開始してから指定した前記タイムアウト期間が経過したときに、輻輳情報の収集を終了する
ことを特徴とする情報処理装置。
【請求項２】
前記情報処理装置において、
前記制御部は、前記演算処理装置が通信の開始と共に輻輳情報の収集を前記制御部に指示したときに輻輳情報を収集することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記情報処理装置において、
前記輻輳情報は、前記制御部が前記輻輳情報収集応答パケットを受信した戻り順であることを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記情報処理装置において、
前記演算処理装置は、前記輻輳情報収集パケットが通過する、前記情報処理装置から送信先情報処理装置までの往路の経路と、前記輻輳情報収集応答パケットが通過する、前記送信先情報処理装置から前記情報処理装置までの復路の経路とを指定することを特徴とする請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記情報処理装置において、
前記輻輳情報は、前記輻輳情報収集パケットを前記制御部が送信してから前記輻輳情報収集応答パケットを前記制御部が受信するまでの応答時間であることを特徴とする請求項１または２に記載の情報処理装置。
【請求項６】
前記情報処理装置において、
前記輻輳情報は、前記輻輳情報収集パケットおよび前記輻輳情報収集応答パケットが通過したスイッチのバッファのバッファ使用量であることを特徴とする請求項１または２に記載の情報処理装置。
【請求項７】
前記情報処理装置において、
前記演算処理装置は、前記制御部に輻輳情報の収集を所定の間隔で繰り返すように指示し、
前記制御部は、指示された前記所定の間隔で前記輻輳情報収集パケットを繰り返し送って、受信した輻輳情報収集応答パケットから得られた輻輳情報を前記経路情報保持部に書込み、前記輻輳情報の書込み後、前記情報処理装置が通信中である場合には、通信中の経路を選択し直すことを特徴とする請求項１に記載の情報処理装置。
【請求項８】
複数の情報処理装置が接続された並列計算機システムにおいて、
前記情報処理装置は、
並列計算機システム内の輻輳情報の収集と、通信とを指示する演算処理装置と、
他の情報処理装置との通信を行なう経路情報を保持する経路情報保持部と、
輻輳情報の収集を行なうための輻輳情報収集パケットを他の情報処理装置に対して送信する送信部と、
他の情報処理装置からの輻輳情報収集パケットと、前記送信部から送信した輻輳情報収集パケットに対応する他の情報処理装置からの輻輳情報収集応答パケットとを受信する受信部と、
前記演算処理装置が輻輳情報の収集を指示した場合に輻輳情報収集パケットを前記送信部に送信させ、前記受信部が受信した輻輳情報収集応答パケットから得られた輻輳情報に基づき前記経路情報を前記経路情報保持部に保持させ、前記演算処理装置が通信の開始を指示した場合に前記経路情報保持部から経路情報を選択し、選択した経路情報に基づいて前記演算処理装置が指示した通信を前記送信部に行わせるとともに、他の情報処理装置からの輻輳情報収集パケットを受信した場合には対応する輻輳情報収集応答パケットを生成し、生成した輻輳情報収集応答パケットを他の情報処理装置へ前記送信部に送信させる制御部とを有し、
前記演算処理装置は、前記制御部の受信する輻輳情報収集応答パケット数と前記輻輳情報収集パケットを送信してから前記輻輳情報収集応答パケットを受信するまでのタイムアウト期間とを、前記輻輳情報の収集の指示を開始する時に指定し、
前記制御部は、指定された数の輻輳情報収集応答パケットを受信したとき、または輻輳情報の収集を開始してから指定した前記タイムアウト期間が経過したときに、輻輳情報の収集を終了する
ことを特徴とする、
並列計算機システム。
【請求項９】
第１の情報処理装置と第２の情報処理装置を含む複数の情報処理装置が複数の経路を介して接続された並列計算機システムの制御方法において、
前記第１の情報処理装置が有する演算処理装置が、前記第１の情報処理装置が有する第１の制御部の受信する輻輳情報収集応答パケット数と輻輳情報収集パケットを送信してから前記輻輳情報収集応答パケットを受信するまでのタイムアウト期間とを指定すると共に、輻輳情報の収集を指示し、
前記演算処理装置が輻輳情報の収集を指示した場合に、前記第１の制御部が、輻輳情報の収集を行なう輻輳情報収集パケットを生成し、
前記第１の情報処理装置が有する第１の送信部が、前記第１の制御部が生成した輻輳情報収集パケットを前記複数の経路のいずれかに送信し、
前記第２の情報処理装置が有する第２の受信部が、前記複数の経路のいずれかを介して輻輳情報収集パケットを受信し、
前記第２の情報処理装置が有する第２の制御部が、前記第２の受信部が受信した輻輳情報収集パケットに対応する輻輳情報収集応答パケットを生成し、
前記第２の情報処理装置が有する第２の送信部が、前記第２の制御部が生成した輻輳情報収集応答パケットを前記複数の経路のいずれかに送信し、
前記第１の情報処理装置が有する第１の受信部が、前記複数の経路のいずれかから前記輻輳情報収集パケットに対応する輻輳情報収集応答パケットを受信し、
指定された数の輻輳情報収集応答パケットを受信したとき、または輻輳情報の収集を開始してから指定した前記タイムアウト期間が経過したときに、前記第１の制御部が輻輳情報の収集を終了し、
前記第１の制御部が、前記第１の受信部が受信した輻輳情報収集応答パケットから得られた輻輳情報に基づき前記第１の情報処理装置が有する経路情報保持部が保持する経路情報を書き替え、
前記書き替えた経路情報に基づいて前記演算処理装置が指示した通信を、前記第１の制御部が前記第１の送信部に行なわせることを特徴とする並列計算機システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、並列計算機システム、および並列計算機システムの制御方法に関する。
【背景技術】
【０００２】
並列計算機には、計算を行う情報処理装置である複数のノードと、ノード間のネットワークを構成する複数のスイッチとが含まれる。なお、以下の説明において並列計算機のノードとは、理がない限り、計算を行なう情報処理装置を指す。
【０００３】
図１は、ノードおよびスイッチを含む並列計算機の構成図を示す。
図１には、並列計算機のネットワークトポロジの例示として、ノードが２次元に配置され、かつ水平方向をＸ軸、垂直方向をＹ軸、図１の左下を原点とする4×4の２次元メッシュの構造が示されている。図１に示すように、各ノードｎ００〜ｎ３３は、対応する１つのスイッチｓ００〜ｓ３３とそれぞれ接続される。また、各スイッチｓ００〜Ｓ３３は、スイッチｓ００〜ｓ３３のうち、Ｘ軸方向およびＹ軸方向において隣接するスイッチと接続される。このようにして、並列計算機におけるノード間のネットワークが構成される。
【０００４】
２つのノード間の通信経路は、並列計算機のネットワークトポロジによっては複数存在する。
図２は、並列計算機の4×4の２次元メッシュトポロジを示す図である。例えば、図２に示す並列計算機の4×4の２次元メッシュトポロジにおいて、(x,y)=(0,3)のノードｎ０３が(x,y)=(3,0)のノードｎ３０に通信を行う場合には、ホップ数が最小の６ホップとなるものだけでも経路は20通り存在する。
【０００５】
複数の経路の中から経路を選択する方法としては、ソースルーティングと次元順ルーティングがある。
ソースルーティングは、パケットを送信するノードが、パケットが通過する経路を決め、パケットにその通過する経路を指定する方法である。このソースルーティングには、ストリクトソースルーティング(strict source routing)およびルーズソースルーティング(loose source routing)がある。ストリクトソースルーティングでは、パケットが通過する経路の全てを、パケットを送信するノードが指定する。ルーズソースルーティングでは、ストリクトソースルーティングのように全ての経路を指定するとパケットヘッダが大きくなることから、パケットが通過する経路の一部を、パケットを送信するノードが指定し、残りの経路を次元順ルーティングなどに従ってルータが決める。
【０００６】
次元順ルーティングは、予め決められた順番で各次元（各座標軸）のアドレスを通信相手ノードに合わせる方法である。例えば、図２に示した２次元メッシュトポロジでは、２通りの次元順ルーティングがある。すなわち、最初にＸ軸のアドレスを合わせ、次にＹ軸のアドレスを合わせる方法（Ｘ軸、Ｙ軸順の次元順ルーティング）と、最初にＹ軸のアドレスを合わせ、次にＸ軸のアドレスを合わせる方法（Ｙ軸、Ｘ軸順の次元順ルーティング）がある。
【０００７】
複数の経路の中からどの経路を用いて通信を行うかは、並列計算機の性能面から重要である。
図３は、複数の通信の経路に輻輳が生じた場合におけるルーティングの一例を示す図である。図４は、複数の通信の経路に輻輳が生じていない場合におけるルーティングの一例を示す図である。図３および図４には、ノードｎ０３がノードｎ３０へ通信ｃ１を行い、ノードｎ１３がノードｎ３1へ通信ｃ２を行い、ノードｎ２３がノードｎ３２へ通信ｃ３を行う例がそれぞれ示されている。図３に示すＸ軸、Ｙ軸順の次元順ルーティングでは、各ノード間の通信ｃ１〜ｃ３が特定のリンクに集中し、特定の経路に輻輳が生じている。一方、図４に示すＹ軸、Ｘ軸順の次元順ルーティングでは、各ノード間の通信ｃ１〜ｃ３は特定のリンクに集中しておらず、経路に輻輳は生じていない。
【０００８】
そこで、各ノード間の通信が特定のリンクに集中して特定の経路に輻輳が生じることがないようにするためのルーティング方法が必要である。具体的には、経路の通信状態に応じて最適な経路を選択するルーティング方法が必要である。このように通信状態に応じて動的に経路を切り替えるルーティング方法は、アダプティブルーティングと呼ばれ、いくつかの方法が従来技術として提案されている。
【０００９】
経路の通信状態に応じて最適な経路を選択するルーティング方法の従来技術としては、ノード間の通信におけるメッセージの送信レイテンシを測り、送信レイテンシに基づいてノード間の経路を変更する方法がある。そのルーティングの具体的な手順は、以下の通りである。
（１）  ローカルノードにおいてリモートノードへの経路の集合を作る。ここで、ローカルノードとは、ノード間通信において通信を要求する側のノードを指す。また、リモートノードとは、ノード間通信においてローカルノードからの通信の要求を受け付ける側のノードを指す。
（２）  ローカルノードは、作成した経路の集合に含まれる各経路を介してリモートノードへメッセージを送り、メッセージがリモートノードに届くまでのレイテンシを測る。レイテンシの計測は、メッセージが通過するスイッチにおいてレイテンシをメッセージのフィールドに加算していき、リモートノードに届くと、レイテンシをローカルノードに送り返すことで行う。
（３）  測ったレイテンシを基に経路の集合に含まれる全ての経路のレイテンシを計算し、閾値以下のレイテンシの経路は、経路の集合に追加する。閾値を超えたレイテンシの経路は、経路の集合から削除する。
（４）  ローカルノードは、送信メッセージの経路を経路の集合から選ぶ。選び方はレイテンシが小さいものを優先にする。
（５）  以降、上記の（２）に戻り、レイテンシ計測、経路の集合の生成、および経路選択を繰り返す。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第３９８０４８８号公報
【特許文献２】特表平８−５０３７９９号公報
【非特許文献】
【００１１】
【非特許文献１】D. Franco, I. Garces, and E. Luque, “A new method to make communication latency uniform: Distributed routing balancing,” in  ACM International Conference on Supercomputing (ICS), Greece, 1999.
【発明の概要】
【発明が解決しようとする課題】
【００１２】
前述した従来技術のルーティング方法には、以下のような４つの問題がある。
第１に、従来技術のルーティング方法における経路選択は、メッセージ毎に行われる。このため、特にノードが有する演算処理装置が経路選択を行う場合には、経路選択に要するレイテンシが性能に影響を与えるため問題となる。また、演算処理装置の使用効率が悪くなる。
【００１３】
第２に、従来技術のルーティング方法では、ローカルノードからリモートノードに至る方向のレイテンシしか測っていない。しかし、Get通信、すなわち、ローカルノードが自身とリモートノードの主記憶領域を指定し、リモートノードの主記憶領域のデータをローカルノードの主記憶領域に書き込む通信などのように、リモートノードがメッセージを送信する場合では、リモートノードからローカルノードに至る方向のレイテンシが重要である。このため、リモートノードがメッセージを送信する場合、従来技術のルーティング方法では有効な経路選択ができない。
【００１４】
第３に、従来技術のルーティング方法では、メッセージ送信中は経路が変更できない。このため、メッセージ送信中の経路の輻輳発生に対応することができない。
第４に、従来技術のルーティング方法では、複数のノードがそれぞれメッセージを送信する場合に、一部が共通する経路を使って通信を行う可能性がある。このため、従来技術のルーティング方法では、複数のノードが通信を行う場合、経路の輻輳が起きる可能性がある。
【００１５】
そこで、通信要求を受け付けた側の情報処理装置までの経路選択を通信の送信とは分離して行う情報処理装置、並列計算機システム、および並列計算機システムの制御方法を提供する必要がある。
【課題を解決するための手段】
【００１６】
本発明の実施形態に従えば、並列計算機システムに含まれる他の情報処理装置と複数の経路を介して接続される情報処理装置は、輻輳情報の収集と、通信とを指示する演算処理装置と、通信を行なう経路情報を保持する経路情報保持部と、輻輳情報の収集を行なうための輻輳情報収集パケットを複数の経路のいずれかに送信する送信部と、複数の経路のいずれかから輻輳情報収集パケットに対応する輻輳情報収集応答パケットを受信する受信部と、演算処理装置が輻輳情報の収集を指示した場合に、生成した輻輳情報収集パケットを送信部に送信させ、受信部が受信した輻輳情報収集応答パケットに含まれる輻輳情報に基づき経路情報保持部から経路情報を選択し、選択した経路情報に基づいて演算処理装置が指示した通信を送信部に行なわせる制御部とを有する。
【００１７】
本発明の実施形態に従えば、複数の情報処理装置が接続された並列計算機システムは次のような特徴を有する。すなわち、並列計算機システムの各情報処理装置は、並列計算機システム内の輻輳情報の収集と、通信とを指示する演算処理装置と、他の情報処理装置との通信を行なう経路情報を保持する経路情報保持部と、輻輳情報の収集を行なうための輻輳情報収集パケットを他の情報処理装置に対して送信する送信部と、他の情報処理装置からの輻輳情報収集パケットと、送信部から送信した輻輳情報収集パケットに対応する他の情報処理装置からの輻輳情報収集応答パケットとを受信する受信部と、演算処理装置が輻輳情報の収集を指示した場合に輻輳情報収集パケットを送信部に送信させ、受信部が受信した輻輳情報収集応答パケットに含まれる輻輳情報に基づき経路情報保持部から経路情報を選択し、選択した経路情報に基づいて演算処理装置が指示した通信を送信部に行わせるとともに、他の情報処理装置からの輻輳情報収集パケットを受信した場合には対応する輻輳情報収集応答パケットを生成し、他の情報処理装置に生成した輻輳情報収拾応答パケットを送信部に送信させる制御部とを有する。
【００１８】
本発明の実施形態に従えば、第１の情報処理装置と第２の情報処理装置を含む複数の情報処理装置が複数の経路を介して接続された並列計算機システムの制御方法は、以下の構成を含む。すなわち、第１の情報処理装置が有する演算処理装置が、輻輳情報の収集を指示し、演算処理装置が輻輳情報の収集を指示した場合に、第１の情報処理装置が有する第１の制御部が、輻輳情報の収集を行なう輻輳情報収集パケットを生成し、第１の情報処理装置が有する第１の送信部が、第１の制御部が生成した輻輳情報収集パケットを複数の経路のいずれかに送信し、第２の情報処理装置が有する第２の受信部が、複数の経路のいずれかを介して輻輳情報収集パケットを受信し、第２の情報処理装置が有する第２の制御部が、第２の受信部が受信した輻輳情報収集パケットに対応する輻輳情報収集応答パケットを生成し、第２の情報処理装置が有する第２の送信部が、第２の制御部が生成した輻輳情報収集応答パケットを複数の経路のいずれかに送信し、第１の情報処理装置が有する第１の受信部が、複数の経路のいずれかから輻輳情報収集パケットに対応する輻輳情報収集応答パケットを受信し、第１の制御部が、受信部が受信した輻輳情報収集応答パケットに含まれる輻輳情報に基づき経路情報保持部が保持する経路情報を書き替え、書き替えた経路情報に基づいて演算処理装置が指示した通信を、第１の制御部が第１の送信部に行なわせる。
【発明の効果】
【００１９】
本発明の実施形態に従えば、通信要求を受け付けた側の情報処理装置までの通信経路の選択は、通信を要求した側の情報処理装置の演算処理装置の指示に従って制御部により行われる。このため、通信を要求した側の情報処理装置の演算処理装置による経路選択のレイテンシを減らすことができる。また、演算処理装置の利用効率を下げないようにすることができる。
【図面の簡単な説明】
【００２０】
【図１】ノードおよびスイッチを含む並列計算機の構成図である。
【図２】並列計算機の4×4の2次元メッシュトポロジを示す図である。
【図３】複数の通信の経路に輻輳が生じたルーティングの一例を示す図である。
【図４】複数の通信の経路に輻輳が生じていないルーティングの一例を示す図である。
【図５】第１の実施形態に従った並列計算機のノードの構成図である。
【図６】第１の実施形態に従った並列計算機のスイッチの構成図である。
【図７】第１の実施形態に従った並列計算機におけるルーティングの概略的説明図である。
【図８】第１の実施形態に従った制御部が行う輻輳情報収集パケットの送信から戻り順の記録までの処理のフローチャートである。
【図９】第１の実施形態に従った輻輳情報収集パケットおよび輻輳情報収集応答パケットのフィールドを示す図である。
【図１０】第１の実施形態に従った経路テーブルの一例である。
【図１１】第１の実施形態に従った輻輳情報収集パケットおよび輻輳情報収集応答パケットのルーティングヘッダの構成図である。
【図１２】第１の実施形態に従った、パケットを中継するスイッチの処理のフローチャートである。
【図１３】第１の実施形態に従った経路選択を行う制御部の処理のフローチャートである。
【図１４】第２の実施形態に従った並列計算機の構成図である。
【図１５】第２の実施形態に従ったノードの構成図である。
【図１６】第２の実施形態に従った輻輳情報収集指示パケットのフィールドを示す図である。
【図１７】第２の実施形態に従った経路テーブルの一例である。
【図１８】第２の実施形態に従った経路選択パケットのフィールドを示す図である。
【図１９】第２の実施形態に従った経路パケットのフィールドを示す図である。
【図２０】第２の実施形態に従った輻輳情報収集ノードのネットワークインタフェース装置の制御部が行う処理のフローチャートである。
【図２１】第３の実施形態に従ったノードの構成図である。
【図２２】第３の実施形態に従った輻輳情報収集指示パケットのフィールドを示す図である。
【図２３】第３の実施形態に従った輻輳情報収集ノードのネットワークインタフェース装置の制御部が行う処理のフローチャートである。
【図２４】第４の実施形態に従ったノードがローカルノードである場合のノードの構成図である。
【図２５】第４の実施形態に従ったノードが行う処理のフローチャートである。
【図２６】第５の実施形態に従ったノードがローカルノードである場合のノードの構成図である。
【図２７】第５の実施形態に従った輻輳情報収集パケットおよび輻輳情報収集応答パケットのフィールドを示す図である。
【図２８】第５の実施形態に従った経路テーブルの一例である。
【図２９】第６の実施形態に従ったノードの構成図である。
【図３０】第６の実施形態に従った輻輳情報収集パケットおよび輻輳情報収集応答パケットのフィールドを示す図である。
【図３１】第６の実施形態に従った経路テーブルの一例である。
【図３２】第６の実施形態に従ったスイッチの構成図である。
【図３３】第７の実施形態に従ったノードがローカルノードである場合のノードの構成図である。
【図３４】第７の実施形態に従ったローカルノードの制御部が行う処理のフローチャートである。
【発明を実施するための形態】
【００２１】
以下、図面を参照しながら、実施形態を詳細に説明する。
なお、以下に記載する各実施形態は、本発明の一側面をそれぞれ説明するものにすぎない。したがって、各実施形態を相互に排他的なものと捉えるべきではなく、各実施形態を組み合わせることは可能であることに留意すべきである。
【００２２】
＜第１の実施形態＞
第１の実施形態に従った並列計算機では、通信を行うローカルノードのネットワークインタフェース装置が複数の経路の輻輳情報を収集し、収集した輻輳情報と演算処理装置からの経路選択指示とを基にルーティングを行う。輻輳情報の収集は、ローカルノードのネットワークインタフェース装置が輻輳情報を収集する対象の経路を通じて輻輳情報収集パケットをリモートノードに送ることにより行われる。また、輻輳情報の収集は、輻輳情報収集パケットを受信したリモートノードのネットワークインタフェース装置が輻輳情報収集応答パケットをローカルノードに送り返すことにより行われる。
【００２３】
なお、輻輳情報とは、対象とする経路がどの程度混んでいるかを示す情報を指す。輻輳情報は、例えば、対象とする経路のレイテンシ、および対象とする経路上のスイッチのバッファ使用量などである。
【００２４】
また、以下の説明における経路候補とは、輻輳情報収集パケットを送って輻輳情報を収集する対象の経路を指す。
第１の実施形態に従った並列計算機は、例えば図１に示すように、計算を行う情報処理装置であるノードｎ００〜ｎ３３と、ノード間のネットワークを構成するスイッチｓ００〜ｓ３３とを含む並列計算機である。
【００２５】
図５は、第１の実施形態に従った並列計算機のノードの構成図である。
第１の実施形態に従った並列計算機を構成する各ノードは、どのノードがどのノードに通信をおこなうかの通信の態様によって、通信毎に、ローカルノードとなり、またはリモートノードとなる。図５は、ローカルノードおよびリモートノードの何れにもなり得るノードｎ１を図示している。
【００２６】
図５に示すように、第１の実施形態に従ったノードｎ１には、演算処理装置１０１、ネットワークインタフェース装置１０２、および主記憶部１０３が含まれる。演算処理装置１０１、ネットワークインタフェース装置１０２、および主記憶部１０３は、バス１０４を介してそれぞれ相互に接続される。
【００２７】
演算処理装置１０１は、ネットワークインタフェース装置１０２を介して入力されたメッセージおよびデータに基づいて演算処理を実行する。また、演算処理装置１０１は、他のノードｎ１に送信するメッセージおよびデータを生成し、それらを送信先のノードｎ１のアドレスと共にネットワークインタフェース装置１０２に送信する。
【００２８】
ネットワークインタフェース装置１０２は、演算処理装置１０１とネットワーク１０５との間のメッセージおよびデータの送受信を制御する。ネットワークインタフェース装置１０２には、制御部１０２１、経路テーブル記憶部１０２２、パケット送信部１０２３、パケット受信部１０２４、およびDirect Memory Access（ＤＭＡ）コントローラ１０２５が含まれる。
【００２９】
図５に示したノードｎ１がローカルノードである場合、制御部１０２１は、演算処理装置１０１からの輻輳情報の収集指示に基づいて、輻輳情報収集のためのパケット（輻輳情報収集パケット）をリモートノードに送信するようにパケット送信部１０２３に指示する。そして、制御部１０２１は、リモートノードから返送された輻輳情報収集に応答したパケット（輻輳情報収集応答パケット）をパケット受信部１０２４から受信し、収集した輻輳情報を経路テーブル記憶部１０２２内の経路テーブルに記憶する。また、制御部１０２１は、演算処理装置１０１からの通信開始の指示に基づいて、経路テーブル記憶部１０２２内の経路テーブルを参照して経路を選択し、選択した経路を用いたパケットを送信するようにパケット送信部１０２３に指示する。
【００３０】
図５に示したノードｎ１がリモートノードである場合、制御部１０２１は、ローカルノードから送信された輻輳情報収集パケットを、パケット受信部１０２４を介して受信する。そして、制御部１０２１は、受信した輻輳情報収集パケットを基に輻輳情報収集応答パケットを生成し、生成した輻輳情報収集応答パケットを、パケット送信部１０２３を介してローカルノードに返す。
【００３１】
制御部１０２１は、例えばＬＳＩ（Large Scale Integrated circuit）により実現された論理回路である。
ＤＭＡコントローラ１０２５は、制御部１０２１からの要求に基づいて主記憶部１０３との間で演算処理装置１０１を介さずにＤＭＡ転送を行い、主記憶部１０３に記憶されるデータの読み出しおよび書き込みを行う。
【００３２】
パケット送信部１０２３は、制御部１０２１からの送信指示に基づいてパケットを他のノードｎ１にネットワーク１０５を介して送信する。パケット送信部１０２３は、例えばＬＳＩにより実現された論理回路である。
【００３３】
パケット受信部１０２４は、他のノードｎ１から送信されたパケットを、ネットワーク１０５を介して受信し、受信したパケットを制御部１０２１に送信する。パケット受信部１０２４は、例えばＬＳＩにより実現された論理回路である。
【００３４】
経路テーブル記憶部１０２２は、輻輳情報を収集する対象の経路の輻輳情報を含んだ経路テーブルを記憶する。経路テーブル記憶部１０２２は、例えばStatic Random Access Memory（SRAM）などのRandom Access Memory（RAM）である。
【００３５】
主記憶部１０３には、演算処理装置１０１により実行されるプログラム、および各種のデータが記憶される。主記憶部１０３は、例えばDynamic Random Access Memory（DRAM）などのRAMである。
【００３６】
図６は、第１の実施形態に従った並列計算機のスイッチの構成図である。図６には、各ノードｎ１を１次元のネットワークに接続する場合のスイッチが図示されている。2次元メッシュや３次元トーラス等の多次元のネットワークを構成する場合、スイッチｓ１は、図６に示したポートの数を増やした構成となる。
【００３７】
図６に示すように、スイッチｓ１には、ネットワークインタフェース装置１０２へ接続するポートｐ１と、他のスイッチｓ１へ接続するポートｐ２、ｐ３とが含まれる。
図６に示すように、各ポートｐ１、ｐ２、ｐ３には、送信部ｔ１、ｔ２、ｔ３、および受信部ｒ１、ｒ２、ｒ３がそれぞれ含まれる。
【００３８】
各ポートの送信部ｔ１、ｔ２、ｔ３は、スイッチｓ１内でパケットをそれぞれ送信し、各受信部ｒ１、ｒ２、ｒ３は、スイッチｓ１内でパケットをそれぞれ受信する。また、各送信部ｔ１、ｔ２、ｔ３は、スイッチｓ１の外にあるネットワークインタフェース装置１０２および他のスイッチｓ１からパケットをそれぞれ受信し、各受信部ｒ１、ｒ２、ｒ３は、パケットをスイッチｓ１の外にあるネットワークインタフェース装置１０２および他のスイッチｓ１にそれぞれ送信する。ネットワークインタフェース装置１０２または他のスイッチｓ１から受信されたパケットは、送信部ｔ１、ｔ２、ｔ３にそれぞれ送られ、各送信部ｔ１、ｔ２、ｔ３から他のポートの受信部ｒ１、ｒ２、ｒ３にそれぞれ送られ、そしてポートに接続されたネットワークインタフェース装置１０２または他のスイッチｓ１にそれぞれ送られる。
【００３９】
各ポートの送信部ｔ１、ｔ２、ｔ３には、制御部ｔ１ｃ、ｔ２ｃ、ｔ３ｃおよびバッファｔ１ｂ、ｔ２ｂ、ｔ３ｂがそれぞれ含まれる。また、各ポートの受信部ｒ１、ｒ２、ｒ３には、制御部ｒ１ｃ、ｒ２ｃ、ｒ３ｃおよびバッファｒ１ｂ、ｒ２ｂ、ｒ３ｂがそれぞれ含まれる。
【００４０】
各制御部ｔ１ｃ、ｔ２ｃ、ｔ３ｃ、ｒ１ｃ、ｒ２ｃ、ｒ３ｃは、パケットの送受信に関する制御を行う。
図６には、ポートｐ１の送信部の制御部ｔ１ｃと、各ポートｐ２、ｐ３の受信部の制御部ｒ２ｃ、ｒ３ｃとの間でパケットの送受信がそれぞれ行なわれる場合を一例として図示している。また、図６では、各ポートｐ２、ｐ３の送信部の制御部ｔ２ｃ、ｔ３ｃと、ポートｐ１の送信部の制御部ｒ１ｃとの間でパケットがそれぞれ送受信される場合を一例として図示している。
【００４１】
各制御部ｔ１ｃ、ｔ２ｃ、ｔ３ｃ、ｒ１ｃ、ｒ２ｃ、ｒ３ｃは、例えばＬＳＩにより実現される論理回路である。
各バッファｔ１ｂ、ｔ２ｂ、ｔ３ｂ、ｒ１ｂ、ｒ２ｂ、ｒ３ｂは、送受信されるパケットをそれぞれ記憶する。各バッファｔ１ｂ、ｔ２ｂ、ｔ３ｂ、ｒ１ｂ、ｒ２ｂ、ｒ３ｂは、例えばSRAMなどのRAMである。
【００４２】
スイッチｓ１のポート数は、ネットワークのトポロジによって変わる。例えば、図１に示した２次元メッシュの構造では、ネットワークインタフェース１０２に対する1ポートと他のスイッチｓ１に対する４ポートの合計５ポートが必要である。この場合のポートの構成自体は、図６に示したスイッチのポートと同様である。
【００４３】
第１の実施形態に従った並列計算機が行う基本的な処理を、図７を参照して概略的に説明する。
図７は、第１の実施形態に従った並列計算機におけるルーティングの概略的説明図である。図７では、一例として、収集する輻輳情報を輻輳情報収集応答パケットの戻り順とし、演算処理装置が指示する通信経路の順番を戻り順とする。
【００４４】
図７（ａ）に示すように、ローカルノードｌｎ１が輻輳情報を収集する際、ローカルノードｌｎ１のネットワークインタフェース装置１０２は、演算処理装置１０１によって指定された経路候補１、経路候補２、経路候補３を使って輻輳情報収集パケットをリモートノードｒｎ１に送信する。
【００４５】
輻輳情報収集パケットを受け取ったリモートノードｒｎ１のネットワークインタフェース装置１０２は、図７（ｂ）に示すように、輻輳情報収集応答パケットをローカルノードｌｎ１に送り返す。そして、ローカルノードｌｎ１のネットワークインタフェース装置１０２は、リモートノードｒｎ１より受け取った輻輳情報収集応答パケットの戻り順を記録する。
【００４６】
図７（ｃ）に示すように、ローカルノードｌｎ１がリモートノードｒｎ１へ通信を行う際、ローカルノードｌｎ１の演算処理装置１０１は、戻り順で経路を指定する、すなわち、戻り順のうち輻輳情報収集応答パケットが最初に戻った経路を指定する。そして、ネットワークインタフェース装置１０２は、演算処理装置１０１からの指示に基づき、戻り順のうち最初に戻った経路を選択する。図７（ｃ）の例では、経路候補２、経路候補３、経路候補１の順に戻ってきているため、ネットワークインタフェース装置１０２は、最初に戻った経路候補２を選択し、リモートノードｒｎ１との通信を行う。
【００４７】
以下では、第１の実施形態に従った並列計算機について、次のような場合を例としてさらに詳述する。すなわち、輻輳情報を収集するタイミングは、演算処理装置１０１が輻輳情報収集をネットワークインタフェース装置１０２に指示した時であるとする。経路候補の種類は、ローカルノードおよびリモートノード間でパケットが通過する往路と復路の経路が同じであるとする。収集する輻輳情報は、輻輳情報収集応答パケットがローカルノードに戻ってきた戻り順に従うものとする。演算処理装置１０１により指定される経路の順番は、戻り順に従うものとする。なお、これらは第１の実施形態に従った並列計算機を説明するための例示であり、第１の実施形態に従った並列計算機は、これらの場合に限定されない。
【００４８】
第１の実施形態では、ローカルノードのネットワークインタフェース装置１０２の制御部１０２１によって、輻輳情報収集パケットの送信、戻り順等の輻輳情報の記録、および経路選択が行われる。
【００４９】
図８は、第１の実施形態に従った制御部が行う輻輳情報収集パケットの送信から戻り順の記録までの処理のフローチャートである。
ｓｔｅｐ８０１において、ローカルノードの制御部１０２１は、演算処理装置１０１からの輻輳情報収集指示を受信し、輻輳情報の処理を開始する。演算処理装置１０１による輻輳情報収集指示には、リモートノードおよび経路候補に関する指示が含まれる。演算処理装置１０１による経路候補の指定は、例えば、ローカルノードとリモートノードとの間の経路の中継ノードを指定し、ローカルノードと中継ノードとの間の経路、および中継ノードとリモートノードとの間の経路の決め方を次元順ルーティングの次元の順番で指定することにより行われる。
【００５０】
ｓｔｅｐ８０２において、制御部１０２１は、演算処理装置１０１からの輻輳情報収集指示に従って輻輳情報収集パケットを生成する。そして、制御部１０２１は、輻輳情報収集指示により指定された経路を使って、輻輳情報収集パケットをリモートノードへ送信する。輻輳情報収集パケットを受信したリモートノードのネットワークインタフェース装置１０２の制御部１０２１は、輻輳情報収集応答パケットを生成し、生成した輻輳情報収集応答パケットをローカルノードに送り返す。
【００５１】
図９は、第１の実施形態に従った輻輳情報収集パケットおよび輻輳情報収集応答パケットのフィールドを示す図である。
図９に示すパケットフィールド９００中のパケットタイプ９０１は、パケットの種類を指定するフィールドである。ネットワークインタフェース装置１０２１は、パケットタイプ９０１を参照して、参照したパケットが輻輳情報収集パケットであること、または輻輳情報収集応答パケットであることを確認する。
【００５２】
ルーティングヘッダ９０２は、送信先のノードまでの経路を指定するフィールドである。例えば、経路候補を次元順で指定する場合、ルーティングヘッダ９０２には、Ｘ軸→Ｙ軸の順又はＹ軸→Ｘ軸に経路を選択する旨の次元順の情報及びパケットを中継する中継ノードの情報等が含まれる。スイッチｓ１は、ルーティングヘッダ９０２を参照して送信するポートを決める。
【００５３】
ローカルノードアドレス９０３は、輻輳情報収集パケットを送信する送信元のノードであるローカルノードのアドレスを含むフィールドである。輻輳情報収集パケットを受信したネットワークインタフェース装置１０２は、輻輳情報収集パケット中のローカルノードアドレス９０３を参照し、輻輳情報収集応答パケットをそのアドレスのノードに送信する。また、輻輳情報収集応答パケットを受信したネットワークインタフェース装置１０２は、自ノードに送られたパケットであることを輻輳情報収集応答パケット中のローカルノードアドレス９０３を参照して確認する。
【００５４】
リモートノードアドレス９０４は、輻輳情報収集パケットを送信する宛て先のノードであるリモートノードのアドレスを含むフィールドである。輻輳情報収集パケットを受信したネットワークインタフェース装置１０２は、自ノードに送られたパケットであることを輻輳情報収集パケット中のリモートノードアドレス９０４を参照して確認する。また、輻輳情報収集応答パケットを受信したネットワークインタフェース装置１０２は、輻輳情報収集応答パケット中のリモートノードアドレス９０４を参照して輻輳情報を収集したノードを確認する。
【００５５】
経路９０５は、パケットが通る経路の情報を含むフィールドである。経路９０５は、例えば中継ノードと次元順により指定される。リモートノードのネットワークインタフェース装置１０２は、経路９０５に含まれる経路をそのまま輻輳情報収集応答パケットに格納し、ローカルノードに送り返す。ローカルノードのネットワークインタフェース装置１０２は、輻輳情報収集応答パケット中の経路９０５に含まれる経路を経路テーブルに書き込む。
【００５６】
図８のｓｔｅｐ８０３において、制御部１０２１は、リモートノードから送られる輻輳情報収集応答パケットを待ち合わせる。待ち合わせた輻輳情報収集応答パケットを受信すると、制御部１０２１は、輻輳情報収集応答パケットの経路と戻り順を経路テーブルに保存する。
【００５７】
図１０は、第１の実施形態に従った経路テーブルの一例である。本実施形態では、経路テーブルには、経路候補とその経路候補の戻り順が含まれる。
図１０に示した経路テーブルでは、経路候補を経路１、経路２、・・・経路ｎと示している。しかし、例えば各々の経路候補を中継ノードと次元順により指定する場合には、経路１、経路２、・・・経路ｎは、各々の経路の中継ノードおよび次元順により示すことができる。
【００５８】
本実施形態では、輻輳情報収集パケットおよび輻輳情報収集応答パケットは、それらのパケット中のルーティングヘッダの情報を基にスイッチｓ１で中継され、送信先のノードｎ１に届く。そこで、図１１、および図１２を参照しながら、パケットがスイッチｓ１により中継される処理について以下に説明する。
【００５９】
図１１は、第１の実施形態に従った輻輳情報収集パケットおよび輻輳情報収集応答パケットのルーティングヘッダの構成図である。図１１には、例示として、経路候補を中継ノード１１０１と次元順１１０２で指定する場合のルーティングヘッダ１１００が示されている。図１１に示したルーティングヘッダ１１００は、指定された次元順に従って、中継ノード１、中継ノード２を経てリモートノードにパケットが送信される場合におけるルーティングヘッダの一例である。
【００６０】
図１１に示したルーティングヘッダ１１００中のDXi1およびDYi1は、中継ノード１のノードアドレスのＸ軸の値から現在のアドレスを引いた値、およびＹ軸の値から現在のアドレスを引いた値をそれぞれ示す。DXi2およびDYi2は、中継ノード２のノードアドレスのＸ軸の値から現在のアドレスを引いた値、およびＹ軸の値から現在のアドレスを引いた値をそれぞれ示す。DXr、およびDYrは、リモートノードのノードアドレスのＸ軸の値の値から現在のアドレスを引いた値、およびＹ軸の値から現在のアドレスを引いた値をそれぞれ示す。DXi1、DYi1、DXi2、DYi2、DXr、およびDYrは、各ノードへの相対距離および方向をそれぞれ示す。
【００６１】
また、ルーティングヘッダ１１００中の次元順１１０２は、ルーティングを行う次元の順番の指定を示す。例えば、２次元メッシュの構造では、Ｘ軸、Ｙ軸順の次元順、またはＹ軸、Ｘ軸順の次元順が指定される。
【００６２】
図１２は、第１の実施形態に従ったパケットを中継するスイッチの処理のフローチャートである。
ｓｔｅｐ１２０１では、ローカルノードのネットワークインタフェース装置または他のスイッチから受信したパケットをポートの送信部のバッファで保持する。そして、送信部の制御部は、送信部のバッファに保持したパケットのルーティングヘッダを参照する。
【００６３】
ｓｔｅｐ１２０２では、送信部の制御部は、受信したポートを基にルーティングヘッダを更新する。ここで、例えば図１に示した並列計算機の構成図において、図面の左下を原点とし、図面の上方向および右方向を＋方向とし、図面の下方向および左方向を−方向と仮定する。例えば、パケットを受信したポートがＸ軸であり且つ−方向であり、ルーティングヘッダにおいてそれぞれ、DXi1=0、DXi2=1、DXr=3である場合には、中継ノード１のＸ軸の値DXi1が0であるので、中継ノード１に続く中継ノード２のＸ軸の値DXi2を-1する。また、例えば、パケットを受信したポートがＹ軸であり且つ＋方向であり、ルーティングヘッダにおいてそれぞれ、DYi1=-1、DYi2=3、DYr=4である場合には、中継ノード１のＹ軸の値DYi1が0ではないので、DYi1を+1する。
【００６４】
ｓｔｅｐ１２０２でのルーティングヘッダ１１００の更新後、ｓｔｅｐ１２０３では、送信部の制御部は、DXi1、DYi1、DXi2、DYi2、DXr、およびDYrが全て0であるか否かを判定する。
【００６５】
ｓｔｅｐ１２０３での判定において、DXi1、DYi1、DXi2、DYi2、DXr、およびDYrが全て0である場合、そのパケットは、リモートノードに接続されるスイッチｓ１に位置する。そこで、ｓｔｅｐ１２０４において、制御部の送信部は、リモートノードのネットワークインタフェース装置１０２に接続されるポートを選び、ｓｔｅｐ１２０８に進む。
【００６６】
ｓｔｅｐ１２０３での判定においてDXi1、DYi1、DXi2、DYi2、DXr、およびDYrの何れか１つ以上が0ではない場合、ｓｔｅｐ１２０５において、送信部の制御部は、指定されたルーティングを行う次元順がＸ軸、Ｙ軸順の次元順であるか、またはＹ軸、Ｘ軸順の順序による次元順であるかを判定する。
【００６７】
ｓｔｅｐｐ１２０５での判定において、ルーティングを行う次元順がＸ軸、Ｙ軸順の順序による次元順である場合、ｓｔｅｐ１２０６において、送信部の制御部は、DXi1、DYi1、DXi2、DYi2、DXr、DYrの順で非0のフィールドを調べ、該当フィールドと同じ軸でありかつ＋または−の符号が同じ符号であるポートを選ぶ。そして、ｓｔｅｐ１２０８に進む。
【００６８】
ｓｔｅｐ１２０５での判定において、ルーティングを行う次元順がＹ軸、Ｘ軸順の順序による次元順である場合、ｓｔｅｐ１２０７において、送信部の制御部は、DYi1、DXi1、DYi2、DXi2、DYr、DXrの順で非0のフィールドを調べ、該当フィールドと同じ軸でありかつ＋または−の符号が同じ符号であるポートを選ぶ。そして、ｓｔｅｐ１２０８に進む。
【００６９】
ｓｔｅｐ１２０８では、送信部の制御部は、ｓｔｅｐ１２０４、ｓｔｅｐ１２０６、またはｓｔｅｐ１２０７において選択したポートの受信部の制御部に対して送信要求を送る。送信要求には送信するパケットのパケットサイズが含まれる。送信要求を受け取ったポートの受信部の制御部は、受信部のバッファのバッファ使用量を参照して空き容量を調べる。
【００７０】
送信要求を受け取った受信部のバッファの空き容量が送信するパケットのパケットサイズ以上の場合には、受信部の制御部は、送信要求を送ったポートの送信部の制御部に対して送信許可を送る。送信要求を送ったポートの送信部の制御部は、送信許可を受け取ると、該当ポートへパケットを送信する。
【００７１】
一方、送信要求を受け取ったポートの受信部のバッファの空き容量が送信するパケットのパケットサイズよりも小さい場合には、送信要求を送ったポートの送信部の制御部は、バッファが保持するパケットが送信されることにより、受信部のバッファの空き容量がパケットサイズ以上になるのを待つ。そして、送信要求を受け取ったポートのバッファの空き容量がパケットサイズ以上になると、送信要求を送ったポートの送信部の制御部は、選択したポートへパケットを送信する。
【００７２】
次に、第１の実施形態に従った並列計算機のローカルノードが通信を開始する処理を説明する。
第１の実施形態に従った並列計算機では、輻輳情報を収集したリモートノードへの通信を開始する場合、ローカルノードの演算処理装置１０１は、ネットワークインタフェース装置１０２の制御部１０２１に通信開始の指示を送る。そして、制御部１０２１は、演算処理装置１０１により指定された経路選択指示に従って経路テーブルを参照する。制御部１０２１は、経路テーブルから演算処理装置１０１により指定された経路選択指示に従った経路を選択し、選択した経路を使って通信を開始する。
【００７３】
図１３は、第１の実施形態に従った経路選択を行う制御部の処理のフローチャートである。
図１３のｓｔｅｐ１３０１では、ローカルノードの制御部１０２１は、演算処理装置１０１から通信開始の指示を受信する。演算処理装置１０１が行う通信開始の指示には、リモートノードアドレス、通信の種類、メッセージを送信する場合はメッセージの格納場所、および使用する経路の戻り順などに関する経路選択指示が含まれる。
【００７４】
ｓｔｅｐ１３０２では、制御部１０２１は、経路テーブルを参照し、演算処理装置１０１により指定された戻り順などの経路選択指示に従った経路を選択する。
ｓｔｅｐ１３０３では、制御部１０２１は、ｓｔｅｐ１３０２において選択した経路を使って、リモートノードへパケット送信部１０２３を介してパケットを送信する。
【００７５】
以上のように、第１の実施形態に従った並列計算機では、演算処理装置からの経路選択指示を基にネットワークインタフェース装置が経路を選択する。このため、経路選択のレイテンシを短縮することができる。
【００７６】
さらに、演算処理装置が指定する経路選択指示が例えば輻輳情報収集応答パケットの戻り順に関する指示である場合、演算処理装置は、全ての経路候補に対応する輻輳情報収集応答パケットが戻ってくるまで待つ必要がなく、通信開始を指示できる。このため、演算処理装置の使用効率は下がらない。
【００７７】
そして、輻輳情報が例えば輻輳情報収集応答パケットの戻り順の情報により表される場合、当該輻輳情報にはリモートノードからのローカルノードの返りの通信時間も反映されている。このため、Get通信などのリモートノードがメッセージを送信する通信の場合においても適切な経路選択を行うことができる。
【００７８】
また、輻輳情報を収集するタイミングを演算処理装置が通信開始を指示する時ではなく、演算処理装置が輻輳情報収集を指示した時とした場合、演算処理装置が明示的に指定した時のみ、輻輳情報を収集する。このため、通信を行うにあたり、輻輳情報を収集するのか否かを選択することができる。
【００７９】
本実施形態の前述の説明では、ローカルノードのネットワークインタフェース装置１０２１は、演算処理装置１０１からの輻輳情報収集指示に基づいて輻輳情報の収集を開始する。また、ローカルノードのネットワークインタフェース装置１０２１は、演算処理装置１０１からの通信開始の指示に基づいて演算処理装置１０１により指定された経路選択方法に従った経路を選択し、パケットを送信する。しかしながら、演算処理装置１０１は、通信開始の指示と共に輻輳情報収集の指示をネットワークインタフェース装置１０２１に対して行ってもよい。この場合、ローカルノードのネットワークインタフェース装置１０２１は、演算処理装置１０１により指定された経路候補に輻輳情報収集パケットを送信して輻輳情報を収集し、収集した輻輳情報の中から演算処理装置１０１により指定された経路選択指示に従った経路を選択して通信を開始する。
【００８０】
また、本実施形態の前述の説明では、演算処理装置１０１が指定する経路選択指示が戻り順に関する指示として説明した。経路選択指示が戻り順の情報である場合、演算処理装置１０１は、最初に輻輳情報収集応答パケットが戻ってきた時点で、経路を指定することが可能である。しかしながら、演算処理装置１０１が指定する経路選択指示は、戻り順に関する指示に限定されない。したがって、演算処理装置１０１は、例えば、ｋ番目（ｋは１より大きい整数）の輻輳情報収集応答パケットがローカルノードに戻ってきた時点で経路を指定するとすることも可能である。
【００８１】
さらに、本実施形態の上述の説明では、経路候補は、パケットが通過する往路と復路の経路が同じであるとした。しかしながら、本実施形態では、パケットが通過する行きと帰りの経路が異なるとする経路候補を採ることも可能である。
【００８２】
＜第２の実施形態＞
前述したように、第１の実施形態では、各々のローカルノードが経路候補の輻輳情報を収集し、経路選択を行う。
【００８３】
これに対して、第２の実施形態では、ルーティング方式によっては経路を共有するローカルノードのグループおよびリモートノードのグループを、輻輳情報を収集する前に予め設定する。また、ローカルノードグループ内に輻輳情報を収集する輻輳情報収集ノードを予め設定する。そして、ローカルノードグループ内において、輻輳情報収集ノードが収集したリモートノードグループに対する輻輳情報および経路の使用ノードに関する情報を共有する。
【００８４】
すなわち、第２の実施形態では、ローカルノードグループ内の輻輳情報収集ノードは、ローカルノードグループおよびリモートノードグループ間の経路候補の輻輳情報を収集し、収集した輻輳情報を管理する。そして、同じローカルノードグループ内の複数のローカルノードが同じリモートノードグループ内のリモートノードへ通信する場合には、輻輳情報収集ノードは、収集した輻輳情報に基づいて、複数の通信の経路を分散するように経路選択を行う。
【００８５】
図１４は、第２の実施形態に従った並列計算機の構成図である。
図１４には、第２の実施形態に従った並列計算機の例示として、6x6のメッシュ構造が示されている。なお、図１４の並列計算機の構成図では、説明を明確にするために、計算を行う情報処理装置であるノードｎ００〜ｃｎ５５のみが示され、スイッチの図示が省略されている。しかし、第２の実施形態に従った並列計算機は、図１に示した並列計算機の構成図と同様に、各ノードｎ００〜ｃｎ５５に接続された各スイッチを備える。
【００８６】
図１４に示した第２の実施形態に従った並列計算機では、例示として、Ｘ軸、Ｙ軸順の次元順ルーティングにおいて最初に指定された次元であるＸ軸方向で、隣接する３つのノード毎にローカルノードグループｌｎｇ００〜ｌｎｇ１５をそれぞれ設定している。また、例示として、Ｘ軸、Ｙ軸順の次元順ルーティングにおける最後に指定された次元であるＹ軸方向で、隣接する３つのノード毎にリモートノードグループｒｎｇ００〜ｒｎｇ５１をそれぞれ設定している。また、ローカルノードグループｌｎｇ００〜ｒｎｇ１５毎にグループ内の１つのノードを輻輳情報収集ノードｃｎ２０、ｃｎ２１、・・・、ｃｎ２５、およびｃｎ５０、ｃｎ５１、・・・、ｃｎ５５にそれぞれ設定している。
【００８７】
図１５は、第２の実施形態に従ったノードの構成図である。なお、図５に示した第１の実施形態に従ったノードｎ２の構成要素と同じ構成要素には、図１５において同じ参照符号がふられている。
【００８８】
第２の実施形態に従った並列計算機を構成する各ノードｎ２は、どのノードがどのノードに通信をおこなうかの通信の態様によって、ローカルノードとなり、またはリモートノードとなる。また、第２の実施形態に従った並列計算機を構成する各ノードｎ２は、予めの設定に従って輻輳情報を収集する輻輳情報収集ノードとなる。図１５は、ローカルノード、輻輳情報収集ノード、およびリモートノードの何れにもなり得るノードｎ２を示している。
【００８９】
第２の実施形態では、ローカルノード、輻輳情報収集ノード、およびリモートノードの各々の制御部は、以下のような処理をするようにそれぞれ構成される。
図１５に示したノードｎ２がローカルノードである場合、ネットワークインタフェース装置２０２内の制御部２０２１は、演算処理装置１０１から輻輳情報収集指示を受信すると、輻輳情報の収集を指示する輻輳情報収集指示パケットを生成する。そして、制御部２０２１は、生成した輻輳情報収集指示パケットを、パケット送信部１０２３を介して輻輳情報収集ノードへ送信する。
【００９０】
また、図１５に示したノードｎ２がローカルノードである場合、制御部２０２１は、演算処理装置１０１から通信開始の指示を受信すると、経路選択パケットを生成し、生成した経路選択パケットを、パケット送信部１０２３を介して輻輳情報収集ノードに送信する。
【００９１】
そして、図１５に示したノードｎ２がローカルノードである場合、制御部２０２１は、輻輳情報収集ノードから送信された経路パケットを、パケット受信部１０２４を介して受信すると、受信した経路パケットに含まれる選択された経路を使って通信を開始する。制御部２０２１は、通信を完了すると、完了通知パケットを生成し、生成した完了通知パケットを、パケット送信部１０２３を介して輻輳情報収集ノードに送信する。
【００９２】
次に、図１５に示したノードｎ２が輻輳情報収集ノードである場合、制御部２０２１は、ローカルノードから送信される輻輳情報収集指示パケットを、パケット受信部１０２４を介して受信する。そして、制御部２０２１は、輻輳情報収集指示パケットに含まれるリモートノードが属するグループについての輻輳情報を収集していない場合には、輻輳情報収集パケットを生成する。そして、制御部２０２１は、生成した輻輳情報収集パケットを、パケット送信部１０２３を介してリモートノードに送信する。制御部２０２１は、リモートノードから輻輳情報収集応答パケットを、パケット受信部１０２４を介して受信すると、輻輳情報を経路テーブル記憶部１０２２内の経路テーブルに記憶する。
【００９３】
また、図１５に示したノードｎ２が輻輳情報収集ノードである場合、制御部２０２１は、ローカルノードから送信される経路選択パケットを、パケット受信部１０２４を介して受信する。また、制御部２０２１は、経路選択パケットに含まれる経路選択指示に従って、経路テーブル記憶部１０２２に記憶された経路テーブルを参照して経路を選択する。そして、制御部２０２１は、選択した経路についての情報を含む経路パケットを生成し、生成した経路パケットを、パケット送信部１０２３を介してローカルノードに返す。制御部２０２１は、選択した経路がそのローカルノードにより使用中であることを示す情報を経路テーブル記憶部１０２２内の経路テーブルに記憶する。
【００９４】
そして、図１５に示したノードｎ２が輻輳情報収集ノードである場合、制御部２０２１は、ローカルノードから送信される完了通知パケットを、パケット受信部１０２４を介して受信する。そして、制御部２０２１は、経路がそのローカルノードにより使用中であることを示す情報を経路テーブル記憶部１０２２の経路テーブルから消去する。
【００９５】
図１５に示したノードｎ２がリモートノードである場合、制御部２０２１は、輻輳情報収集ノードから送信される輻輳情報収集パケットを、パケット受信部１０２４を介して受信する。そして、制御部２０２１は、受信した輻輳情報収集パケットに基づき輻輳情報収集応答パケットを生成し、生成した輻輳情報収集応答パケットを、パケット送信部１０２３を介して輻輳情報収集ノードに送信する。
【００９６】
第２の実施形態に従ったスイッチの構成は、第１の実施形態に従ったスイッチｓ１の構成と同様である。
第２の実施形態に従った並列計算機について、次の場合を例として以下で詳述する。すなわち、並列計算機のローカルノードグループは、次元順ルーティングにおいてルーティングの最初に指定された次元方向に沿って存在するローカルノードから生成する。また、並列計算機のリモートノードグループは、次元順ルーティングにおいて最後に指定された次元方向で作る。輻輳情報を収集するタイミングは、ローカルノードの演算処理装置１０１が輻輳情報収集を指示した時とする。また、経路候補の種類は、ローカルノードおよびリモートノード間でパケットが通過する行きの経路と帰りの経路が同じであるとする。収集する輻輳情報は、輻輳情報収集応答パケットの戻り順であるとする。ローカルノードの演算処理装置１０１による経路選択指示は、戻り順と使用ノード数についての閾値に関する指示であるとする。なお、これらは第２の実施形態に従った並列計算機を説明するための例示であり、第２の実施形態に従った並列計算機は、このような場合に限定されない。
【００９７】
第２の実施形態では、ローカルノードの演算処理装置１０１は、ネットワークインタフェース装置２０２に対して輻輳情報収集指示を行う。輻輳情報収集指示では、輻輳情報収集パケットを送るリモートノードアドレス、輻輳情報収集ノードアドレス、および輻輳情報を収集する経路候補がそれぞれ指定される。
【００９８】
演算処理装置１０１から輻輳情報収集指示を受け取ったネットワークインタフェース装置２０２は、輻輳情報収集指示パケットを生成する。そして、ネットワークインタフェース装置２０２は、生成した輻輳情報収集指示パケットを同じローカルノードグループ内の輻輳情報収集ノードに送る。
【００９９】
図１６は、第２の実施形態に従った輻輳情報収集指示パケットのフィールドを示す。
図１６に示した輻輳情報収集指示パケットのフィールド１６００中の輻輳情報収集ノードアドレス１６０４は、輻輳情報収集指示パケットの送信先のノードアドレスを含むフィールドである。輻輳情報収集指示パケットを受信したノードのネットワークインタフェース装置２０２は、輻輳情報収集ノードアドレスを参照して自分宛てのパケットであることを確認する。
【０１００】
リモートノードアドレス１６０５は、輻輳情報収集パケットの送信先のリモートノードのノードアドレスであるリモートノードアドレスを含むフィールドである。輻輳情報収集指示パケットを受信した輻輳情報収集ノードのネットワークインタフェース装置２０２は、リモートノードアドレスにより指定されたノードに輻輳情報収集パケットを送信する。
【０１０１】
経路候補１６０６は、輻輳情報収集パケットの送信に使われる経路を含むフィールドである。経路候補１６０６は、例えば中継ノードと次元順などで指定される。輻輳情報収集指示パケットを受信した輻輳情報収集ノードのネットワークインタフェース装置２０２は、経路候補１６０６を使って輻輳情報収集パケットを送信する。
【０１０２】
パケットタイプ１６０１は、パケットの種類を指定するフィールドである。ネットワークインタフェース装置２０２は、パケットタイプ１６０１を参照して、参照したパケットが輻輳情報収集指示パケットであることを確認する。
【０１０３】
ルーティングヘッダ１６０２は、送信先のノードまでの経路を指定するフィールドである。例えば、経路を中継ノードと次元順で指定する場合、ルーティングヘッダ１６０２には、これらの情報が含まれる。
【０１０４】
ローカルノードアドレス１６０３は、輻輳情報収集指示パケットを送信するローカルノードのアドレスであるローカルノードアドレスを含むフィールドである。
輻輳情報収集指示パケットを受け取った輻輳情報収集ノードのネットワークインタフェース装置２０２は、輻輳情報収集指示パケットに含まれるリモートノードが属するグループについての輻輳情報を収集していない場合には、輻輳情報収集パケットを生成する。そして、ネットワークインタフェース装置２０２は、生成した輻輳情報収集パケットを輻輳情報収集指示パケットにより指定された経路を使って送信する。
【０１０５】
輻輳情報収集パケットを受信したリモートノードのネットワークインタフェース装置２０２は、輻輳情報収集応答パケットを生成し、生成した輻輳情報収集応答パケットを輻輳情報収集ノードに送り返す。
【０１０６】
輻輳情報収集ノードのネットワークインタフェース装置２０２は、リモートノードから送られる輻輳情報収集応答パケットを待ち合わせる。輻輳情報収集応答パケットを受信すると、ネットワークインタフェース装置２０２は、輻輳情報収集応答パケットの経路と戻り順を経路テーブルに保存する。
【０１０７】
第２の実施形態において輻輳情報の収集および記録のために輻輳情報収集ノードの制御部２０２１およびリモートノードの制御部２０２１が行う処理は、前述した第１の実施形態に従ったローカルノードの制御部１０２１およびリモートノードの制御部１０２１が行う処理と同様である。
【０１０８】
また、第２の実施形態における輻輳情報収集パケットおよび輻輳情報収集応答パケットを中継するスイッチｓ１の動作は、図１２を参照して前述した第１の実施形態に従ったスイッチｓ１の動作と同様である。
【０１０９】
第２の実施形態に従った経路テーブルには、経路候補、戻り順などの輻輳情報、輻輳情報を収集したリモートノードグループ、および現在の経路の使用状況が記録される。
図１７は、本実施形態に従った経路テーブルの一例である。図１７では、輻輳情報を収集したグループ１についての経路テーブルが示されている。
【０１１０】
図１７に示した経路テーブルの一例では、経路候補を経路１、経路２、・・・経路ｎと示している。しかし、例えば各々の経路候補を中継ノードと次元順により指定する場合には、経路１、経路２、・・・経路ｎは、各々の中継ノードと次元順により示すことができる。
【０１１１】
また、図１７に示した経路テーブルの一例では、経路テーブル中の戻り順が１番目である経路１は、ローカルノードグループ内のノード１による通信およびノード２による通信に用いられていることが示されている。なお、経路テーブル中の使用ノードについての情報は、後述する通信開始時に経路テーブルに書き込まれる。
【０１１２】
このように、第２の実施形態では、輻輳情報収集ノードは、ローカルノードグループ内の輻輳情報をまとめて収集する。このことにより、ローカルノードグループ内では、輻輳情報および経路の使用状況を共有でき、ローカルノードグループ内に含まれるローカルノード間で経路の分散ができる。
【０１１３】
次に、輻輳情報収集指示パケットを送信したローカルノードの演算処理装置１０１は、通信開始を開始する際に、ネットワークインタフェース装置２０２に通信開始を指示する。演算処理装置１０１が行う通信開始の指示には、リモートノードアドレス、通信の種類、メッセージを送信する場合はメッセージの格納場所、および戻り順などに関する経路選択指示が含まれる。通信開始指示を受けたネットワークインタフェース装置２０２は、経路選択パケットを生成する、そして、ネットワークインタフェース装置２０２は、生成した経路選択パケットを輻輳情報収集ノードに送信し、収集した輻輳情報からリモートノードへの経路を選択するように指示する。
【０１１４】
図１８は、第２の実施形態に従った経路選択パケットのフィールドを示す図である。
図１８に示した経路選択パケットフィールド１８００中のパケットタイプ１８０１は、パケットの種類を指定するフィールドである。輻輳情報収集ノードのネットワークインタフェース装置は、パケットタイプ１８０１を参照して、参照したパケットが経路選択パケットであることを確認する。
【０１１５】
ルーティングヘッダ１８０２は、送信先のノードまでの経路を指定するフィールドである。例えば、経路を中継ノードと次元順で指定する場合、ルーティングヘッダ１８０２には、これらの情報が含まれる。
【０１１６】
ローカルノードアドレス１８０３は、経路選択パケットを送信するローカルノードのアドレスを含むフィールドである。
輻輳情報収集ノードアドレス１８０４は、経路選択パケットの送信先のノードアドレスを含むフィールドである。経路選択パケットを受信した輻輳情報収集ノードのネットワークインタフェース装置２０２は、輻輳情報収集ノードアドレスを参照して自分宛てのパケットであることを確認する。
【０１１７】
経路選択方法１８０５は、収集した輻輳情報からリモートノードへの経路を選択する方法についての情報を含むフィールドである。
例えば、経路選択指示が戻り順に関する指示である場合、輻輳情報を収集した輻輳情報収集ノードのネットワークインタフェース装置２０２は、指定された戻り順でリモートノードへの経路を選択する。そして、輻輳情報収集ノードのネットワークインタフェース装置２０２は、選択した経路に関する情報を含む経路パケットを輻輳情報収集指示パケットの送信元であるローカルノードに送り返す。
【０１１８】
図１９は、第２の実施形態に従った経路パケットのフィールドを示す図である。
図１９に示した経路パケットフィールド１９００中のパケットタイプ１９０１は、パケットの種類を指定するフィールドである。経路パケットを受信したローカルノードのネットワークインタフェース装置２０２は、パケットタイプを参照して、そのパケットが経路パケットであることを確認する。
【０１１９】
ルーティングヘッダ１９０２は、送信先のノードまでの経路を指定するフィールドである。例えば、経路を中継ノードと次元順で指定する場合、ルーティングヘッダ１９０２には、これらの情報が含まれる。
【０１２０】
ローカルノードアドレス１９０３は、経路選択パケットを送信したローカルノードのアドレスを含むフィールドである。
リモートノードアドレス１９０４は、選択した経路のリモートノードのアドレスを含むフィールドである。
【０１２１】
経路パケットフィールド１９００中の経路１９０５は、経路選択パケットで指定された経路選択方法に従って輻輳情報収集ノードのネットワークインタフェース装置が選択した経路を含むフィールドである。
【０１２２】
ローカルノードのネットワークインタフェース装置２０２は、輻輳情報収集ノードから送信される経路パケットを受信すると、経路パケットに含まれる経路を使って通信を開始する。そして、ローカルノードのネットワークインタフェース装置２０２は、通信を完了すると、通信を完了したことを示す情報を含む完了通知パケットを輻輳情報収集ノードに送信する。
【０１２３】
輻輳情報収集ノードのネットワークインタフェース装置２０２は、完了通知パケットを受信すると、完了通知パケットの送信元であるローカルノードに関する情報を経路テーブル中の使用ノードの記録から削除する。例えば、図１７に示した経路テーブルにおいて、経路１を使用した通信に関する完了通知パケットをローカルノードであるノード１から受信した場合、輻輳情報収集ノードのネットワークインタフェース装置２０２は、経路１がノード１により使用中である情報を経路テーブル中から削除する。
【０１２４】
以上のように、第２の実施形態では、ローカルノードグループ内の輻輳情報収集ノードがローカルノードグループ内のローカルノード間で共有される経路候補の輻輳情報を収集し、収集した輻輳情報を管理する。また、ローカルノードグループ内のローカルノードが通信する場合には、輻輳情報収集ノードが経路選択を行う。
【０１２５】
図２０は、第２の実施形態に従った輻輳情報収集ノードのネットワークインタフェース装置の制御部が行う処理のフローチャートである。
ｓｔｅｐ２００１において、制御部２０２１が経路選択パケットまたは輻輳情報収集指示パケットを受信するとｓｔｅｐ２００２以下の処理を開始する。
【０１２６】
ｓｔｅｐ２００２では、制御部２０２１は、経路選択パケットまたは輻輳情報収集指示パケットを参照して、経路選択または輻輳情報収集の対象となるリモートノードが属しているリモートノードグループを確認する。図１７に示した経路テーブルの例では、リモートノードグループがグループ1であるか否かを確認する。
【０１２７】
ｓｔｅｐ２００３において、経路選択または輻輳情報収集の対象となるリモートノードが属しているリモートノードグループが経路テーブルにない場合、ｓｔｅｐ２００４に進む。
【０１２８】
ｓｔｅｐ２００４では、受信したパケットが経路選択パケットであるか輻輳情報収集指示パケットであるかを判定する。
ｓｔｅｐ２００４において制御部２０２１が受信したパケットが輻輳情報収集指示パケットである場合、ｓｔｅｐ２００５に進み、制御部２０２１は、リモートノードへの経路候補に輻輳情報収集パケットを送り、輻輳情報収集を開始する。
【０１２９】
ｓｔｅｐ２００５において輻輳情報の収集を開始した後、リモートノードから輻輳情報収集応答パケットが制御部２０２１に返送されると、ｓｔｅｐ２００６において、制御部２０２１は、輻輳情報収集応答パケットの戻り順等の輻輳情報を経路テーブルに保存し、ｓｔｅｐ２０１１に進む。
【０１３０】
ｓｔｅｐ２００４において、制御部２０２１が受信したパケットが経路選択パケットである場合、ｓｔｅｐ２００７に進み、制御部２０２１は、経路選択の指示に先立ち指示された輻輳情報の収集が終了するのを待つ。すなわち、制御部２０２１は、輻輳情報収集における輻輳情報収集応答パケットの受信を待ち合わせ、受信した輻輳情報収集応答パケットにより経路テーブルが更新されて輻輳情報収集が終了するのを待つ。そして、輻輳情報の収集が終了すると、ｓｔｅｐ２００９に進む。
【０１３１】
ｓｔｅｐ２００３において、経路選択または輻輳情報収集の対象となるリモートノードが属しているリモートノードグループが経路テーブルにある場合、ｓｔｅｐ２００８に進む。
【０１３２】
ｓｔｅｐ２００８では、制御部２０２１が受信したパケットが経路選択パケットであるか輻輳情報収集指示パケットであるかを判定する。
ｓｔｅｐ２００８において、制御部２０２１が受信したパケットが経路選択パケットである場合、ｓｔｅｐ２００９に進む。ｓｔｅｐ２００９では、制御部２０２１は、経路テーブルを参照して、経路選択指示に従った経路を選択する。図１７に示した経路テーブルの例では、制御部２０２１は、経路テーブル中の戻り順および使用ノードを参照し、経路選択パケットにより指定された経路選択指示に従った経路を選択する。
【０１３３】
例えば、経路選択パケットにより指定された経路選択指示が戻り順で並べた場合のｋ番目（ｋは、１から輻輳情報を収集した経路の数ｎまでの整数）、および使用中のノード数に対する閾値に関する指示であるとする。この経路選択指示の場合、制御部２０２１は、戻り順がｋ番目の経路からk+1、k+2番目へと順に使用中のノード数が閾値以下である経路を検索する。そして、検索の結果、使用中のノード数が閾値以下の経路があれば、その経路を選択し、使用中のノード数が閾値以下の経路がなければ、ｋ番目の経路を選択する。例えば、戻り順を１番目とし、閾値を1とする経路選択指示が指定された場合、図１７に示した経路テーブルでは、戻り順が1番目の経路１の使用ノード数は２であり、閾値を超えているため、制御部は、２番目の経路を検索する。そして、２番目の経路である経路の２の使用ノード数は0であるため、制御部２０２１は、経路２を経路選択指示に従った経路として選択する。
【０１３４】
以上のように経路選択指示に従って経路を選択すると、制御部２０２１は、選択した経路に関する情報を含む経路パケットを経路選択パケットの送信元のローカルノードに返し、ｓｔｅｐ２０１０に進む。
【０１３５】
ｓｔｅｐ２０１０では、制御部２０２１は、選択した経路を使用するローカルノードに関する情報を経路テーブルに記録し、ｓｔｅｐ２０１１に進む。
ｓｔｅｐ２００８において、制御部２０２１が受信したパケットが輻輳情報収集指示パケットである場合、ｓｔｅｐ２０１１に進む。
【０１３６】
ｓｔｅｐ２０１１では、制御部２０２１は、輻輳情報収集指示パケット、経路選択パケット、または完了通知パケットの受信を待ち合わせる。
ｓｔｅｐ２０１２において制御部２０２１が輻輳情報収集指示パケットまたは経路選択パケットを受信した場合は、ｓｔｅｐ２００２に戻る。
【０１３７】
ｓｔｅｐ２０１２において制御部２０２１が完了通知パケットを受信した場合には、ｓｔｅｐ２０１３において完了通知パケットの送信元であるローカルノードに関する情報を経路テーブル中の使用ノードの記録から削除する。
【０１３８】
以上のように、第２の実施形態に従った並列計算機では、ローカルノードグループ内のローカルノードの演算処理装置による経路選択指示の指定を基に、ローカルノードグループ内の輻輳情報収集ノードのネットワークインタフェース装置が経路を選択する。このため、演算処理装置による経路選択のレイテンシを短縮することができる。
【０１３９】
さらに、第２の実施形態に従った並列計算機では、輻輳情報収集ノードは、ローカルノードグループ内の輻輳情報をまとめて収集する。このため、ローカルノードグループ内のローカルノード間において輻輳情報および経路の使用状況を共有でき、通信経路の分散ができる。
【０１４０】
そして、ローカルノードの演算処理装置が指定する経路選択指示が例えば輻輳情報収集応答パケットの戻り順に関する指示である場合、ローカルノードの演算処理装置は、全ての経路候補に対応する輻輳情報収集応答パケットが戻ってくるまで待つ必要がなく、通信開始を指示できる。このため、ローカルノードの演算処理装置の使用効率は下がらない。
【０１４１】
また、輻輳情報が例えば輻輳情報収集応答パケットの戻り順である場合、リモートノードからのローカルノードの返りの通信時間も反映されている。このため、Get通信などのリモートノードがメッセージを送信する通信の場合においても適切な経路選択を行うことができる。
【０１４２】
さらに、輻輳情報を収集するタイミングを演算処理装置が通信開始を指示する時ではなく、演算処理装置が輻輳情報収集を指示した時とした場合、演算処理装置が明示的に指定した時のみ、輻輳情報を収集する。このため、通信を行うにあたり、輻輳情報を収集するのか否かを選択することができる。
【０１４３】
なお、本実施形態の上述の説明では、経路候補は、パケットが通過する行きと帰りの経路が同じであるとした。しかしながら、本実施形態では、パケットが通過する行きと帰りの経路が異なるとする経路候補を採ることも可能である。
【０１４４】
＜第３の実施形態＞
前述した第２の実施形態に従った並列計算機では、ローカルノードグループ内のローカルノードの演算処理装置が輻輳情報収集指示を開始した時に、輻輳情報収集ノードのネットワークインタフェース装置が輻輳情報を収集する。そして、ローカルノードの演算処理装置が通信開始を指示した時に、輻輳情報収集ノードのネットワークインタフェース装置が通信に用いられる経路を選択する。
【０１４５】
これに対し、第３の実施形態に従った並列計算機では、ローカルノードグループ内のローカルノードの演算処理装置が通信開始を指示した時に、輻輳情報収集ノードのネットワークインタフェース装置が輻輳情報を収集する。そして、輻輳情報を収集すると、輻輳情報収集ノードのネットワークインタフェース装置は、通信に用いられる経路を選択する。
【０１４６】
第３の実施形態に従った並列計算機では、ルーティング方式によっては経路を共有するローカルノードのグループおよびリモートノードのグループを、輻輳情報を収集する前に予め設定する。また、ローカルノードグループ内に輻輳情報収集ノードを予め設定する。第３の実施形態に従った並列計算機の構成は、図１４に示した第２の実施形態に従った並列計算機の構成と同様であってよい。
【０１４７】
図２１は、第３の実施形態に従った並列計算機のノードの構成図である。なお、図１５に示した第２の実施形態に従ったノードの構成要素と同じ構成要素は、図２１において同じ参照符号がふられている。
【０１４８】
第３の実施形態に従った並列計算機を構成する各ノードｎ３は、どのノードがどのノードに通信をおこなうかによって、ローカルノードとなり、およびリモートノードとなる。また、第３の実施形態に従った並列計算機を構成する各ノードｎ３は、予めの設定に従って輻輳情報収集ノードとなる。図２１は、ローカルノード、輻輳情報収集ノード、およびリモートノードの何れにもなり得るノードｎ３を示している。
【０１４９】
第３の実施形態では、ローカルノード、輻輳情報収集ノード、およびリモートノードの各々の制御部３０２１は、以下のような処理をするようにそれぞれ構成される。
図２１に示したノードｎ３がローカルノードである場合、制御部３０２１は、演算処理装置１０１から通信開始の指示を受信すると、輻輳情報収集指示パケットを生成する。そして、制御部３０２１は、生成した輻輳情報収集指示パケットをパケット送信部１０２３を介して輻輳情報収集ノードへ送信する。
【０１５０】
また、図２１に示したノードｎ３がローカルノードである場合、制御部３０２１は、輻輳情報収集ノードから送信される経路パケットをパケット受信部１０２４を介して受信すると、経路パケットに含まれる選択された経路を使って通信を開始する。そして、制御部３０２１は、通信を完了すると、完了通知パケットを生成し、生成した完了通知パケットをパケット送信部１０２３を介して輻輳情報収集ノードに送信する。
【０１５１】
次に、図２１に示したノードｎ３が輻輳情報収集ノードである場合、制御部３０２１は、ローカルノードから送信される輻輳情報収集指示パケットをパケット受信部１０２４を介して受信する。制御部３０２１は、輻輳情報収集指示パケットに含まれるリモートノードが属するグループについての輻輳情報を収集していない場合には、輻輳情報収集パケットを生成する。そして、制御部３０２１は、生成した輻輳情報収集パケットをパケット送信部１０２３を介してリモートノードに送信する。制御部３０２１は、リモートノードから輻輳情報収集応答パケットをパケット受信部１０２４を介して受信すると、輻輳情報を経路テーブル記憶部１０２２内の経路テーブルに記憶する。
【０１５２】
また、図２１に示したノードｎ３が輻輳情報収集ノードである場合、制御部３０２１は、経路テーブル記憶部１０２２内の経路テーブルを参照して、ローカルノードから送信された輻輳情報収集指示パケットに含まれる経路選択指示に従った経路を選択する。そして、制御部３０２１は、選択した経路についての情報を含む経路パケットを生成し、生成した経路パケットをパケット送信部１０２３を介してローカルノードに返す。また、制御部３０２１は、選択した経路がそのローカルノードにより使用中であることを示す情報を経路テーブル記憶部１０２２内の経路テーブルに保存する。
【０１５３】
そして、図２１に示したノードｎ３が輻輳情報収集ノードである場合、制御部３０２１は、ローカルノードから送信される完了通知パケットをパケット受信部１０２４を介して受信する。そして、制御部３０２１は、経路がそのローカルノードにより使用中であることを示す情報を経路テーブル記憶部１０２２内の経路テーブルから消去する。
【０１５４】
図２１に示したノードｎ３がリモートノードである場合、制御部３０２１は、輻輳情報収集ノードから送信される輻輳情報収集パケットをパケット受信部１０２４を介して受信する。そして、制御部３０２１は、受信した輻輳情報収集パケットに基づき輻輳情報収集応答パケットを生成し、生成した輻輳情報収集応答パケットをパケット送信部１０２３を介して輻輳情報収集ノードに送信する。
【０１５５】
第３の実施形態に従った並列計算機のスイッチの構成は、第２の実施形態に従った並列計算機のスイッチｓ１の構成と同様である。
第３の実施形態に従った並列計算機について、次の場合を例として以下で詳述する。すなわち、並列計算機のローカルノードグループは、次元順ルーティングにおいてルーティングの最初の次元方向で作る。また、並列計算機のリモートノードグループは、次元順ルーティングにおいて最後の次元方向で作る。輻輳情報を収集するタイミングは、ローカルノードの演算処理装置１０１が通信開始を指示した時とする。また、経路候補の種類は、ローカルノードおよびリモートノード間でパケットが通過する行きの経路と帰りの経路が同じであるとする。収集する輻輳情報は、輻輳情報収集応答パケットの戻り順であるとする。ローカルノードの演算処理装置１０１による経路選択指示は、戻り順と使用ノード数についての閾値に関する指示であるとする。なお、これらは第３の実施形態に従った並列計算機を説明するための例示であり、第３の実施形態に従った並列計算機は、このような場合に限定されない。
【０１５６】
第３の実施形態では、ローカルノードの演算処理装置１０１は、ネットワークインタフェース装置３０２に通信開始を指示する。演算処理装置１０１による通信開始の指示には、輻輳情報収集パケットを送るリモートノードアドレス、輻輳情報収集ノードアドレス、輻輳情報を収集する経路候補、通信の種類、メッセージを送信する場合はメッセージの格納場所、および戻り順などの経路選択指示が含まれる。
演算処理装置１０１から通信開始の指示を受け取ったネットワークインタフェース装置３０２は、輻輳情報収集指示パケットを生成する。
【０１５７】
図２２は、第３の実施形態に従った輻輳情報収集指示パケットのフィールドを示す図である。
図２２に示すように、第３の実施形態に従った輻輳情報収集指示パケットのフィールドには、パケットタイプ１６０１、ルーティングヘッダ１６０２、ローカルノードアドレス１６０３、輻輳情報収集ノードアドレス１６０４、リモートノードアドレス１６０５、および経路候補１６０６が含まれる。これらのフィールドの内容は、図１６を示して前述した第２の実施形態と同様である。
【０１５８】
また、図２２に示すように、第３の実施形態に従った輻輳情報収集指示パケットのフィールドには、経路選択指示２２０７がさらに含まれる。経路選択指示２２０７は、ローカルノードの演算処理装置１０１による通信開始の指示に含まれる経路選択指示に関する情報を含むフィールドである。
【０１５９】
ローカルノードのネットワークインタフェース装置３０２は、生成した輻輳情報収集指示パケットを、通信開始を指示したローカルノードと同じローカルノードグループに属する輻輳情報収集ノードに送る。
【０１６０】
輻輳情報収集指示パケットを受信した輻輳情報収集ノードのネットワークインタフェース装置３０２は、輻輳情報収集指示パケットに含まれるリモートノードが属するグループについての輻輳情報を収集していない場合には、輻輳情報収集パケットを生成する。そして、ネットワークインタフェース装置３０２は、輻輳情報収集指示パケットにより指定された経路でリモートノードへ生成した輻輳情報収集パケットを送信する。このようなネットワークインタフェース装置３０２が行う輻輳情報収集パケットの生成および送信は、前述した第２の実施形態に従った輻輳情報収集ノードのネットワークインタフェース装置２０２が行う輻輳情報収集パケットの生成および送信と同様である。
【０１６１】
また、リモートノードのネットワークインタフェース装置３０２は、輻輳情報収集パケットを受信すると、輻輳情報収集応答パケットを生成し、生成した輻輳情報収集応答パケットを輻輳情報収集ノードに返す。このようなネットワークインタフェース装置３０２が行う輻輳情報収集応答パケットの生成および送信は、前述した第２の実施形態に従ったリモートノードのネットワークインタフェース装置２０２が行う輻輳情報収集応答パケットの生成および送信と同様である。
【０１６２】
そして、輻輳情報収集ノードのネットワークインタフェース装置３０２は、輻輳情報収集応答パケットを受信すると、経路候補、戻り順などの輻輳情報、および輻輳情報を収集したリモートノードグループを経路テーブルに記録する。このようなネットワークインタフェース装置３０２が行う経路テーブルへの記録は、前述した第２の実施形態に従った輻輳情報収集ノードのネットワークインタフェース装置２０２が行う経路テーブルへの記録と同様である。また、第３の実施形態に従った経路テーブルは、図１７に示した第２の実施形態に従った経路テーブルと同様であってよい。
【０１６３】
以上のように、第３の実施形態では、輻輳情報収集ノードがまとめて輻輳情報を収集することにより、ローカルノードグループ内のローカルノード間において輻輳情報と経路の使用状況を共有でき、通信経路の分散ができる。
【０１６４】
第３の実施形態では、輻輳情報収集ノードのネットワークインタフェース装置３０２は、輻輳情報収集指示パケットによる指示に基づき輻輳情報を収集した後、輻輳情報収集指示パケットに含まれる経路候補の指定に従って通信に使用する経路を選択する。
【０１６５】
ネットワークインタフェース装置３０２は、選択した経路を含む経路パケットを通信開始指示パケットを送信したローカルノードのネットワークインタフェース装置３０２に送信する。また、選択した経路がそのローカルノードにより使用されていることを示す情報を経路テーブルに記録する。このようなネットワークインタフェース装置３０２が行う経路選択パケットの送信および経路テーブルへの記録は、前述した第２の実施形態に従った輻輳情報収集ノードのネットワークインタフェース装置２０２が行う経路選択パケットの送信および経路テーブルへの記録と同様である。また、第３の実施形態に従った経路パケットは、図１９に示した第２の実施形態に従った経路パケットと同様であってよい。
【０１６６】
ローカルノードのネットワークインタフェース装置３０２は、経路パケットを受信すると、経路パケットに含まれる経路を使って通信を開始する。そして、通信が完了すると、ローカルノードのネットワークインタフェース装置３０２は、通信完了を示す完了通知パケットを輻輳情報収集ノードのネットワークインタフェース装置３０２に送信する。
【０１６７】
輻輳情報収集ノードのネットワークインタフェース装置３０２は、完了通知パケットを受信すると、完了通知パケットの送信元であるローカルノードに関する情報を経路テーブル中の使用ノードの記録から削除する。
【０１６８】
図２３は、第３の実施形態に従った輻輳情報収集ノードのネットワークインタフェース装置の制御部が行う処理のフローチャートである。
図２３のｓｔｅｐ２３０１において、制御部３０２１がローカルノードから輻輳情報収集指示パケットを受信するとｓｔｅｐ２３０２以下の輻輳情報の処理を開始する。輻輳情報収集指示パケットには、リモートノード、経路候補、経路選択指示等が含まれる。
【０１６９】
ｓｔｅｐ２３０２では、制御部３０２１は、輻輳情報収集指示パケットを参照して、輻輳情報収集の対象となるリモートノードが属しているリモートノードグループを確認する。例えば、図１７に示した経路テーブルでは、リモートノードグループがグループ1であるかを確認する。
【０１７０】
ｓｔｅｐ２３０３において、輻輳情報収集の対象となるリモートノードが属しているリモートノードグループが経路テーブルにない場合、ｓｔｅｐ２３０４に進む。
ｓｔｅｐ２３０４では、制御部３０２１は、輻輳情報収集指示パケットにより指示された経路候補に輻輳情報収集パケットを送り、輻輳情報の収集を開始する。
【０１７１】
ｓｔｅｐ２３０５では、制御部３０２１は、リモートノードから輻輳情報収集応答パケットを受信すると、受信した輻輳情報収集応答パケットに含まれる戻り順等の輻輳情報を経路テーブルに保存し、ｓｔｅｐ２３０６に進む。
【０１７２】
ｓｔｅｐ２３０３において、輻輳情報収集の対象となるリモートノードが属しているリモートノードグループが経路テーブルにある場合、ｓｔｅｐ２３０６に進む。
ｓｔｅｐ２３０６では、制御部３０２１は、経路テーブルを参照して、経路選択指示に従った経路を選択する。図１７に示した経路テーブルの例では、制御部３０２１は、経路テーブル中の戻り順および使用ノードを参照し、経路選択パケットにより指定された経路選択指示に従った経路を選択する。
【０１７３】
例えば、経路選択パケットにより指定された経路選択指示が戻り順で並べた時のｋ番目（ｋは、１から輻輳情報を収集した経路の数ｎまでの整数）、および使用中のノード数に対する閾値に関する指示であるとする。この経路選択指示の場合に制御部３０２１が行う処理は、図２０を参照して前述した第２の実施形態に従った制御部２０２１が行う処理と同様である。
【０１７４】
経路選択指示に従って経路を選択すると、制御部３０２１は、選択した経路に関する情報を含む経路パケットを輻輳情報収集指示パケットの送信元のローカルノードに返し、ｓｔｅｐ２３０７に進む。
【０１７５】
ｓｔｅｐ２３０７では、制御部３０２１は、選択した経路を使用するローカルノードに関する情報を経路テーブルに記録し、ｓｔｅｐ２３０８に進む。
ｓｔｅｐ２３０８では、制御部３０２１は、輻輳情報収集指示パケットまたは完了通知パケットの受信を待ち合わせる。
【０１７６】
ｓｔｅｐ２３０９において制御部が輻輳情報収集指示パケットを受信した場合は、ｓｔｅｐ２３０２に戻る。
ｓｔｅｐ２３０９において制御部が完了通知パケットを受信した場合には、ｓｔｅｐ２３１０に進む。
【０１７７】
ｓｔｅｐ２３１０では、制御部３０２１は、完了通知パケットの送信元であるローカルノードに関する情報を経路テーブル中の使用ノードの記録から削除する。
以上のように、第３の実施形態に従った並列計算機では、ローカルノードグループ内のローカルノードの演算処理装置による経路選択指示の指定を基に、ローカルノードグループ内の輻輳情報収集ノードのネットワークインタフェース装置が経路を選択する。このため、演算処理装置による経路選択のレイテンシを短縮することができる。
【０１７８】
さらに、第３の実施形態に従った並列計算機では、輻輳情報収集ノードは、ローカルノードグループ内の輻輳情報をまとめて収集する。このため、ローカルノードグループ内において輻輳情報および経路の使用状況を共有でき、通信経路の分散ができる。
【０１７９】
そして、輻輳情報を収集するタイミングを演算処理装置が通信開始を指示した時である場合、演算処理装置が通信開始に先立ち輻輳情報収集を指示した時と比べてローカルノードと輻輳情報収集ノードとの間のパケットの送受信回数が減らすことができる。このため、ルーティングのレイテンシを減らすことができる。
【０１８０】
また、ローカルノードの演算処理装置が指定する経路選択指示が例えば輻輳情報収集応答パケットの戻り順に関する指示である場合、ローカルノードの演算処理装置は、全ての経路候補に対応する輻輳情報収集応答パケットが戻ってくるまで待つ必要がなく、通信開始を指示できる。このため、ローカルノードの演算処理装置の使用効率は下がらない。
【０１８１】
そして、輻輳情報が例えば輻輳情報収集応答パケットの戻り順である場合、リモートノードからのローカルノードの返りの通信時間も反映されている。このため、Get通信などのリモートノードがメッセージを送信する通信の場合においても適切な経路選択を行うことができる。
【０１８２】
＜第４の実施形態＞
第１の実施形態では、ローカルノードのネットワークインタフェース装置は、輻輳情報を収集した後に、収集したその輻輳情報を基づいて通信に使用する経路を選択する。また、第２および第３の実施形態では、ローカルノードグループ内の輻輳情報収集ノードのネットワークインタフェース装置は、輻輳情報を収集した後に、収集したその輻輳情報を基づいて通信に使用する経路を選択する。
【０１８３】
これに対して、第４の実施形態では、ローカルノードのネットワークインタフェース装置（または輻輳情報収集ノードのネットワークインタフェース装置）は、輻輳情報を収集した後に、所定の時間間隔で輻輳情報の収集を繰り返し、新たに収集した輻輳情報を基づいて通信に使用する経路を変更する。
【０１８４】
なお、第４の実施形態の以下の説明では、第１の実施形態に従った並列計算機のようにローカルノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機を例に説明する。しかしながら、第４の実施形態は、第２および第３の実施形態に従った並列計算機のようにローカルノードグループ内の輻輳情報収集ノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機においても実現できる。
【０１８５】
第４の実施形態に従った並列計算機の構成は、図１に示した並列計算機の構成と同様であってよい。
第４の実施形態に従った並列計算機を構成する各ノードは、どのノードがどのノードに通信をおこなうかによって、ローカルノードとなり、およびリモートノードとなる。したがって、各ノードは、ローカルノードおよびリモートノードの何れにもなり得る構成を備える。
【０１８６】
図２４は、第４の実施形態に従ったノードがローカルノードである場合のノードの構成図である。図５に示した第１の実施形態に従ったノードｎ１の構成要素と同じ構成要素は、図２４において同じ参照符号がふられている。なお、第４の実施形態に従った並列計算機のノードｎ４がリモートノードである場合のノードの構成は、図５を示して前述した第１の実施形態と同様である。
【０１８７】
図２４に示すように、第４の実施形態では、ネットワークインタフェース装置４０２内の制御部４０２１は、輻輳情報収集パケット制御部４０２１ａおよび通常パケット制御部４０２１ｂを含む。
【０１８８】
輻輳情報収集パケット制御部４０２１ａは、演算処理装置１０１からの輻輳情報収集指示に基づき輻輳情報収集パケットを処理する。すなわち、演算処理装置１０１からの輻輳情報収集指示に基づいて、輻輳情報収集パケットを生成し、生成した輻輳情報収集パケットを送信するように輻輳情報収集パケット送信部４０２３ａに指示する。そして、輻輳情報収集パケット制御部４０２１ａは、送信先のノードから返送された輻輳情報収集応答パケットをパケット受信部１０２４から受信し、収集した輻輳情報を経路テーブル記憶部１０２２内の経路テーブルに記憶する。
【０１８９】
通常パケット制御部４０２１ｂは、演算処理装置１０１からの通信開始の指示に基づき通常パケットを処理する。通常パケットとは、通信の際に送信されるパケットなどの輻輳情報集パケット以外のパケットである。通常パケット制御部４０２１ｂは、演算処理装置１０１からの通信開始指示に基づいて、輻輳情報収集パケット制御部４０２１ａにより経路テーブルに基づき選択された経路を使って、通常パケットを送信するように通常パケット送信部４０２３ｂに指示する。
【０１９０】
図２４に示すように、第４の実施形態では、ネットワークインタフェース装置４０２内のパケット送信部４０２３は、輻輳情報収集パケット送信部４０２３ａおよび通常パケット送信部４０２３ｂを含む。
【０１９１】
輻輳情報収集パケット送信部４０２３ａは、輻輳情報収集パケット制御部４０２１ａからの指示に基づき輻輳情報収集パケットをネットワーク１０５を介して他のノードｎ４に送信する。
【０１９２】
通常パケット送信部４０２３ｂは、通常パケット制御部４０２１ｂからの指示に基づき通常パケットをネットワーク１０５を介して他のノードｎ４に送信する。
第４の実施形態に従ったスイッチの構成および動作は、前述した第１の実施形態に従ったスイッチｓ１の構成および動作と同様である。
【０１９３】
図２４に示した第４の実施形態に従ったノードｎ４により行われる処理について、図２５を参照して以下で説明する。
図２５は、第４の実施形態に従ったノードが行う処理のフローチャートである。
【０１９４】
図２５のｓｔｅｐ２５０１において、ローカルノードの輻輳情報収集パケット制御部４０２１ａは、演算処理装置１０１から輻輳情報収集の指示を受け取ると、ｓｔｅｐ２５０２以下の処理を開始する。演算処理装置１０１による輻輳情報収集の指示には、リモートノード、経路候補、および輻輳情報を収集する間隔に関する指示が含まれる。
【０１９５】
ｓｔｅｐ２５０２では、輻輳情報収集パケット制御部４０２１ａは、輻輳情報収集パケットを生成する。そして、輻輳情報収集パケット制御部４０２１ａは、生成した輻輳情報収集パケットを演算処理装置１０１からの指示により指定された経路候補に、輻輳情報収集パケット送信部４０２３ａを介して送信する。輻輳情報収集パケット制御部４０２１ａにより行われるこれらの処理は、第１の実施形態に従ったノードｎ１の制御部１０２１により行われる処理と同様である。また、輻輳情報収集パケットは、図９を参照して説明した第１の実施形態と同様である。
【０１９６】
輻輳情報収集パケットを受信したリモートノードのネットワークインタフェース装置は、輻輳情報収集応答パケットを生成する。そして、リモートノードのネットワークインタフェース装置は、輻輳情報収集応答パケットをローカルノードに返送する。これらの処理は、第１の実施形態に従ったリモートノードネットワーク制御部１０２により行われる処理と同様である。また、輻輳情報収集応答パケットは、図９を参照して説明した第１の実施形態と同様である。
【０１９７】
ｓｔｅｐ２５０３では、ローカルノードの輻輳情報収集パケット制御部４０２１ａは、パケット受信部１０２４を介して輻輳情報収集応答パケットを受信する。そして、輻輳情報収集パケット制御部４０２１ａは、戻り順等の輻輳情報を経路テーブルに記録する。輻輳情報収集パケット制御部４０２１ａにより行われるこれらの処理は、第１の実施形態に従ったノードｎ１の制御部１０２１により行われる処理と同様である。また、例えば収集する輻輳情報が戻り順である場合、第４の実施形態に従った経路テーブルの構成は、図１０に示した経路テーブルと同様であってよい。
【０１９８】
ｓｔｅｐ２５０４では、輻輳情報収集パケット制御部４０２１ａは、輻輳情報を収集したリモートノードとの間で通信中であるか否かを通常パケット制御部４０２１ｂに問い合せる。
【０１９９】
ｓｔｅｐ２５０４における問合せの結果、通常パケット制御部４０２１ｂが輻輳情報を収集したリモートノードとの間で通信中である場合、ｓｔｅｐ２５０５に進む。
ｓｔｅｐ２５０５では、輻輳情報収集パケット制御部４０２１ａは、経路テーブルを参照して、通常パケットの通信開始に当たって演算処理装置１０１から指示された経路選択指示に従った経路を選択し直す。例えば、輻輳情報収集パケット制御部４０２１ａは、演算処理装置１０１から指定された戻り順で経路を選択し直す。そして、輻輳情報収集パケット制御部は、選択し直した経路に関する情報を通常パケット制御部４０２１ｂに送る。通常パケット制御部４０２１ｂは、選択し直された経路を使って通信を行い、ｓｔｅｐ２５０６に進む。
【０２００】
ｓｔｅｐ２５０４における問合せの結果、通常パケット制御部４０２１ｂが輻輳情報を収集したリモートノードとの間で通信していない場合、ｓｔｅｐ２５０６に進む。
ｓｔｅｐ２５０６では、輻輳情報収集パケット制御部４０２１ａは、演算処理装置１０１からの輻輳情報収集指示において指定された所定の時間を待つ。所定の時間経過後、ｓｔｅｐ２５０２に戻り、ｓｔｅｐ２５０２以降の処理を繰り返す。
【０２０１】
以上のように、第４の実施形態に従った並列計算機では、演算処理装置からの経路選択の指定方法を基にネットワークインタフェース装置が経路を選択する。このため、経路選択のレイテンシを短縮することができる。
【０２０２】
また、第４の実施形態に従った並列計算機では、通信と輻輳情報収集とを分離している。このため、通信中に輻輳情報収集パケット送り、収集した輻輳情報に基づいて通信中に経路を変更することができる。
【０２０３】
さらに、第４の実施形態では、輻輳情報収集パケット制御部が所定の時間間隔で輻輳情報を収集し、経路を選択し直す。このため、通信中の輻輳状態の変化にも対応できる。
また、演算処理装置が指定する経路選択指示が例えば輻輳情報収集応答パケットの戻り順に関する指示である場合、演算処理装置は、全ての経路候補に対応する輻輳情報収集応答パケットが戻ってくるまで待つ必要がなく、通信開始を指示できる。このため、演算処理装置の使用効率は下がらない。
【０２０４】
そして、輻輳情報が例えば輻輳情報収集応答パケットの戻り順である場合、リモートノードからのローカルノードの返りの通信時間も反映されている。このため、Get通信などのリモートノードがメッセージを送信する通信の場合においても適切な経路選択を行うことができる。
【０２０５】
本実施形態の前述の説明では、第１の実施形態に従った並列計算機のようにローカルノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機を例に説明した。しかしながら、第４の実施形態は、第２および第３の実施形態に従った並列計算機のようにローカルノードグループ内の輻輳情報収集ノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機においても、以下のように実現することができる。
【０２０６】
すなわち、例えば第２の実施形態に従った輻輳情報収集ノードの制御部２０２１を前述した第４の実施形態に従ったローカルノードの制御部４０２１と同様とする。また、ローカルノードグループ内のローカルノードから送信される輻輳情報収集指示パケットにより輻輳情報の更新間隔が指定されるとする。そして、前述した本実施形態と同様の処理により、輻輳情報収集ノードのネットワークインタフェース装置２０２１が所定の間隔で輻輳情報を収集して経路テーブルを更新する。経路テーブルの更新後、輻輳情報収集指示パケットの送信元のノードが経路テーブル中の使用ノードにある場合、輻輳情報収集ノードの制御部２０２１は、経路を選択し直し、選択し直した経路に関する情報を含む経路パケットを輻輳情報収集指示パケットの送信元のローカルノードに返す。ローカルノードのネットワークインタフェース装置２０２１は、経路パケットを受信すると、経路パケットにより指定された経路に変更する。
【０２０７】
＜第５の実施形態＞
第１〜第４の実施形態では、輻輳情報収集パケットを送信してから輻輳情報収集応答パケットが戻ってくるまでの経路候補の戻り順を輻輳情報とした。
【０２０８】
これに対して、第５の実施形態では、輻輳情報収集パケットを送信してから輻輳情報収集応答パケットが戻ってくるまでの経路候補の応答時間を輻輳情報とする。
なお、第５の実施形態の以下の説明では、第１の実施形態に従った並列計算機のようにローカルノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機を例に説明する。しかしながら、第５の実施形態は、第２および第３の実施形態に従った並列計算機のようにローカルノードグループ内の輻輳情報収集ノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機においても実現できる。
【０２０９】
第５の実施形態に従った並列計算機の構成は、図１に示した並列計算機の構成と同様であってよい。
第５の実施形態に従った並列計算機を構成する各ノードは、どのノードがどのノードに通信をおこなうかによって、ローカルノードとなり、およびリモートノードとなる。したがって、各ノードは、ローカルノードおよびリモートノードの何れにもなり得る構成を備える。
【０２１０】
図２６は、第５の実施形態に従ったノードがローカルノードである場合のノードの構成図である。図５に示した第１の実施形態に従ったノードｎ１の構成要素と同じ構成要素は、図２６において同じ参照符号がふられている。なお、第５の実施形態に従った並列計算機のノードがリモートノードである場合のノードの構成は、図５を示して前述した第１の実施形態と同様である。
【０２１１】
図２６に示すように、第５の実施形態に従ったノードｎ５には、カウンタ５０２６が含まれる。輻輳情報収集パケットを送信してから輻輳情報収集応答パケットが戻ってくるまで応答時間をカウンタ５０２６を用いて測る。
【０２１２】
第５の実施形態に従ったスイッチの構成および動作は、第１の実施形態に従ったスイッチｓ１の構成および動作と同様である。
第５の実施形態では、ローカルノードのネットワークインタフェース装置５０２の制御部５０２１は、演算処理装置１０１から輻輳情報収集指示を受信する。演算処理装置１０１による輻輳情報収集指示には、リモートノードおよび経路候補に関する指示が含まれる。
【０２１３】
演算処理装置１０１から輻輳情報収集指示を受け取った制御部５０２１は、輻輳情報収集パケットを生成する。そして、制御部５０２１は、パケット送信部５０２３に輻輳情報収集パケット送信するように指示を送る。第５の実施形態に従った制御部５０２１が行うこれらの処理は、第１の実施形態に従った制御部１０２１が行う処理と同様である。
【０２１４】
輻輳情報収集パケットの送信指示を受けたパケット送信部５０２３は、輻輳情報収集パケットを送信する時にカウンタ値を輻輳情収集パケットに入れる。輻輳情報収集パケットを受信したリモートノードのネットワークインタフェース装置は、カウンタ値をそのまま輻輳情報収集応答パケットに入れてローカルノードに送り返す。
【０２１５】
図２７は、第５の実施形態に従った輻輳情報収集パケットおよび輻輳情報収集応答パケットのフィールドを示す図である。なお、図９に示した第１の実施形態に従った輻輳情報収集パケットおよび輻輳情報収集応答パケットと同じフィールドには、図２４において同じ参照符号がふられている。
【０２１６】
図２７に示すように、第５の実施形態に従った輻輳情報収集パケットおよび輻輳情報収集応答パケットは、カウンタ値を含むフィールド２７０６をさらに持つ。
ローカルノードのパケット受信部５０２４は、リモートノードから輻輳情報収集応答パケットを受信すると、カウンタ５０２６から現在のカウンタ値を取得し、取得したカウンタ値と受信した輻輳情報収集応答パケットを制御部５０２１に送る。制御部５０２１は、現在のカウンタ値と、輻輳情報収集応答パケットに含まれるカウンタ値との差分を計算する。この算出により、制御部５０２１は、輻輳情報収集パケットを送信してから輻輳情報収集応答パケットが戻ってくるまでの当該経路候補の応答時間を測ることができる。
制御部５０２１は、応答時間を測った後、応答時間と応答時間順を経路テーブル記憶部１０２２内の経路テーブルに記録する。
【０２１７】
図２８は、第５の実施形態に従った経路テーブルの一例である。図２８に示した経路テーブルの一例では、経路候補とその応答時間が応答時間順に示されている。
図２８に示した経路テーブルの一例では、経路候補を経路１、経路２、・・・経路ｎと示している。しかし、例えば各々の経路候補を中継ノードと次元順により指定する場合には、経路１、経路２、・・・経路ｎは、各々の中継ノードと次元順により示すことができる。
【０２１８】
次に、第５の実施形態に従った並列計算機のローカルノードｎ５が通信を開始する処理を説明する。
第５の実施形態に従った並列計算機では、輻輳情報を収集したリモートノードへの通信を開始する場合、ローカルノードの演算処理装置１０１は、ネットワークインタフェース装置５０２の制御部５０２１に通信開始指示を送る。演算処理装置１０１が行う通信開始指示には、リモートノードアドレス、通信の種類、メッセージを送信する場合はメッセージの格納場所、および経路選択指示としての応答時間順が含まれる。
【０２１９】
制御部５０２１は、経路選択指示として指定された応答時間順に従って経路テーブルを参照する。制御部５０２１は、経路テーブルから該当の経路を選択し、選択した該当の経路を使って通信を開始する。
【０２２０】
以上のように、第５の実施形態に従った並列計算機では、演算処理装置からの経路選択の指定方法を基にネットワークインタフェース装置が経路を選択する。このため、経路選択のレイテンシを短縮することができる。
【０２２１】
さらに、第５の実施形態では、輻輳情報収集パケットを送信してから輻輳情報収集応答パケットが戻ってくるまでの応答時間を輻輳情報とする。このため、複数の経路候補の輻輳情報を収集する際に輻輳情報収集パケットを送信する順番が早いか遅いかによる時間的影響をなくして、戻り順を輻輳情報とした場合と比べてより正確な輻輳情報を収集することができる。
【０２２２】
そして、第５の実施形態では、輻輳情報収集応答パケットの応答時間順を輻輳情報とするため、リモートノードからのローカルノードの返りの通信時間も反映されている。このため、Get通信などのリモートノードがメッセージを送信する通信の場合においても適切な経路選択を行うことができる。
【０２２３】
第５の実施形態の上述の説明では、第１の実施形態に従った並列計算機のようにローカルノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機を例に説明した。しかしながら、第５の実施形態は、第２および第３の実施形態に従った並列計算機のようにローカルノードグループ内の輻輳情報収集ノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機においても以下のようにして実現することができる。
【０２２４】
すなわち、例えば第２の実施形態に従った輻輳情報収集ノードのネットワークインタフェース装置２０２内に前述した第５の実施形態に従ったローカルノードのネットワークインタフェース装置５０２と同様のカウンタ５０２６を備える。そして、輻輳情報を収集する際の第２の実施形態に従った輻輳情報収集ノードの制御部２０２１の処理フローを第５実施形態に従ったローカルノードの制御部５０２１の処理フローと同様にする。
【０２２５】
さらに、上述した第５の実施形態を第２および第３の実施形態に従った並列計算機において実現する場合、次のような経路選択指示を採ることもできる。すなわち、応答時間順で並べた時のｋ番目（ｋは、１から輻輳情報を収集した経路の数ｎまでの整数）、および経路候補である経路間の応答時間の差についての閾値に関する指示を経路選択指示とする。この場合、ｋ番目の経路を使用するノードがない、または使用するノードがあってもk+1番目の経路との応答時間の差が閾値を超える場合には、ｋ番目の経路を選択する。経路を使用するノードがあり、且つ応答時間の差が閾値を超えない場合には、以降同様に、k+1番目の経路を使用するノードの有無およびk+1番目の経路の応答時間とk+2の応答時間との差が閾値を超えるか否かを調べていく。そして、n-1番目の経路を使用するノードの有無およびn-1番目の経路の応答時間とｎ番目の経路の応答時間との差が閾値を超えるか否かを調べても経路を選択できなかった場合には、ｋ番目の経路を選択する。
【０２２６】
＜第６の実施形態＞
前述したように、第１の実施形態に従った並列計算機のようにローカルノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機は、第１、第４、および第５の実施形態で説明した以外の場合においても実現可能である。また、第２および第３の実施形態に従った並列計算機のようにローカルノードグループ内の輻輳情報収集ノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機は、第２〜第５の実施形態で説明した以外の場合においても実現可能である。
【０２２７】
そこで、第６の実施形態として以下の場合についてさらに説明する。すなわち、輻輳情報を収集するタイミングは、演算処理装置が輻輳情報収集を指示した時とする。経路候補の種類は、ローカルノードおよびリモートノード間でパケットが通過する経路が行きと帰りで異なる経路であるとする。輻輳情報は、パケットが通過する通過スイッチのバッファ使用量とする。輻輳情報の取り方は、スイッチ内の専用の経路を通ることにより収集することとする。輻輳情報を取る単位と経路選択指示は、ローカルノードおよびリモートノード間でパケットが通過する経路が行きと帰りで異なるものとする。経路選択は、バッファの使用量順と通信種類を基に行うこととする。
【０２２８】
なお、第６の実施形態の以下の説明では、第１の実施形態に従った並列計算機のようにローカルノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機を例に説明する。しかしながら、第６の実施形態は、第２および第３の実施形態に従った並列計算機のようにローカルノードグループ内の輻輳情報収集ノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機においても実現できる。
【０２２９】
第６の実施形態に従った並列計算機の構成は、図１に示した並列計算機の構成と同様であってよい。
第６の実施形態に従った並列計算機を構成する各ノードは、どのノードがどのノードに通信をおこなうかによって、ローカルノードとなり、およびリモートノードとなる。したがって、各ノードは、ローカルノードおよびリモートノードの何れにもなり得る構成を備える。
【０２３０】
図２９は、第６の実施形態に従ったノードの構成図である。図５に示した第１の実施形態に従ったノードｎ１の構成要素と同じ構成要素は、図２９において同じ参照符号がふられている。
【０２３１】
第６の実施形態では、ローカルノードおよびリモートノードの各々のネットワークインタフェース装置６０１内の制御部６０２１は、以下のような処理をするようにそれぞれ構成される。
【０２３２】
第６の実施形態では、ローカルノードの制御部６０２１は、演算処理装置１０１から輻輳情報収集指示を受信し、輻輳情報の処理を開始する。
演算処理装置１０１による輻輳情報収集指示には、リモートノードおよび経路候補に関する指示が含まれる。演算処理装置１０１による経路候補の指定は、例えば、ローカルノードとリモートノードとの間の経路の中継ノードを指定し、ローカルノードと中継ノードとの間、および中継ノードとリモートノードとの間の経路の決め方を次元順ルーティングの次元の順番で指定することにより行われる。
【０２３３】
また、第６の実施形態では、経路候補は、パケットが通過する行きの経路と帰りの経路が異なるように演算処理装置１０１により指定される。なお、行きの経路とは、ローカルノードからリモートノードまでのパケットが通過する経路を指す。また、帰りの経路とは、リモートノードからローカルノードまでのパケットが通過する経路を指す。
【０２３４】
演算処理装置１０１から輻輳情報収集指示を受け取ったローカルノードの制御部６０２１は、輻輳情報収集パケットを生成し、生成した輻輳情報収集パケットをパケット送信部１０２３を介して行きの経路を使ってリモートノードに送信する。
【０２３５】
輻輳情報収集パケットを受信したリモートノードの制御部６０２１は、輻輳情報収集応答パケットを生成する。そして、リモートノードの制御部６０２１は、輻輳情報収集パケットにより指定される帰りの経路を使って輻輳情報収集応答パケットをローカルノードに送り返す。
【０２３６】
図３０は、第６の実施形態に従った輻輳情報収集パケットおよび輻輳情報収集応答パケットフィールドを示す図である。なお、図９に示した第１の実施形態に従った輻輳情報収集パケットおよび輻輳情報収集応答パケットと同じフィールドには、図３０において同じ参照符号がふられている。
【０２３７】
第６の実施形態では、経路候補は、パケットが通過する行きと帰りの経路が異なるように指定される。また、輻輳情報は、パケットが通過する通過スイッチのバッファ使用量とされる。
【０２３８】
そこで、図３０に示すように、第６の実施形態に従った輻輳情報収集パケットおよび輻輳情報収集応答パケットは、行きの経路３００５ａ、帰りの経路３００５ｂ、行きのルーティングヘッダ３００２ａ、帰りのルーティングヘッダ３００２ｂ、行きのバッファ使用量３００６ａ、および帰りのバッファ使用量３００６ｂを含むフィールドをさらに持つ。
【０２３９】
図３０に示したパケットフィールド３０００中の行きの経路３００５ａは、ローカルノードからリモートノードまでの輻輳情報収集パケットの経路を含むフィールドである。また、帰りの経路３００５ｂは、リモートノードからローカルノードまでの輻輳情報収集応答パケットの経路を含むフィールドである。
【０２４０】
行きのバッファ使用量３００６ａは、輻輳情報収集パケットが通過する経路上のスイッチにおけるバッファ使用量を含むフィールドである。輻輳情報収集パケットの場合、輻輳情報収集パケットが通過するスイッチは、輻輳情報収集パケットが通過するポートのバッファ使用量を輻輳情報収集パケットの行きのバッファ使用量３００６ａに加算していく。
【０２４１】
帰りのバッファ使用量３００６ｂは、輻輳情報収集応答パケットが通過する経路上のスイッチにおけるバッファ使用量を含むフィールドである。輻輳情報収集応答パケットの場合、輻輳情報収集応答パケットが通過する経路上のスイッチは、輻輳情報収集応答パケットが通過するポートのバッファ使用量を輻輳情報収集応答パケットの帰りのバッファ使用量３００６ｂに加算していく。
【０２４２】
行きのルーティングヘッダ３００２ａは、ローカルノードからリモートノードまでの経路を指定するフィールドである。例えば、行きの経路を中継ノードと次元順で指定する場合、行きのルーティングヘッダ３００２ａには、これらの情報が含まれる。輻輳情報収集パケットの経路上のスイッチは、行きのルーティングヘッダ３００２ａを参照して送信するポートを決める。
【０２４３】
パケットフィールド中の帰りのルーティングヘッダ３００２ｂは、リモートノードからローカルノードまでの経路を指定するフィールドである。例えば、帰りの経路を中継ノードと次元順で指定する場合、帰りのルーティングヘッダには、これらの情報が含まれる。輻輳情報収集応答パケットの経路上のスイッチは、帰りのルーティングヘッダ３００２ｂを参照して送信するポートを決める。
【０２４４】
ローカルノードの制御部６０２１は、リモートノードから送られる輻輳情報収集応答パケットを待ち合わせる。輻輳情報収集応答パケットをパケット受信部１０２４を介して受信すると、制御部６０２１は、輻輳情報収集応答パケットに含まれる輻輳情報を経路テーブル記憶部１０２２内の経路テーブルに記録する。第６の実施形態では、記録される輻輳情報は、行きの経路および帰りの経路ごとのバッファ使用量である。
【０２４５】
図３１は、第６の実施形態に従った経路テーブルの一例である。
図３１に示されるように、経路テーブルには、行きの経路と帰りの経路毎にバッファ使用量とバッファ使用量順が記録される。
【０２４６】
次に、輻輳情報収集後に通信を開始する際、ローカルノードの演算処理装置１０１は、通信開始指示を制御部６０２１に送る。演算処理装置１０１による通信開始指示には、リモートノードアドレス、通信の種類、メッセージを送信する場合はメッセージの格納場所、および経路選択指示が含まれる。本実施形態では、経路選択指示としてバッファの使用量の順番と通信の種類とが演算処理装置１０１により指定される。
【０２４７】
演算処理装置１０１により指定された通信の種類が例えばPut通信の様にローカルノードがリモートノードにメッセージを送る通信である場合には、制御部６０２１は、経路テーブルを参照して行きの経路の中からバッファ使用量を並べた時の順番に基づき経路を選択する。
【０２４８】
また、演算処理装置１０１により指定された通信の種類がGet通信の様にリモートノードがローカルノードにメッセージを送る通信である場合には、制御部６０２１は、経路テーブルを参照して帰りの経路の中からバッファの使用量を並べた時の順番に基づき経路を決定する。
【０２４９】
本実施形態に従えば、ネットワークインタフェース装置は、メッセージを送る行きの経路または帰りの経路のみの情報に基づき経路を選択することができる。
また、本実施形態に従えば、輻輳情報収集パケットの送信により、Put通信の様にローカルノードがリモートノードにメッセージを送る通信用の輻輳情報と、Get通信の様にリモートノードがローカルノードにメッセージを送る通信用の輻輳情報とを一度に収集することができる。
【０２５０】
次に、第６の実施形態に従った並列計算機のスイッチの構成および動作を説明する。
第６の実施形態では、輻輳情報収集パケットおよび輻輳情報収集応答パケットがスイッチ内で通過する経路と、これらのパケット以外の通常パケットがスイッチ内で通過する経路とを異なるようにする。
【０２５１】
図３２は、第６の実施形態に従ったスイッチの構成図である。
図３２には、各ノードを１次元のネットワークに接続する場合のスイッチが図示されているが、多次元のネットワークを構成する場合、図３２に示したスイッチｓ６は、図３２に示した構成のポートを増やした構成となる。
【０２５２】
図３２に示すように、スイッチｓ６には、ネットワークインタフェースへ接続するポートと、他のスイッチへ接続するポートとが含まれる。
図３２では、説明を明確にするために、各ポートｐ４、ｐ５、ｐ６には送信部または受信部のみが図示されている。しかし、各ポートｐ４、ｐ５、ｐ６は、輻輳情報パケット処理部および通常パケット処理部を各々含んだ送信部および受信部の両ユニットを有する。
【０２５３】
ポートの送信部ｔ４には、輻輳情報パケット処理部ｔ４ａおよび通常パケット処理部ｔ４ｂが含まれる。また、ポートの受信部ｒ５、ｒ６には、輻輳情報パケット処理部ｒ５ａ、ｒ６ａ、および通常パケット処理部ｒ５ｂ、ｒ６ｂが含まれる。
【０２５４】
輻輳情報パケット処理部ｔ４ａ、ｒ５ａ、ｒ６ａは、輻輳情報収集パケットおよび輻輳情報収集応答パケットを処理するユニットである。輻輳情報パケット処理部ｔ４ａ、ｒ５ａ、ｒ６ａには、制御部ｔ４ａｃ、ｒ５ａｃ、ｒ６ａｃ、およびバッファｔ４ａｂ、ｒ５ａｂ、ｒ６ａｂが含まれる。
【０２５５】
通常パケット処理部ｔ４ｂ、ｒ５ｂ、ｒ６ｂは、輻輳情報収集パケットおよび輻輳情報収集応答パケット以外の通常パケットを処理するユニットである。通常パケット処理部ｔ４ｂ、ｒ５ｂ、ｒ６ｂには、制御部ｔ４ｂｃ、ｒ５ｂｃ、ｒ６ｂｃ、およびバッファｔ４ｂｂ、ｒ５ｂｂ、ｒ６ｂｂが含まれる。
【０２５６】
図３２には、ポートｐ４の送信部の輻輳情報パケット処理部の制御部ｔ４ａｃと、ポートｐ５、ｐ６の輻輳情報パケット処理部の受信部の制御部ｒ５ａｃ、ｒ６ａｃとの間でパケットの送受信がなされる場合を一例として図示している。また、図３２では、ポートｐ４の送信部の通常パケット処理部の制御部ｔ４ｂｃと、ポートｐ５、ｐ６の通常パケット処理部の受信部の制御部ｒ５ｂｃ、ｒ６ｂｃとの間でパケットの送受信がなされる場合を一例として図示している。
【０２５７】
第６の実施形態に従ったスイッチｓ６では、スイッチの外のネットワークインタフェース装置６０２または他のスイッチｓ６から受信されたパケットは、ポートｐ４、ｐ５、ｐ６の送信部の通常パケット処理部または輻輳情報収集パケット処理部に振り分けられて処理される。
【０２５８】
通常パケット制御部が行う処理については、図１２を参照して前述した第１の実施形態に従ったスイッチが行う処理と同様である。
輻輳情報パケット処理部が行う処理については、図１２のｓｔｅｐ１２０２において次のような処理が追加される。すなわち、図１２のｓｔｅｐ１２０２においてルーティングヘッダを更新する際に、処理中の輻輳情報収集パケット内のバッファ使用量のフィールド、あるいは処理中の輻輳情報収集応答パケット内のバッファ使用量のフィールドに、通常パケット処理部内にあるバッファのバッファ使用量を加算する。バッファ使用量を加算した後に輻輳情報パケット処理部が行う処理は、図１２を参照して前述した第１の実施形態に従ったスイッチが行う処理と同様である。
【０２５９】
図３２に示すように、輻輳情報収集パケットおよび輻輳情報収集応答パケットは、通常パケットとは異なる経路を通過し、これらのパケットのバッファ使用量のフィールドに各ポートのバッファ使用量が加算されていく。
【０２６０】
第６の実施形態に従ったスイッチによれば、輻輳情報を収集するための輻輳情報収集パケットおよび輻輳情報収集応答パケットがその他の通信に与える影響を少なくすることができる。
【０２６１】
なお、第６の実施形態の以上の説明では、第１、第４、および第５の実施形態に従った並列計算機のようにローカルノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機を例に説明した。しかしながら、第６の実施形態は、第２および第３の実施形態に従った並列計算機のようにローカルノードグループ内の輻輳情報収集ノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機においても実現できる。
【０２６２】
すなわち、第２および第３の実施形態に従った並列計算機のローカルノードが行う処理を本実施形態に従ったローカルノードの演算処理装置が行う処理に合わせて変更する。第２および第３の実施形態に従った並列計算機の輻輳情報収集ノードが行う処理を本実施形態に従ったローカルノードのネットワークインタフェース装置が行う処理に合わせて変更する。第２および第３の実施形態に従った並列計算機のリモートノードが行う処理を本実施形態に従ったリモートノードのネットワークインタフェース装置が行う処理に合わせて変更する。第２および第３の実施形態に従った並列計算機のスイッチが行う処理を本実施形態に従ったスイッチが行う処理に合わせて変更する。
【０２６３】
＜第７の実施形態＞
上述した第１〜第６の各々の実施形態に従った並列計算機では、ローカルノードのネットワークインタフェース装置（または輻輳情報収集ノードのネットワークインタフェース装置）は、輻輳情報収集パケットを送信した後、輻輳情報収集応答パケットを受信するまで輻輳情報を収集する処理を行う。
【０２６４】
第７の実施形態に従った並列計算機では、ローカルノードのネットワークインタフェース装置（または輻輳情報収集ノードのネットワーク装置）により行われる輻輳情報収集の終了条件を設定する。
【０２６５】
第７の実施形態の以下の説明では、受信した輻輳情報収集応答パケットのパケット数、および輻輳情報収集パケットを送信してから輻輳情報収集応答パケットを受信するまでのタイムアウト値を輻輳情報収集の終了条件として設定した場合について説明する。
【０２６６】
また、第７の実施形態の以下の説明では、第１の実施形態に従った並列計算機のようにローカルノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機を例に説明する。しかしながら、第７の実施形態は、第２および第３の実施形態に従った並列計算機のようにローカルノードグループ内の輻輳情報収集ノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機においても実現できる。
【０２６７】
第７の実施形態に従った並列計算機の構成は、図１に示した並列計算機の構成と同様であってよい。
第７の実施形態に従った並列計算機を構成する各ノードは、どのノードがどのノードに通信をおこなうかによって、ローカルノードとなり、およびリモートノードとなる。したがって、各ノードは、ローカルノードおよびリモートノードの何れにもなり得る構成を備える。
【０２６８】
図３３は、第７の実施形態に従ったノードがローカルノードである場合のノードの構成図である。図５に示した第１の実施形態に従ったノードｎ１の構成要素と同じ構成要素は、図３３において同じ参照符号がふられている。なお、第７の実施形態に従った並列計算機のノードがリモートノードである場合のノードの構成は、図５を示して前述した第１の実施形態と同様である。
【０２６９】
図３３に示すように、第７の実施形態に従ったノードｎ７のネットワークインタフェース装置７０２には、制御部７０２１が輻輳情報収集パケットを送信してから輻輳情報収集応答パケットを受信するまでのタイムアウト値を計測するためのカウンタ７０２６が含まれる。
【０２７０】
第７の実施形態に従ったスイッチの構成および動作は、第１の実施形態に従ったスイッチｓ１の構成および動作と同じであってよい。
【０２７１】
図３４は、第７の実施形態に従ったローカルノードの制御部が行う処理のフローチャートである。
ｓｔｅｐ３４０１では、ローカルノードの演算処理装置１０１から輻輳情報収集指示を受信すると、制御部７０２１は、輻輳情報の処理を開始する。演算処理装置１０１による輻輳情報収集指示には、リモートノード、経路候補、輻輳情報収集応答パケット数、およびタイムアウト値が含まれる。
【０２７２】
ｓｔｅｐ３４０２では、制御部７０２１は、輻輳情報収集パケットを生成し、生成した輻輳情報収集パケットを輻輳情報収集指示により指定された経路を使ってリモートノードへ送信する。また、制御部７０２１は、輻輳情報収集パケットの送信と共に現在のカウンタ値をカウンタ７０２６から取得し記録する。なお、本実施形態に従った輻輳情報収集パケットは、第１の実施形態に従った輻輳情報収集パケットと同様であってよい。
【０２７３】
輻輳情報収集パケットを受信したリモートノードのネットワークインタフェース装置は、輻輳情報収集応答パケットをローカルノードに送り返す。本実施形態に従ったリモートノードのネットワークインタフェース装置が行う処理は、第１の実施形態に従ったリモートノードのネットワークインタフェース装置１０２が行う処理と同様であってよい。また、本実施形態に従った輻輳情報収集応答パケットは、第１の実施形態に従った輻輳情報収集応答パケットと同様であってよい。
【０２７４】
ｓｔｅｐ３４０３では、制御部７０２１は、輻輳情報収集の終了条件についての判定を行う。
すなわち、ｓｔｅｐ３４０３において、送信時に取得したカウンタ値と現在のカウンタのカウンタ値との差分が指定されたタイムアウト値未満で、かつ、受信した輻輳情報収集応答パケット数が指定された輻輳情報収集応答パケット数値未満である場合には、ｓｔｅｐ３４０４に進む。
【０２７５】
ｓｔｅｐ３４０４では、制御部７０２１は、輻輳情報収集応答パケットの受信を待ち合わせ、受信すれば輻輳情報収集応答パケットの戻り順等の輻輳情報および経路を経路テーブル記憶部１０２２中の経路テーブルに保存する。また、経路テーブルへの保存と共に、受信した輻輳情報収集応答パケット数を更新して記録する。
【０２７６】
ｓｔｅｐ３４０３において送信時カウンタ値と現在のカウンタ値との差分が指定されたタイムアウト値以上、または受信した輻輳情報収集応答パケットの数が指定された値以上である場合には、制御部７０２１は、輻輳情報収集を終了する。
【０２７７】
第７の実施形態に従えば、輻輳情報収集の終了条件が設定される。このため、例えばリモートノードまたは経路上のスイッチに故障が発生し、輻輳情報収集応答パケットが戻ってこない経路が存在しても、ローカルノードのネットワークインタフェース装置は、輻輳情報収集を終了することができる、
また、第７の実施形態に従えば、ローカルノードのネットワークインタフェース装置は、輻輳情報収集応答パケットが戻ってきた経路の中から経路を選択する。このため、故障が発生した経路を通信に使う経路として選択することを回避できる。
【０２７８】
そして、第７の実施形態に従えば、例えば戻り順の指定で1番目に戻ってきた経路を使う場合は、輻輳情報収集の終了条件についての輻輳情報収集応答パケット数を1に設定できる。このため、輻輳情報収集の時間を短縮できる。
【０２７９】
なお、第７の実施形態の上述の説明では、第１の実施形態に従った並列計算機のようにローカルノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機を例に説明した。しかしながら、第７の実施形態は、第２および第３の実施形態に従った並列計算機のようにローカルノードグループ内の輻輳情報収集ノードのネットワークインタフェース装置が輻輳情報の収集および経路選択を行う並列計算機においても実現できる。
【０２８０】
すなわち、例えば第２の実施形態に従った輻輳情報収集ノードのネットワークインタフェース装置２０２内に前述した第７の実施形態に従ったローカルノードのネットワークインタフェース装置７０２のカウンタ７０２１を備える。そして、前述した本実施形態に従った輻輳情報を収集する際のカウンタ値に関する制御部７０２１の処理フローを第２の実施形態に従った輻輳情報収集ノードの制御部２０２１の処理フローにおいても行う。
【０２８１】
本発明の実施形態に関し、さらに以下の付記を開示する。
（付記１）
並列計算機システムに含まれる他の情報処理装置と複数の経路を介して接続される情報処理装置において、
輻輳情報の収集と、通信とを指示する演算処理装置と、
通信を行なう経路情報を保持する経路情報保持部と、
輻輳情報の収集を行なうための輻輳情報収集パケットを前記複数の経路のいずれかに送信する送信部と、
前記複数の経路のいずれかから前記輻輳情報収集パケットに対応する輻輳情報収集応答パケットを受信する受信部と、
前記演算処理装置が輻輳情報の収集を指示した場合に、生成した輻輳情報収集パケットを前記送信部に送信させ、前記受信部が受信した輻輳情報収集応答パケットに含まれる輻輳情報に基づき前記経路情報保持部から経路情報を選択し、選択した経路情報に基づいて前記演算処理装置が指示した通信を前記送信部に行なわせる制御部を有することを特徴とする情報処理装置。
（付記２）
前記情報処理装置において、
前記制御部は、前記演算処理装置が通信の開始を前記制御部に指示したときに輻輳情報を収集することを特徴とする付記１に記載の情報処理装置。
（付記３）
前記情報処理装置において、
前記輻輳情報の収集の指示の際に前記演算処理装置が前記制御部に対して指定する経路は、前記情報処理装置と前記輻輳情報収集パケットの送信先情報処理装置との間の中継情報処理装置の指定と、前記中継情報処理装置間の経路および前記中継情報処理装置と前記送信先情報処理装置と間の経路についての次元順ルーティングの次元の順番の指定とにより指定することを特徴とする付記１に記載の情報処理装置。
（付記４）
前記情報処理装置において、
前記輻輳情報は、前記制御部が前記輻輳情報収集応答パケットを受信した戻り順であることを特徴とする付記１又は２に記載の情報処理装置。
（付記５）
前記情報処理装置において、
前記演算処理装置が前記通信を指示する際に前記制御部に指定する経路は、前記輻輳情報を収集した経路を前記戻り順で並べた時の任意の順位により指定することを特徴とする付記４に記載の情報処理装置。
（付記６）
前記情報処理装置において、
前記制御部は、前記任意の順位の前記輻輳収集応答パケットを受信した時点で、前記通信の経路を選択することを特徴とする付記５に記載の情報処理装置。
（付記７）
前記演算処理装置は、前記輻輳情報収集パケットが通過する送信先情報処理装置までの往路の経路のみ指定することを特徴とする付記１〜６のいずれか１項に記載の情報処理装置。
（付記８）
前記情報処理装置において、
前記演算処理装置は、前記輻輳情報収集パケットが通過する送信先情報処理装置までの往路の経路と、前記輻輳情報収集応答パケットを受信する前記情報処理装置からの復路の経路とを指定することを特徴とする付記１〜６のいずれか１項に記載の情報処理装置。
（付記９）
前記情報処理装置において、
前記輻輳情報は、前記輻輳情報収集パケットを前記制御部が送信してから前記輻輳情報収集応答パケットを前記制御部が受信するまでの応答時間であることを特徴とする付記１または２に記載の情報処理装置。
（付記１０）
前記情報処理装置において、
前記演算処理装置が前記通信を指示する際に前記制御部に指定する経路は、前記輻輳情報を収集した経路を前記応答時間で並べた時の任意の順位で指定することを特徴とする付記９に記載の情報処理装置。
（付記１１）
前記情報処理装置において、
前記輻輳情報は、前記輻輳情報収集パケットおよび前記輻輳情報収集応答パケットが通過したスイッチのバッファのバッファ使用量であることを特徴とする付記１または２に記載の情報処理装置。
（付記１２）
前記情報処理装置において、
前記輻輳情報収集パケットおよび前記輻輳情報収集応答パケットは前記スイッチ内で、他のパケットとは別の経路を通過することを特徴とする付記１１に記載の情報処理装置。
（付記１３）
前記情報処理装置において、
前記輻輳情報収集パケットが通過する送信先情報処理装置までの往路の経路と、前記輻輳情報収集応答パケットを受信する前記情報処理装置までの復路の経路とで、前記スイッチの前記バッファのバッファ使用量を別々に収集することを特徴とする付記１１に記載の情報処理装置。
（付記１４）
前記情報処理装置において、
前記演算処理装置が前記通信を指示する際に前記制御部に指定する経路は、前記輻輳情報を収集した経路を前記バッファ使用量で並べた時の任意の順位により指定することを特徴とする付記１３に記載の情報処理装置。
（付記１５）
前記情報処理装置において、
前記演算処理装置が前記通信を指示する際に前記制御部に指定する経路は、前記バッファの使用量の順番と前記通信の種類により指定し、
前記制御部は、前記情報処理装置が前記送信先情報処理装置にメッセージを送る通信の場合は、前記往路の経路についての前記バッファ使用量を並べた時の順番を基に経路を決定し、前記送信先情報処理装置が前記情報処理装置にメッセージを送る通信の場合は、前記復路の経路についての前記バッファ使用量を並べた時の順番を基に経路を決定することを特徴とする付記１３に記載の情報処理装置。
（付記１６）
前記情報処理装置において、
前記演算処理装置は、前記制御部に輻輳情報の収集を所定の間隔で繰り返すように指示し、
前記制御部は、指示された前記所定の間隔で前記輻輳情報収集パケットを繰り返し送って、受信した輻輳情報収集応答パケットに含まれる輻輳情報を前記経路情報保持部に書込み、前記輻輳情報の書込み後、前記情報処理装置が通信中である場合には、通信中の経路を選択し直すことを特徴とする付記１に記載の情報処理装置。
（付記１７）
前記情報処理装置において、
前記演算処理装置は、前記制御部の受信する輻輳情報収集応答パケット数と前記輻輳情報収集パケットを送信してから前記輻輳情報収集応答パケットを受信するまでのタイムアウト期間とを、前記輻輳情報の収集の指示を開始する時に指定し、
前記制御部は、指定された数の輻輳情報収集応答パケットを受信したとき、または輻輳情報の収集を開始してから指定した前記タイムアウト期間が経過したときに、輻輳情報の収集を終了することを特徴とする付記１に記載の情報処理装置。
（付記１８）
複数の情報処理装置が接続された並列計算機システムにおいて、
前記情報処理装置は、
並列計算機システム内の輻輳情報の収集と、通信とを指示する演算処理装置と、
他の情報処理装置との通信を行なう経路情報を保持する経路情報保持部と、
輻輳情報の収集を行なうための輻輳情報収集パケットを他の情報処理装置に対して送信する送信部と、
他の情報処理装置からの輻輳情報収集パケットと、前記送信部から送信した輻輳情報収集パケットに対応する他の情報処理装置からの輻輳情報収集応答パケットとを受信する受信部と、
前記演算処理装置が輻輳情報の収集を指示した場合に輻輳情報収集パケットを前記送信部に送信させ、前記受信部が受信した輻輳情報収集応答パケットに含まれる輻輳情報に基づき前記経路情報保持部から経路情報を選択し、選択した経路情報に基づいて前記演算処理装置が指示した通信を前記送信部に行わせるとともに、他の情報処理装置からの輻輳情報収集パケットを受信した場合には対応する輻輳情報収集応答パケットを生成し、他の情報処理装置に生成した輻輳情報収拾応答パケットを前記送信部に送信させる制御部とを有することを特徴とする、
並列計算機システム。
（付記１９）
第１の情報処理装置と第２の情報処理装置を含む複数の情報処理装置が複数の経路を介して接続された並列計算機システムの制御方法において、
前記第１の情報処理装置が有する演算処理装置が、輻輳情報の収集を指示し、
前記演算処理装置が輻輳情報の収集を指示した場合に、前記第１の情報処理装置が有する第１の制御部が、輻輳情報の収集を行なう輻輳情報収集パケットを生成し、
前記第１の情報処理装置が有する第１の送信部が、前記第１の制御部が生成した輻輳情報収集パケットを前記複数の経路のいずれかに送信し、
前記第２の情報処理装置が有する第２の受信部が、前記複数の経路のいずれかを介して輻輳情報収集パケットを受信し、
前記第２の情報処理装置が有する第２の制御部が、前記第２の受信部が受信した輻輳情報収集パケットに対応する輻輳情報収集応答パケットを生成し、
前記第２の情報処理装置が有する第２の送信部が、前記第２の制御部が生成した輻輳情報収集応答パケットを前記複数の経路のいずれかに送信し、
前記第１の情報処理装置が有する第１の受信部が、前記複数の経路のいずれかから前記輻輳情報収集パケットに対応する輻輳情報収集応答パケットを受信し、
前記第１の制御部が、前記受信部が受信した輻輳情報収集応答パケットに含まれる輻輳情報に基づき前記第１の情報処理装置が有する経路情報保持部が保持する経路情報を書き替え、
前記書き替えた経路情報に基づいて前記演算処理装置が指示した通信を、前記第１の制御部が前記第１の送信部に行なわせることを特徴とする並列計算機の制御方法。
（付記２０）
複数の情報処理装置が接続された並列計算機システムにおいて、
前記情報処理装置は、
輻輳情報の収集と、通信とを指示する演算処理装置と、
前記輻輳情報の収集指示を行なう輻輳情報収集指示パケット、前記通信を開始する際の経路指示をおこなう経路選択パケット、および前記通信が完了したことを示す完了通知パケットを、前記情報処理装置が属する通信を開始する情報処理グループ内に設定された輻輳情報を収集する他の情報処理装置に送信し、前記情報処理装置が輻輳情報を収集する情報処理装置として設定された場合に、輻輳情報の収集を行なう輻輳情報収集パケットを複数の経路のいずれかを用いて、通信を受信する情報処理装置グループに属する情報処理装置に送信し、および経路選択パケットに基づき選択された経路情報を含む経路パケットを通信を指示した情報処理装置に送信する送信部と、
前記輳情報を収集する他の情報処理装置から前記経路選択パケットに対応する経路パケットを受信し、前記情報処理装置が輻輳情報を収集する情報処理装置として設定された場合に、輻輳情報の収集を指示した情報処理装置から輻輳情報収集指示パケットを受信し、前記輻輳情報収集パケットに対応する輻輳情報収集応答パケットを通信を受信する情報処理装置グループに属する情報処理装置から受信し、および経路選択パケットと完了通知パケットとを通信を指示した情報処理装置から受信する受信部と、
前記演算処理装置からの前記輻輳情報の収集の指示に基づき輻輳情報収集指示パケットを生成し、前記生成した前記輻輳情報収集指示パケットを前記送信部に送信させ、前記演算処理装置からの通信の指示に基づき経路選択パケットを生成し、前記生成した前記経路選択パケットを前記送信部に送信させ、前記受信部が受信した経路パケットに含まれる経路に基づき前記演算処理装置が指示した通信を前記送信部に行なわせ、および前記通信が完了した場合に完了通知パケットを生成し、前記生成した完了通知パケットを前記送信部に送信させ、前記情報処理装置が輻輳情報を収集する情報処理装置として設定された場合に、前記受信部が受信した輻輳情報収集指示パケットに基づき輻輳情報収集パケットを生成し、前記生成した輻輳情報収集パケットを前記送信部に送信させ、前記受信部が受信した輻輳情報収集応答パケットに含まれる輻輳情報に基づき前記経路情報保持部が保持する経路情報を書き替え、前記受信部が受信した経路選択パケットと前記経路情報保持部が保持する経路情報とに基づき経路を選択し、前記選択した経路を含む経路パケットを通信を指示した情報処理装置に送信すると共に前記通信を指示した情報処理装置が前記選択した経路により通信中であることを示す情報を前記経路情報保持部に保持させ、および前記受信部が完了通知パケットを受信した場合に、前記経路情報保持部が保持する前記通信を指示した情報処理装置が通信中であることを示す情報を削除する制御部とを有することを特徴とする、
並列計算機システム。
（付記２１）
複数の情報処理装置が複数の経路を介して接続された並列計算機システムにおいて、
前記複数の情報処理装置に対して設定された通信を開始する情報処理装置グループ内の第１の情報処理装置が有する演算処理装置が装置輻輳情報の収集を指示し、
前記演算処理装置が前記輻輳情報の収集を指示した場合に、前記第１の情報処理装置が有する第１の制御部が、前記輻輳情報の収集指示を行なう輻輳情報収集指示パケットを生成し、
前記第１の情報処理装置が有する第１の送信部が前記輻輳情報指示パケットを、前記通信を開始する情報処理装置グループ内に設定された輻輳情報を収集する情報処理装置に送信し、
前記輻輳情報を収集する情報処理装置が有する第２の受信部が前記輻輳情報収集指示パケットを受信し、
前記輻輳情報を収集する情報処理装置が有する第２の制御部が、前記輻輳情報の収集を行なう輻輳情報収集パケットを生成し、
前記輻輳情報を収集する情報処理装置が有する第２の送信部が、前記第１の制御部が生成した前記輻輳情報収集パケットを前記複数の経路のいずれかを用いて前記複数の情報処理装置に対して設定された通信を受信する情報処理装置グループ内の第２の情報処理装置に送信し、
前記輻輳情報を収集する情報処理装置が有する第２の受信部が、前記複数の経路のいずれかを用いて前記第２の情報処理装置から前記輻輳情報収集パケットに対応する輻輳情報収集応答パケットを受信し、
前記第２の制御部が、前記第２の受信部が受信した前記輻輳情報収集応答パケットに含まれる輻輳情報に基づき前記輻輳情報を収集する情報処理装置が有する経路情報保持部が保持する経路情報を書き替え、
前記演算処理装置が前記通信の開始を指示した場合に、前記第１の制御部が、前記経路保持部が保持する経路情報に基づき経路を選択するための経路選択パケットを前記第１の送信部に送信させ、
前記第２の受信部が前記経路パケットを受信し、
前記第２の制御部が、前記経路保持部が保持する経路情報に基づき経路を選択し、前記選択した経路の経路情報を含む経路パケットを生成し、前記選択した経路が前記第１の情報処理装置の通信に使用中であることを示す情報を前記経路保持部に保持させ、
前記第２の送信部が前記経路パケットを前記第１の情報処理装置に送信し、
前記第１の情報処理装置が有する第１の受信部が前記経路パケットを受信し、
前記経路パケットに含まれる前記経路情報に基づいて前記演算処理装置が指示した前記通信を、前記第１の制御部が前記第１の送信部に行なわせ、
前記通信が完了した場合に、前記第１の制御部が、通信が完了したことを示す前記完了通知パケットを生成し、
前記第１の送信部が前記完了通知パケットを前記輻輳情報を収集する情報処理装置に送信し、
前記第２の受信部が前記完了通知パケットを受信し、
前記第２の制御部が前記完了通知に基づき前記選択した経路が前記第１の情報処理装置の通信に使用中であることを示す情報を前記経路保持部から削除することを特徴とする並列計算機の制御方法。
【符号の説明】
【０２８２】
ｎ１、ｎ２、ｎ３、ｎ４、ｎ、５、ｎ６、ｎ７：ノード
１０１：演算処理装置
１０２、２０２、３０２、４０２、５０２、６０２、７０２：ネットワークインタフェース装置
１０２１、２０２１、３０２１、４０２１、５０２１、６０２１、７０２１：制御部
１０２２：経路テーブル記憶部
１０２３、４０２３：パケット送信部
１０２４：パケット送信部
１０２５：ＤＭＡコントローラ
１０３：主記憶部
１０４：バス
１０５ネットワーク
ｓ１、ｓ６：スイッチ
ｐ１、ｐ２、ｐ３、ｐ４、ｐ５、ｐ６：ポート
ｔ１、ｔ２、ｔ３、ｔ４：送信部
ｒ１、ｒ２、ｒ３、ｒ４、ｒ５、ｒ６：受信部
【図１】
0005703909.tif 000002
【図２】
0005703909.tif 000003
【図３】
0005703909.tif 000004
【図４】
0005703909.tif 000005
【図５】
0005703909.tif 000006
【図８】
0005703909.tif 000007
【図９】
0005703909.tif 000008
【図１０】
0005703909.tif 000009
【図１１】
0005703909.tif 000010
【図１２】
0005703909.tif 000011
【図１３】
0005703909.tif 000012
【図１４】
0005703909.tif 000013
【図１５】
0005703909.tif 000014
【図１６】
0005703909.tif 000015
【図１７】
0005703909.tif 000016
【図１８】
0005703909.tif 000017
【図１９】
0005703909.tif 000018
【図２０】
0005703909.tif 000019
【図２１】
0005703909.tif 000020
【図２２】
0005703909.tif 000021
【図２３】
0005703909.tif 000022
【図２４】
0005703909.tif 000023
【図２５】
0005703909.tif 000024
【図２６】
0005703909.tif 000025
【図２７】
0005703909.tif 000026
【図２８】
0005703909.tif 000027
【図２９】
0005703909.tif 000028
【図３０】
0005703909.tif 000029
【図３１】
0005703909.tif 000030
【図３３】
0005703909.tif 000031
【図３４】
0005703909.tif 000032
【図６】
0005703909.tif 000033
【図７】
0005703909.tif 000034
【図３２】
0005703909.tif 000035