(57)【要約】  データを出力する場合、送信ノード数記憶部（１６）が記憶する送信ノード数を更新し、入力部（１１）が入力するデータに含まれる送信ノード数と、送信ノード数記憶部（１６）が記憶する送信ノード数との比較の結果、送信ノード数記憶部（１６）が記憶する送信ノード数が、入力部（１１）が入力するデータに含まれる送信ノード数より大きい場合、出力部（１２）が出力するデータに含まれる送信ノード数を、送信ノード数記憶部（１６）が記憶する送信ノード数に書き換えることにより、通信経路上の通信状態に合わせた輻輳制御を効率よく実現する。
2013098993.tif 000002
【特許請求の範囲】
【請求項１】
通信制御装置と、前記通信制御装置を経由してデータを送信する送信元の計算ノードと、前記通信制御装置を経由してデータを受信する送信先の計算ノードとを、それぞれ複数備える計算機システムにおいて、
前記送信元の計算ノードは、
前記送信先の計算ノードにデータを送信するデータ送信部と、
受信した制御データに含まれる送信ノード数に基づいて、前記データ送信部が送信するデータ間の間隔を調整する調整部を有し、
前記通信制御装置は、
前記送信元の計算ノードが送信するデータを入力する入力部と、
前記送信先の計算ノードに送信するデータを出力する出力部と、
前記通信制御装置を経由してデータを送信する計算ノードの数を表す送信ノード数を記憶する送信ノード数記憶部と、
前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新する更新処理部と、
前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較する比較部と、
前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換える書換部を有し、
前記送信先の計算ノードは、
受信したデータに含まれる送信ノード数を含む前記制御データを、前記送信元の計算ノードに送信する制御データ送信部を有することを特徴とする計算機システム。
【請求項２】
前記通信制御装置はさらに、
前記入力部が入力するデータのサイズであるデータサイズと、予め設定した閾値とを比較するデータサイズ比較部と、
前記データサイズ比較部による比較の結果、前記データサイズが前記閾値より小さい場合、前記出力部がデータを出力するとき、前記送信ノード数記憶部が記憶する送信ノード数の前記更新処理部による更新を抑止する更新抑止部を有することを特徴とする請求項１記載の計算機システム。
【請求項３】
前記データ送信部は、
分割された複数のデータを生成し、
前記更新処理部は、
前記出力部が、生成された前記複数のデータのうち先頭のデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新することを特徴とする請求項１又は２記載の計算機システム。
【請求項４】
前記データ送信部は、
分割された前記複数のデータのうち先頭のデータに先頭である旨を示す先頭識別情報を付加し、
前記更新処理部は、
前記先頭識別情報が付加されたデータを前記出力部から出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新することを特徴とする請求項３記載の計算機システム。
【請求項５】
前記データ送信部は、
分割された複数のデータを作成し、
前記更新処理部は、
前記出力部が、生成された前記複数のデータのうち末尾のデータを出力する場合、前記送信ノード数記憶部の送信ノード数を減少させることを特徴とする請求項１又は２記載の計算機システム。
【請求項６】
前記データ送信部は、
分割された複数のデータを作成するとともに、前記複数のデータの末尾のデータに末尾である旨を示す末尾識別情報を付加し、
前記更新処理部は、
前記出力部が、前記末尾識別情報が付加されたデータを出力する場合、前記送信ノード数記憶部の送信ノード数を減少させることを特徴とする請求項５記載の計算機システム。
【請求項７】
前記更新処理部は、
前記送信ノード数記憶部の送信ノード数を増加させた後、所定時間が経過した場合、前記送信ノード数記憶部が記憶する送信ノード数を減少させることを特徴とする請求項１〜４のいずれか１項に記載の計算機システム。
【請求項８】
前記通信制御装置は、
前記通信制御装置を経由するデータを送信中の計算ノードを示す送信ノード情報を記憶する送信ノード情報記憶部を有し、
前記更新処理部は、
前記出力部がデータを出力する場合、前記送信ノード情報記憶部を参照し、前記出力部が出力するデータの送信元の計算ノードが、前記送信ノード情報に含まれていないとき、前記送信ノード情報に前記データの送信元の計算ノードを含めるとともに、前記送信ノード数記憶部が記憶する送信ノード数を更新することを特徴とする請求項１〜７のいずれか１項に記載の計算機システム。
【請求項９】
前記データ送信部は、
複数のメッセージにそれぞれ対応する複数のデータを送信する場合、前記複数のメッセージにそれぞれ対応する複数のデータに、対応するメッセージを識別するメッセージ識別情報をそれぞれ付加し、
前記送信ノード情報記憶部は、
メッセージ識別情報毎に送信ノード情報を記憶し、
前記更新処理部は、
前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を、メッセージ識別情報毎に更新することを特徴とする請求項８記載の計算機システム。
【請求項１０】
通信制御装置と、前記送信元の計算ノードと、前記送信先の計算ノード間を接続する通信網が、複数の次元の通信路を接続する多次元ネットワーク構成を有し、
前記ノード数記憶部は、
次元毎に前記送信ノード数を対応させて記憶し、
前記送信元の計算ノードから前記送信先の計算ノードまでの通信路に中に存在し、一の次元の通信路から他の次元の通信路への乗り換えが行なわれる通信制御装置の更新処理部は、
乗り換え前の前記一の次元の通信路の送信ノード数に代えて、乗り換え後の前記他の次元に対応する送信ノード数として、前記通信制御装置に接続された計算ノードの数を記憶することを特徴とする請求項１〜９のいずれか１項に記載の計算機システム。
【請求項１１】
通信制御装置において、
前記通信制御装置を経由してデータを送信する送信元の計算ノードが送信するデータを入力する入力部と、
前記通信制御装置を経由してデータを受信する送信先の計算ノードに送信するデータを出力する出力部と、
前記通信制御装置を経由してデータを送信する計算ノードの数を表す送信ノード数を記憶する送信ノード数記憶部と、
前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新する更新処理部と、
前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較する比較部と、
前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換える書換部を有することを特徴とする通信制御装置。
【請求項１２】
通信制御装置と、前記通信制御装置を経由してデータを送信する送信元の計算ノードと、前記通信制御装置を経由してデータを受信する送信先の計算ノードとを、それぞれ複数備える計算機システムの制御方法において、
前記送信元の計算ノードが有するデータ送信部が、前記送信先の計算ノードにデータを送信し、
前記送信元の計算ノードが有する調整部が、受信した制御データに含まれる送信ノード数に基づいて、前記データ送信部が送信するデータ間の間隔を調整し、  前記通信制御装置が有する入力部が、前記送信元の計算ノードが送信するデータを入力し、
前記通信制御装置が有する送信ノード数記憶部が、前記通信制御装置を経由してデータを送信する計算ノードの数を表す送信ノード数を記憶すると、
前記通信制御装置が有する出力部が、前記送信先の計算ノードに送信するデータを出力し、
前記出力部がデータを出力する場合、前記通信制御装置が有する更新処理部が、前記送信ノード数記憶部が記憶する送信ノード数を更新し、
前記通信制御装置が有する比較部が、前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較し、
前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記通信制御装置が有する書換部が、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換え、
前記送信先の計算ノードが有する制御データ送信部が、受信したデータに含まれる送信ノード数を含む前記制御データを、前記送信元の計算ノードに送信することを特徴とする計算機システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システム，通信制御装置及び計算機システムの制御方法に関する。
【背景技術】
【０００２】
従来、演算処理を行なう複数のノードを備える並列計算機が知られている。並列計算機にそなわるノードは、複数の通信機器、ルーティング装置（例えば、スイッチ）等を含むネットワークを介して接続され、互いにデータ通信を行なう。
図３４は並列計算機５００の構成例を示す図である。
この図３４に示す並列計算機５００は、計算を行なうノードＮ０〜Ｎ４と、受信したデータを特定の送信先のノードに転送するスイッチ５１０〜５１４とを備える。スイッチ５１０〜５１４は、ネットワークトポロジとしてスイッチを直線上に配置した１次元のメッシュ型ネットワークを構成する。【０００３】
スイッチは、ノードや他のスイッチが接続されている入力ポートからパケットを受信すると、受信したパケット内に含まれる宛先情報に基づいて、パケットを出力する出力ポートを決定する。そして、スイッチは、決定した出力ポートにパケットを出力する。
また、スイッチは、受信したデータや出力するデータを一時的に格納するバッファ５２０を備え、出力競合が起きた場合に１つのパケットを選んで転送し、その間、競合する他のパケットをバッファ５２０に格納する。【０００４】
同じ出力ポートに出力するパケットを複数受信した場合、スイッチは、各入力ポートから出力ポートに出力するパケットの数が均等になるように調停を行なう。そして、スイッチは、調停結果に従って出力ポートからパケットを送信する。
ネットワークにおいて、リンクが単位時間当たりに流せる量を超えたパケットが通信されると輻輳が発生する。【０００５】
上述の並列計算機５００において、一部のスイッチに通信が集中すると、通信が集中したスイッチまでのホップ数が大きいノードほど通信帯域幅が大きく下がる。この場合、ホップ数が小さいノードからのデータに比べて、ホップ数の大きいノードからの宛先ノードへのデータの到着が遅延する。
図３５はノードＮ０及びノードＮ３がノードＮ４に対してデータを送信する例を示す図である。【０００６】
一般に、スイッチは各入力ポートからのパケットが均等に出力されるように調停を行なう。すなわち、スイッチは、各入力ポートに入力されるパケットの、出力ポートへの出力数が均等、つまり１／２ずつになるように、入力するパケットの調停を行なう。従って、ノードＮ３からスイッチ５１３に送信され、且つ、スイッチ５１３からスイッチ５１４に送信されるパケット数は、スイッチ５１３からスイッチ５１４に送信される全パケット数の１／２となる。【０００７】
図３５に示す例において、スイッチ５１３からノードＮ４までの間の経路で、ノードＮ０から送信されたパケットとノードＮ３から送信されたパケットとが重なり、ノードＮ０及びノードＮ３が使用できる通信帯域はそれぞれ１／２になる。しかし、ノードＮ０，Ｎ３はパケットを最大の帯域で出し続けるため、バッファ５２０がフル（バッファフル）の状態となる。以下、バッファフルの状態を、バッファ５２０が詰まると表現する場合がある。【０００８】
そして、バッファ５２０の詰まりが生じた場合において、例えば、送信先のバッファ５２０が空いたとの通知を受け取ってからパケットの送信を行なう通信制御手法においては、通知による遅延が生じる。一方、送信先のバッファ５２０の空きを確認せずにパケット送信を行なう通信制御手法においては、送信先のバッファ５２０がフルの状態ではパケットは破棄されるので、パケットを再送する必要が生じる。すなわち、これらの通知による遅延やパケット再送により通信性能の悪化が生じる。【０００９】
また、バッファ５２０の詰まりにより、他のノードの通信も影響を受ける。例えば、スイッチ５１１，５１２のバッファ５２０が詰まっている場合には、ノードＮ１，Ｎ２間の通信は、バッファ５２０に空きが生じるまで待たなければならない。すなわち、輻輳が伝搬していく。
ここで、パケット間に特殊なギャップパケットを打ち込み、打ち込んだギャップパケットに基づいて、パケット数を調整し、データの破棄及びデータの再送を抑制する転送方法が知られている。
【非特許文献１】「ＪＣＮｎｅｔｗｏｒｋ ＝産業技術総合研、ネットワークトラフィックを平滑化するソフトウェアＰＳＰａｃｅｒ１．０を公開＝」、URL:「http://www.japancorp.net/japan/Article.Asp?Art_ID=29900」
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述の如き並列計算機システムにおいて、パケット間にどの程度のギャップを挿入すれば良いかは、パケットの送信元と送信先との組合わせ（通信パターン）に依存する。しかしながら、予め通信パターンにおいて通信がどの程度重なるかを予測し、ギャップ区間を決めることは困難である。又、通信パターンがランダム等の不規則的であれば、パケットの通信の重なりを予測するのはさらに困難になる。【００１１】
１つの側面では、本件は、輻輳の発生を抑止することを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００１２】
上記の目的を達成するために、通信制御装置と、前記通信制御装置を経由してデータを送信する送信元の計算ノードと、前記通信制御装置を経由してデータを受信する送信先の計算ノードとを、それぞれ複数備える計算機システムにおいて、前記送信元の計算ノードは、前記送信先の計算ノードにデータを送信するデータ送信部と、受信した制御データに含まれる送信ノード数に基づいて、前記データ送信部が送信するデータ間の間隔を調整する調整部を有し、前記通信制御装置は、前記送信元の計算ノードが送信するデータを入力する入力部と、前記送信先の計算ノードに送信するデータを出力する出力部と、前記通信制御装置を経由してデータを送信する計算ノードの数を表す送信ノード数を記憶する送信ノード数記憶部と、前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新する更新処理部と、前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較する比較部と、前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換える書換部を有し、前記送信先の計算ノードは、受信したデータに含まれる送信ノード数を含む前記制御データを、前記送信元の計算ノードに送信する制御データ送信部を有する。【００１３】
また、通信制御装置において、前記通信制御装置を経由してデータを送信する送信元の計算ノードが送信するデータを入力する入力部と、前記通信制御装置を経由してデータを受信する送信先の計算ノードに送信するデータを出力する出力部と、前記通信制御装置を経由してデータを送信する計算ノードの数を表す送信ノード数を記憶する送信ノード数記憶部と、前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新する更新処理部と、前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較する比較部と、前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換える書換部を有する。【００１４】
さらに、通信制御装置と、前記通信制御装置を経由してデータを送信する送信元の計算ノードと、前記通信制御装置を経由してデータを受信する送信先の計算ノードとを、それぞれ複数備える計算機システムの制御方法において、前記送信元の計算ノードが有するデータ送信部が、前記送信先の計算ノードにデータを送信し、前記送信元の計算ノードが有する調整部が、受信した制御データに含まれる送信ノード数に基づいて、前記データ送信部が送信するデータ間の間隔を調整し、前記通信制御装置が有する入力部が、前記送信元の計算ノードが送信するデータを入力し、前記通信制御装置が有する送信ノード数記憶部が、前記通信制御装置を経由してデータを送信する計算ノードの数を表す送信ノード数を記憶すると、前記通信制御装置が有する出力部が、前記送信先の計算ノードに送信するデータを出力し、前記出力部がデータを出力する場合、前記通信制御装置が有する更新処理部が、前記送信ノード数記憶部が記憶する送信ノード数を更新し、前記通信制御装置が有する比較部が、前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較し、前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記通信制御装置が有する書換部が、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換え、  前記送信先の計算ノードが有する制御データ送信部が、受信したデータに含まれる送信ノード数を含む前記制御データを、前記送信元の計算ノードに送信する。
【発明の効果】
【００１５】
通信経路上の通信状態に合わせた輻輳制御を効率よく実現することができる。
【図面の簡単な説明】
【００１６】
【図１】第１実施形態の一例としての並列計算機システムの機能構成を模式的に示す図である。
【図２】第１実施形態の一例としての並列計算機システムの構成を模式的に示す図である。
【図３】第１実施形態の一例としての並列計算機システムの計算ノードの構成を模式的に示す図である。
【図４】第１実施形態の一例としての並列計算機システムにおける送信パケットのフォーマットを模式的に例示する図である。
【図５】第１実施形態の一例としての並列計算機システムにおけるローカルノードアドレス及びリモートノードアドレスのフォーマットを例示する図である。
【図６】第１実施形態の一例としての並列計算機システムにおけるルーティングヘッダのフォーマットを例示する図である。
【図７】第１実施形態の一例としての並列計算機システムにおける応答パケットのフォーマットを模式的に例示する図である。
【図８】第１実施形態の一例としての並列計算機システムのスイッチの構成を模式的に示す図である。
【図９】第１実施形態の一例としての並列計算機システムにおける送信ノード数記憶部の機能構成を模式的に示す図である。
【図１０】第１実施形態の一例としての並列計算機システムにおける送信ノード数記憶部の変形例を示す図である。
【図１１】図１１Ａ，図１１Ｂ，図１１Ｃは第１実施形態の一例としての並列計算機システムにおけるパケットの通信手法の概要を説明する図である。
【図１２】第１実施形態の一例としての並列計算機システムにおけるスイッチのポート受信部の処理を説明するフローチャートである。
【図１３】第１実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。
【図１４】第１実施形態の一例としての並列計算機システムにおけるパケットの送信状態を例示する図である。
【図１５】第２実施形態の一例としての並列計算機システムにおける送信パケットのフォーマットを模式的に例示する図である。
【図１６】第２実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。
【図１７】第３実施形態の一例としての並列計算機システムにおける送信パケットのフォーマットを模式的に例示する図である。
【図１８】第３実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。
【図１９】第４実施形態の一例としての並列計算機システムの計算ノードの構成を模式的に示す図である。
【図２０】第４実施形態の一例としての並列計算機システムにおける送信パケットのフォーマットを模式的に例示する図である。
【図２１】第４実施形態の一例としての並列計算機システムにおける送信ノード数記憶部の機能構成を模式的に示す図である。
【図２２】第４実施形態の一例としての並列計算機システムにおける応答パケットのフォーマットを模式的に例示する図である。
【図２３】第４実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。
【図２４】第５実施形態の一例としての並列計算機システムの構成を模式的に示す図である。
【図２５】第５実施形態の一例としての並列計算機システムに備えられるスイッチのハードウェア構成を模式的に示す図である。
【図２６】第５実施形態の一例としての並列計算機システムの送信パケットに記憶される送信ノード数のフォーマット例を模式的に示す図である。
【図２７】第５実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。
【図２８】第６実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。
【図２９】第７実施形態の一例としての並列計算機システムにおける計算ノードの構成を模式的に示す図である。
【図３０】第７実施形態の一例としての並列計算機システムにおける送信パケットのフォーマットを模式的に例示する図である。
【図３１】第７実施形態の一例としての並列計算機システムにおける送信ノード数記憶部の構成を示す図である。
【図３２】第７実施形態の一例としての並列計算機システムにおける送信元ノードとしての計算ノードのネットワークインタフェースの処理を説明するフローチャートである。
【図３３】第７実施形態の一例としての並列計算機システムにおけるポート送信部の処理を説明するフローチャートである。
【図３４】並列計算機の構成例を示す図である。
【図３５】ノードＮ０及びノードＮ３がノードＮ４に対してデータを送信する例を示す図である。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照して本計算機システム，通信制御装置及び計算機システムの制御方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形（実施形態及び各変形例を組み合わせる等）して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
（Ａ）第１実施形態
図１は第１実施形態の一例としての並列計算機システム１の機能構成を模式的に示す図、図２はその構成を模式的に示す図である。【００１８】
並列計算機システム１は、図２に示すように、複数（図２に示す例では５個）の計算ノード２００を、１以上（図２に示す例では５個）のルーティング装置（通信制御装置）１００を介して相互に通信可能に接続した相互結合網により構成されている。
すなわち、５つの計算ノード２００−０〜２００−４を、５つのスイッチ１００−０〜１００−４を介して相互に通信可能に接続した相互結合網により構成されている。【００１９】
図２に示す例においては、ルーティング装置１００−０〜１００−４を１次元の直線状に配置した１次元メッシュとしてネットワーク２が形成され、各ルーティング装置１００−０〜１００−４に計算ノード２００−０〜２００−４がそれぞれ接続されている。すなわち、ルーティング装置１００−０，１００−１，１００−２，１００−３，１００−４に、計算ノード２００−０，２００−１，２００−２，２００−３，２００−４がそれぞれ接続されている。【００２０】
なお、本実施形態において、並列計算機システム１に備えられる複数の計算ノード２００−０〜２００−４は互いに同様の構成を備えており、又、複数のルーティング装置１００−０〜１００−４も互いに同様の構成を備えている。
以下、ルーティング装置を示す符号としては、複数のルーティング装置のうち１つを特定する必要があるときには符号１００−０〜１００−４を用いるが、任意のルーティング装置を指すときには符号１００を用いる。同様に、以下、計算ノードを示す符号としては、複数の計算ノードのうち１つを特定する必要があるときには符号２００−０〜２００−４を用いるが、任意の計算ノードを指すときには符号２００を用いる。【００２１】
各計算ノード２００はルーティング装置１００を介して相互に通信可能に接続される。以下、ノード２００とルーティング装置１００とを含むネットワークの一部または全部を、単に、ネットワーク２という場合がある。又、図２中においては、便宜上、スイッチ１００の一部の構成についてのみ図示している。
計算ノード２００は、任意の演算処理を行なう演算装置等の情報処理装置である。計算ノード２００は、一般的な情報処理装置に備わる構成要素、例えば、プロセッサや主記憶装置等を備える。【００２２】
計算ノード２００は、ネットワークインタフェース２０３を介してルーティング装置１００と通信可能に接続されている。これにより、本並列計算機システム１内の任意の計算ノード２００間でデータを送受信することができる。すなわち、本並列計算機システム１においては、いずれの計算ノード２００も、データの送信元としても、又、送信先としても機能し得る。【００２３】
ここで、ノード間通信において通信を要求する側のノードをローカルノードといい、ノード間通信において、ローカルノードからの通信要求を受け付ける側のノードをリモートノードという。
以下、データの送信元の計算ノード２００をローカルノードといい、データの送信先の計算ノード２００をリモートノードという場合がある。【００２４】
そして、送信元ノードとしての計算ノード２００は、図１に示すように、パケット送信部２１及びギャップ調整部２２としての機能を備える。
パケット送信部２１は、送信先の計算ノード２００に対してパケットを送信する。後述するパケット送信部２０６が、このパケット送信部２１として機能する。
ギャップ調整部（調整部）２２は、送信ノード数送信部２３から送信された送信ノード数に基づいて、送信するデータ間の間隔（ギャップ）を調整する。後述するギャップ制御部２０７が、このギャップ調整部２２として機能する。なお、ギャップとはパケットを送信しない区間の事である。【００２５】
また、送信先ノードとしての計算ノード２００は、図１に示すように送信ノード数送信部２３を備える。この送信ノード数送信部２３は、受信したパケットから読み出した送信ノード数を送信元の計算ノード２００に対して送信する。後述するパケット受信部２０８及びパケット送信部２０６が、この送信ノード数送信部２３として機能する。
図３は第１実施形態の一例としての並列計算機システム１の計算ノード２００の構成を模式的に示す図である。【００２６】
この図３に示すように、第１実施形態の計算ノード２００は、プロセッサ２０１，主記憶装置２０２及びネットワークインタフェース２０３を備える。
本並列計算機システム１においては、各計算ノード２００から送信されるデータはパケットに分割された状態で送受信される。又、このパケットのパケット長は適宜設定することができ、又、固定長もしくは可変長として適宜実施することができる。以下、本実施形態においては、パケットが固定長である例について説明する。【００２７】
プロセッサ２０１は、所定のプログラムに従って演算処理を行なう演算処理装置である。プロセッサ２０１は、ネットワークインタフェース２０３が受信するパケットを順次取得し、演算処理を行なう。また、プロセッサ２０１は、他の計算ノード２００へデータを送信する必要がある場合に、そのデータを分割して宛先アドレスを含むパケットを生成し、ネットワークインタフェース２０３を介して出力する。【００２８】
ノード間で通信を行なう際、ローカルノードのプロセッサ２０１は、ネットワークインタフェース２０３の制御部２０５にメッセージ送信指示を送る。メッセージ送信指示には、例えば、通信の種類などの情報が含まれる。
主記憶装置２０２は、種々のデータやプログラム等を記憶するメモリである。又、この主記憶装置２０２には、プロセッサ２０１が演算処理を行なう際に、このプロセッサ２０１が実行するプログラムやデータを一時的に格納・展開される。主記憶装置２０２には、プロセッサ２０１を介さずに、主記憶装置２０２が保持するデータをネットワークインタフェース２０３に転送するＤＭＡ（Direct Memory Access）転送を実現するＤＭＡ回路を含むことができる。【００２９】
ネットワークインタフェース２０３は、計算ノード２００がネットワーク２を介して他の計算ノード２００と通信を行なうためのインタフェースである。
ネットワークインタフェース２０３は、図３に示すように、ＤＭＡコントローラ２０４，制御部２０５，パケット送信部２０６，ギャップ制御部２０７及びパケット受信部２０８を備える。【００３０】
ＤＭＡコントローラ２０４は、後述する制御部２０５からＤＭＡを行なうデータのアドレスとデータ長とを通知されると、主記憶装置２０２に対して、制御部２０５が通知したアドレスとデータ長を指定してＤＭＡ要求を行なう。すると、主記憶装置２０２は、指定されたアドレスに格納されているデータを、指定されたデータ長だけＤＭＡコントローラ２０４にＤＭＡ転送する。ＤＭＡコントローラ２０４は、主記憶装置２０２からＤＭＡ転送されるデータをパケット送信部２０６に送信する。【００３１】
制御部２０５は、プロセッサ２０１からパケット送信指示を受けると、ＤＭＡコントローラ２０４やパケット送信部２０６，パケット受信部２０８等を制御して、パケットの送受信処理を行なう。パケットの送信処理を行なう場合には、制御部２０５は、ＤＭＡコントローラ２０４とパケット送信部２０６に、１つのパケットに含むデータのデータ長を指定することにより送信するデータを読み込む。本実施形態においては、計算ノード２００から送信するパケットの長さ（サイズ）は一定である。【００３２】
制御部２０５は、送信するデータを受け取ると、データにヘッダを付加したパケット（送信パケット）を作成し、この作成したパケットをパケット送信部２０６に送り、ネットワーク２に送信させる。
図４は第１実施形態の一例としての並列計算機システム１における送信パケットのフォーマットを模式的に例示する図である。又、図５はローカルノードアドレス及びリモートノードアドレスのフォーマットを例示する図、図６はルーティングヘッダのフォーマットを例示する図である。【００３３】
送信パケットは、例えば、図４に示すように、パケットタイプ，ルーティングヘッダ，ローカルノードアドレス，リモートノードアドレス，オフセット，送信ノード数及びペイロードをそれぞれ格納するフィールドを備える。パケットタイプは、当該パケットの種類を示す情報であり、例えば、Ｐｕｔリクエスト（Ｐｕｔ通信）に使用するパケットやＧｅｔリクエスト（Ｇｅｔ通信）に使用するパケットであることを示す。【００３４】
ここで、Ｐｕｔ通信とは、ローカルノードが自身とリモートノードの主記憶装置２０２の領域を指定して、ローカルノードの主記憶装置２０２のデータを、リモートノードの主記憶装置２０２の領域に書き込む通信を示す。
また、Ｇｅｔ通信とは、ローカルノードが自身とリモートノードの主記憶装置２０２の領域を指定して、リモートノードの主記憶装置２０２のデータを、ローカルノードの主記憶装置２０２の領域に書き込む通信を示す。【００３５】
ローカルノードアドレスは、当該パケットの送信ノード数元ノードのアドレス（ノードアドレス）を示す情報であり、リモートノードアドレスは、当該パケットの送信先ノードのアドレスを示す情報である。これらのノードアドレスは、例えば、各次元の座標値で表される。
本実施形態においては、ネットワーク２がＸとＹとからなる二次元のトーラスもしくはメッシュのトポロジを備えるものであり、ノードアドレスは、図５に示すように、Ｘ，Ｙの座標値で表される。【００３６】
ルーティングヘッダは、当該パケットの経路を指定する情報であり、例えば、ネットワーク２上における当該パケットの送信元ノード（ローカルノード）の位置を原点とした時のリモートノードの位置を表す座標値である。このルーティングヘッダは、例えば、各次元の座標値で表される。
本実施形態においては、前述の如く、ネットワーク２が次元Ｘと次元Ｙとからなる二次元のトーラスもしくはメッシュのトポロジを備えるものであり、ルーティングヘッダは、図６に示すように、ＤＸ，ＤＹの座標値で表される。【００３７】
そして、ルーティング装置１００は、このルーティングヘッダに格納された情報に基づいてパケットを送信するポートを決定する。
送信ノード数は、ネットワーク２における、パケットを送信中の計算ノード２００の数である。
この送信ノード数は、後述の如く、送信パケットがルーティング装置１００を通過する際に、このルーティング装置１００が保持する送信ノード数と比較され、送信パケット中の送信ノード数よりもルーティング装置１００に記憶された送信ノード数が大きい場合に、パケットの送信ノード数がルーティング装置１００の送信ノード数によって書き換えられる。すなわち、パケット内の送信ノード数は、ルーティング装置１００により転送される際に、このルーティング装置１００によって更新される。【００３８】
このように、パケットの送信ノード数は、当該パケットの通過経路上を通過しているパケットの送信元の計算ノード２００の数を表わす。そして、このパケット中の送信ノード数は、当該パケットが通過した各ルーティング装置１００に格納された送信ノード数の最大値と等しい。
ペイロードは、送信元ノードが送信先ノードに対して送信するメッセージ（データソース）を必要に応じて分割したデータである。オフセットは、ペイロードを格納する主記憶装置２０２のアドレスを指定する情報である。【００３９】
パケット受信部２０８は、他の計算ノード２００等からネットワーク２を介して送信されたパケットを受信し、そのペイロードをプロセッサ２０１に受け渡す等の受信処理を行なう。
また、パケット受信部２０８は、当該計算ノード２００が送信パケットを受信した状態、すなわち、当該計算ノード２００が送信先ノードである状態では、受信したパケットから送信ノード数を読み出して、パケット送信部２０６に受け渡す。又、パケット受信部２０８は、当該計算ノード２００が送信パケットを送信した状態、すなわち、当該計算ノード２００が送信元ノードである状態では、送信先ノードから送信される応答パケット（後述）を受信し、この応答パケットに含まれる送信ノード数を読み出してギャップ制御部２０７に受け渡す。【００４０】
パケット送信部２０６は、当該計算ノード２００が送信元ノードである状態では、制御部２０５によって作成されたパケットを宛先の計算ノード２００に送信する。
また、パケット送信部２０６は、当該計算ノード２００が送信先ノードである状態では、受信したパケットの送信元の計算ノード２００に対して、応答パケットを作成して送信する。【００４１】
図７は第１実施形態の一例としての並列計算機システム１における応答パケットのフォーマットを模式的に例示する図である。
この応答パケットは、例えば、図７に示すように、パケットタイプ，ルーティングヘッダ，ローカルアドレス，リモートアドレス及び送信ノード数を格納するフィールド備える。この応答パケットに格納される各情報は、図４を用いて説明した送信パケットに含まれる各情報と同様であるので、その詳細な説明は省略する。【００４２】
なお、この応答パケットに格納される送信ノード数は、パケット受信部２０８が受信したパケット（送信パケット）から読み出した値が用いられる。
ギャップ制御部２０７は、応答パケットから読み出された送信ノード数に基づいて、パケット送信部２０６から送信する複数のパケット間の送信間隔（ギャップ長）を決定する。具体的には、ギャップ制御部２０７は、以下の式（１）に基づいてパケット間に挿入するギャップ長を決定する。【００４３】
ギャップ長＝パケットサイズ×（送信ノード数−１）  ・・・（１）
ギャップ制御部２０７は、パケット送信部２０６から連続して送信されるパケットの間に、上述の如く決定した長さのギャップを挿入する。具体的には、例えば、パケット送信部２０６から送信するパケットの出力タイミングを、算出したギャップ長分だけ遅らせることにより、上述の如く算出した長さのギャップをパケット送信部２０６から出力するパケット間に挿入する。なお、パケット長が可変の場合には、例えば、予め設定した基準長をパケットサイズとして用いることが考えられ、適宜、変形して実施することができる。【００４４】
ルーティング装置１００は、計算ノード２００や他のルーティング装置１００と通信可能に接続され、受信したパケット（データ）を所定の宛先に転送する通信制御装置（中継装置）である。ルーティング装置１００としては、例えば、スイッチが用いられる。以下、ルーティング装置１００をスイッチ１００とも表す。
図８は第１実施形態の一例としての並列計算機システム１のスイッチ１００の構成を模式的に示す図である。この図８に例示するスイッチ１００は、１次元メッシュのネットワークに用いられる３ポートのスイッチ１００であり、ネットワークポート１０１−１，１０１−２及びノードポート１１０を備える。【００４５】
そして、このスイッチ１００は、図１に示すように、入力部１１，出力部１２，比較部１３，書換処理部１４，更新処理部１５及び送信ノード数記憶部１６としての機能を備える。
ネットワークポート１０１−１，１０１−２は、ネットワーク２の他のスイッチ１００とのパケットの授受を行なう。これらのネットワークポート１０１−１，１０１−２は互いに同様の構成を備えている。以下、ネットワークポートを示す符号としては、複数のネットワークポートのうち１つを特定する必要があるときには符号１０１−１，１０１−２を用いるが、任意のネットワークポートを指すときには符号１０１を用いる。【００４６】
ネットワークポート１０１は、図８に示すように、ポート送信部１０２及びポート受信部１０６を備える。
ポート受信部１０６は、ネットワーク２を介して接続された他のスイッチ１００から送信されたパケットの受信を行なう。すなわち、このポート受信部１０６が、転送されるパケットが入力される入力部１１に相当する。【００４７】
このポート受信部１０６は、バッファ１０７及び受信制御部１０８を備える。バッファ１０７は、接続された他のスイッチ１００から送信されたパケットを格納するＦＩＦＯ（First In, First Out）型のメモリである。
受信制御部１０８は、他のスイッチ１００からのパケットを受信し、バッファ１０７に格納する制御を行なう。又、受信制御部１０８は、バッファ１０７に格納されたパケットを、当該パケットの送信先に対応するネットワークポート１０１やノードポート１１０に対して送出する制御も行なう。【００４８】
この受信制御部１０８は、他のスイッチ１００から送信される送信要求に対して、バッファ１０７にパケットを格納可能な状態になると送信許可を返信する。そして、他のスイッチ１００から送信されるパケットを受信しバッファ１０７に格納する。
受信制御部１０８は、受信したパケットのルーティングヘッダやリモートアドレスを参照して転送先のネットワークポート１０１や計算ノード２００を決定する。そして、決定した、ネットワークポート１０１のポート送信部１０２の送信制御部１０４やノードポート１１０のポート送信部１１１の送信制御部１１３に対して送信要求を送出する。受信制御部１０８は、これらの送信制御部１０４や送信制御部１１３から送信許可を受信すると、バッファ１０７に格納されているパケットを、ネットワークポート１０１のポート送信部１０２やノードポート１１０のポート送信部１１１に対して送出する。【００４９】
ポート送信部１０２は、ネットワーク２を介して接続された他のスイッチ１００に対してパケットの送信を行なう。
すなわち、このポート送信部１０２が、転送するパケットを出力する出力部１２に相当する。このポート送信部１０２は、バッファ１０３，送信制御部１０４及び送信ノード数記憶部１０５を備える。バッファ１０３は、接続された他のスイッチ１００に送出するパケットを格納するＦＩＦＯ型のメモリである。【００５０】
送信制御部１０４は、バッファ１０３に格納されたパケットを、他のスイッチ１００に対して送出する制御を行なう。
この送信制御部１０４は、他のポート送信部１０２のポート受信部１０６から他のスイッチ１００へ送信するパケット及び送信要求を受信し、この送信要求に従って、他のスイッチ１００に対してパケットを送信する。送信制御部１０４は、他のスイッチ１００に対してパケットを送信するに際して、そのスイッチ１００に対して送信要求を送出し、このスイッチ１００から送信許可を受信すると、バッファ１０３に格納されているパケットを送出する。又、送信制御部１０４は、他のネットワークポート１０１のポート受信部１０６から送信要求を受信し、バッファ１０３にパケットを格納可能な状態となると、そのポート受信部１０６の受信制御部１０８に対して送信許可を送信する。【００５１】
また、送信制御部１０４は、バッファ１０３に格納したパケットからリモートノードアドレス（送信ノードアドレス）と送信ノード数とを抽出し、これらの情報に基づいて送信ノード数記憶部１０５の送信状態情報の更新を行なう。なお、この送信制御部１０４による送信状態情報の更新手法の詳細は後述する。
送信ノード数記憶部１０５は、当該スイッチ１００を通過するパケットに基づき、当該スイッチ１００を通過するパケットに関する、送信元ノードの状態を表す情報である送信状態情報を管理する。この送信ノード数記憶部１０５は、例えばメモリ等の記憶部である。【００５２】
図９は第１実施形態の一例としての並列計算機システム１における送信ノード数記憶部１０５の機能構成を模式的に示す図である。
送信ノード数記憶部１０５は、図９に示すように、カウンタ１２１及び送信ノード情報記憶部１２２を備える。
送信ノード情報記憶部１２２は、図９に示すように、ノードアドレス等の計算ノード２００を特定する情報と、その計算ノード２００がパケットを送信中であるか否かを表す情報とを対応付けた送信ノード状態情報（送信ノード情報，送信状態情報）を記憶する記憶部である。計算ノード２００がパケットを送信中であるか否かを表す情報としては、例えば、“送信中”もしくは“無送信”のいずれかを示す情報が格納される。又、この送信ノード情報記憶部１２２は、例えば、メモリ等の記憶回路によって実現される。【００５３】
そして、ネットワークポート１０１において、ポート送信部１０２の送信制御部１０４が、パケットを他のスイッチ１００に送信する際に、送信ノード情報記憶部１２２において、そのパケットの送信先ノードに対応付けて“送信中”と設定する。
なお、並列計算機システム１においては予めネットワーク２の構成が明らかになっている。従って、送信ノード情報記憶部１２２には、当該スイッチ１００を通過するパケットの送信元ノードとなりうる計算ノード２００を予め設定することができる。【００５４】
カウンタ１２１は、ネットワーク２において、当該スイッチ１００を経由するパケットを送信中の計算ノード２００の数（送信ノード数；送信状態情報）を計数するカウンタである。このカウンタ１２１は送信制御部１０４からのカウントアップ指示やカウントダウン指示に従って、そのカウント値のカウントアップやカウントダウンを行なう。具体的には、送信制御部１０４から送信されるカウントアップ信号やカウントダウン信号に従って、カウント値のカウントアップやカウントダウンを行なう。【００５５】
例えば、送信制御部１０４は、パケットを他のスイッチ１００に送信する際に、カウンタ１２１に対してカウントアップを指示するカウントアップ信号を送信することにより、カウンタ１２１にカウントアップを行なわせる。
また、本第１実施形態においては、送信制御部１０４は、送信ノード数記憶部１０５に送信元ノードについての送信ノード状態情報を格納してからの経過時間を図示しないタイマ等を用いて測定する。そして、送信制御部１０４は、例えば、その送信元ノードから予め設定された所定時間パケットが送信されないことを検知すると、送信ノード情報記憶部１２２において、当該送信元ノードに対して“無送信”を設定する。又、カウンタ１２１が備えられている場合には、送信制御部１０４は、これと同時に、カウンタ１２１に対してカウントダウンを指示するカウントダウン信号を送信して、送信ノード数をカウントダウンさせる。【００５６】
すなわち、送信制御部１０４は、出力部からデータを出力するに際して、送信ノード数記憶部１０５における、カウンタ１２１の送信ノード数や送信ノード情報記憶部１２２の情報を更新する更新処理部１５として機能する。
なお、カウンタ１２１の値は、送信ノード情報記憶部１２２に“送信中”と記憶されている送信元ノードの数と等しい。従って、この送信ノード情報記憶部１２２に“送信中”と記憶されている送信元ノードの数を計数することにより、送信ノード数記憶部１０５においてカウンタ１２１を省略することができる。【００５７】
図１０は第１実施形態の一例としての並列計算機システム１における送信ノード数記憶部１０５の変形例を示す図である。この図１０に示す第１実施形態の一例としての並列計算機システム１の送信ノード数記憶部１０５は、第１実施形態の送信ノード数記憶部１０５からカウンタ１２１を除くものであり、送信ノード情報記憶部１２２のみを備える。
この変形例としての送信ノード数記憶部１０５を備えるスイッチ１００においては、例えば送信制御部１０４において、送信ノード数記憶部１０５に“送信中”と記憶されている送信元ノードの数を計数することにより送信ノード数を求める。これにより、送信ノード数記憶部１０５においてカウンタ１２１の実装を省略して装置構成を簡略化し、製造コストを低減することができる。【００５８】
そして、ノード数記憶部１０５は、ネットワーク２においてそのスイッチ１００を経由するデータを送信中の計算ノード２００の数を表す送信ノード数を記憶する送信ノード数記憶部１６に相当する。
また、送信制御部１０４は、図１に示すように、比較部１３及び書換処理部１４としての機能を備える。【００５９】
比較部１３は、ネットワークポート１０１のポート送信部１０２において、送信するパケットの送信ノード数と、送信ノード数記憶部１０５のカウンタ１２１のカウンタ値とを比較する。
書換処理部１４は、比較部１３による比較の結果、カウンタ１２１のカウンタ値が送信するパケットの送信ノード数よりも大きければ、パケットの送信ノード数をカウンタ１２１のカウンタ値で書き換える。【００６０】
なお、図１０に示すように、送信ノード数記憶部１０５がカウンタ１２１を備えない場合には、比較部１３は、カウンタ１２１のカウンタ値に代えて、送信ノード情報記憶部１２２において“送信中”の送信ノードの数を計数した値を用いる。
ノードポート１１０は、計算ノード２００と通信可能に接続され、この接続された計算ノード２００とのパケットの授受を行なう。【００６１】
ノードポート１１０は、図８に示すように、ポート送信部１１１及びポート受信部１１４を備える。ポート送信部１１１は、接続された計算ノード２００のネットワークインタフェース２０３に対して、当該スイッチ１００においてネットワークポート１０１が受信したパケットを送信する。
ポート送信部１１１は、接続された計算ノード２００のネットワークインタフェース２０３にパケットを送信する。すなわち、このポート送信部１１１は、転送するパケットを出力する出力部１２に相当する。【００６２】
このポート送信部１１１は、バッファ１１２及び送信制御部１１３を備える。バッファ１１２は、接続された計算ノード２００のネットワークインタフェース２０３に送出するパケットを格納するＦＩＦＯ型のメモリである。送信制御部１１３は、バッファ１１２に格納されたパケットを計算ノード２００に対して送出する制御を行なう。
この送信制御部１１３は、ネットワークポート１０１から送信要求及びパケットを受信し、この送信要求に従って計算ノード２００に対してパケットを送信する。送信制御部１１３は、計算ノード２００にパケットを送信するに際して、そのネットワークインタフェース２０３に対して送信要求を送出する。そして、ネットワークインタフェース２０３から送信許可が応答されると、バッファ１１２に格納されているパケットをそのネットワークインタフェース２０３に対して送出する。又、送信制御部１１３は、バッファ１１２に新たなパケットを格納可能な状態となると、ネットワークポート１０１に対して送信許可を送信する。【００６３】
ポート受信部１１４は、計算ノード２００のネットワークインタフェース２０３から送信されるパケットを受信する。すなわち、このポート受信部１１４も、転送されるパケットが入力される入力部１１に相当する。
ポート受信部１１４は、バッファ１１５及び受信制御部１１６を備える。バッファ１１５は、接続された計算ノード２００のネットワークインタフェース２０３から受信したパケットを格納するＦＩＦＯ型のメモリである。受信制御部１１６は、ネットワークインタフェース２０３から送信されるパケットを受信し、バッファ１１５に格納する制御を行なう。又、受信制御部１１６は、バッファ１１５に格納されたパケットを、当該パケットの送信先に対応するネットワークポート１０１に送出する制御も行なう。【００６４】
この受信制御部１１６は、計算ノード２００のネットワークインタフェース２０３から送信される送信要求に対して、バッファ１１５にパケットを格納可能な状態になると送信許可を返信する。そして、受信制御部１１６は、ネットワークインタフェース２０３から送信されるパケットを受信しバッファ１１５に格納する。
受信制御部１１６は、受信したパケットのルーティングヘッダやリモートアドレスを参照して転送先のネットワークポート１０１を決定し、そのネットワークポート１０１のポート送信部１０２の送信制御部１０４に対して送信要求を送出する。受信制御部１１６は、ネットワークポート１０１から送信許可を受信すると、バッファ１１５に格納されているパケットをネットワークポート１０１のポート送信部１０２に対して送出する。【００６５】
上述の如く構成された、第１実施形態の一例としての並列計算機システム１におけるパケットの通信手法の概要を、図１１Ａ，図１１Ｂ及び図１１Ｃを用いて説明する。
これらの図１１Ａ，１１Ｂ，１１Ｃに示す並列計算機システム１は、図２に示したものと同様の構成を備え、５つの計算ノード２００−０〜２００−４を、５つのスイッチ１００−０〜１００−４を介して相互に通信可能に接続したネットワーク（相互結合網，通信網）２を構成する。なお、以下、５つの計算ノード２００−０〜２００−４を、ノードＮ０〜Ｎ４で表す場合がある。又、以下、計算ノード２００を特定する符号Ｎ０〜Ｎ４をノード識別情報という場合がある。【００６６】
また、図１１Ａ，１１Ｂ，１１Ｃ中においては、便宜上、スイッチ１００の一部の構成についてのみ図示する。
上述の如く、本並列計算機システム１においてスイッチ１００は、ネットワークポート１０１のポート送信部１０２からパケットを送信すると、送信ノード数記憶部１０５の送信ノード情報記憶部１２２に送信ノードアドレスを記憶する。【００６７】
図１１Ａ，１１Ｂ，１１Ｃにおいては、ノードＮ０とノードＮ３とがノードＮ４に対してパケットを送信する例を示す。
かかる状態においては、図１１Ａに示すように、スイッチ１００−０〜１００−２のネットワークポート１０１の送信ノード情報記憶部１２２に、送信元ノードであるノードＮ０について“送信中”である旨が記憶される。又、スイッチ１００−３，１００−４のネットワークポート１０１の送信ノード情報記憶部１２２に、送信元ノードであるノードＮ０，Ｎ３について“送信中”である旨が記憶される。【００６８】
なお、図１１Ａ，１１Ｂ，１１Ｃ中においては、便宜上、送信ノード情報記憶部１２２に、“送信中”である計算ノード２００のノード識別情報のみを示す。
また、送信元ノードから送信されたパケットの送信ノード数は、各スイッチ１００を通過する際に送信制御部１０４によって更新される。これにより、パケットの送信ノード数には、通過したスイッチ１００の中での送信ノード数の最大値が記憶される。図１１Ａに示す例において、ノードＮ４に送達されるパケットには、そのネットワーク２中での送信ノード数“２”が格納される。【００６９】
パケットを受信した計算ノード２００は、受信したパケットから抽出した送信ノード数を格納した応答パケットを、そのパケットの送信元の計算ノード２００に送り返す。図１１Ｂに示す例においては、ノードＮ４は、送信ノード数“２”を格納した応答パケットをノードＮ０とノードＮ３とに送り返す。
この応答パケットを受信したノードＮ０，Ｎ３は、ギャップ制御部２０７が、送信する複数のパケットの間隔を、前記式（１）に基づいて算出し、パケット送信部２０６は、連続して送信する複数のパケットの間に、この算出した長さ（ギャップ長）のギャップを挿入する。【００７０】
図１１Ｃに示す例においては、送信ノード数“２”であるので、パケット間に挿入するギャップ長＝パケットサイズとなる。ノードＮ０とノードＮ３とは、パケットの送信に使用できる通信帯域（使用帯域）が１／２になるため、パケット間にパケットと同じ長さのギャップを挿入することにより、ネットワーク２の通信帯域を効率良く用いることができる。すなわち、輻輳の発生を防止できるとともに、各送信元ノード間で通信帯域を均等に使用することができる。【００７１】
並列計算機システム１においては、以降も上記の処理を繰り返すことで、各送信元ノード２００は、送信ノード数の増減に応じて、送信するパケット間に挿入するギャップ長を動的に調整する。例えば、ノードＮ２がノードＮ４に対してパケットを送信する場合には、このパケットが通過するスイッチ１００−２〜１００−４の各ポートの送信ノード情報記憶部１２２には、送信元ノードとしてノードＮ２が“送信中”として追加される。【００７２】
また、パケットに格納される送信ノード数は“３”となる。送信元ノードであるノードＮ０，Ｎ２，Ｎ３はそれぞれ、通信帯域を均等に使うように、上記式（１）に基づき、パケット間にパケットの２倍の長さのギャップを挿入する。
次に、上述の如く構成された、第１実施形態の一例としての並列計算機システム１におけるスイッチ１００のポート受信部１０６の処理を、図１２に示すフローチャート（ステップＡ１０〜Ａ６０）に従って説明する。【００７３】
本例においては、図１１Ａ〜１１Ｃに示すように、ネットワーク２は２次元メッシュ構成を備え、ルーティングはＸ，Ｙの順に座標を合わせる次元順ルーティングを行なう。
スイッチ１００において、ネットワークポート１０１のポート受信部１０６は、他のスイッチ１００からパケットを受信する（ステップＡ１０）。ポート受信部１０６は、パケットを受信したネットワークポート１０１に基づいて、パケットのルーティングヘッダを更新する。すなわち、受信したネットワークポート１０１の次元に応じて、ルーティングヘッダの値（ＤＸ，ＤＹ）を＋１もしくは−１することにより更新する。【００７４】
具体的には、例えば、ネットワーク２の構成を座標空間に対応させるとともに、仮想的な原点を定める。そして、原点に対するスイッチ１００のネットワークポート１０１の位置（座標）について、座標の増加方向を“＋”、又、減少方向を“−”とする。
そして、受信制御部１０８は、パケットのルーティングヘッダに対して、受信したネットワークポート１０１と同じ次元のＤＸもしくはＤＹの値に対して、−方向なら−１、＋方向なら＋１する（ステップＡ２０）。例えば、ネットワークポート１０１がＸ次元で−方向の時には、ＤＸの値を−１する。又、ネットワークポート１０１がＹ次元で＋方向の時には、ＤＹを＋１する。【００７５】
受信制御部１０８は、ルーティングヘッダの値ＤＸ，ＤＹの値が全て０であるか否かを確認する（ステップＡ３０）。ＤＸ，ＤＹがいずれも０の場合には（ステップＡ３０のＹＥＳルート参照）、パケットが宛先のリモートノードが直結されたスイッチ１００に届いたことを意味する。従って、受信制御部１０８は、パケットを、ネットワークインタフェース２０３に接続されている、当該スイッチ１００のノードポート１１０を選択する（ステップＡ４０）。【００７６】
一方、ＤＸ，ＤＹの少なくともいずれかが０ではない（非０）場合には（ステップＡ３０のＮＯルート参照）、例えば、Ｘ座標、Ｙ座標の順で非０のフィールドを調べ、この非０のフィールドの値が０に近付くネットワークポート１０１を選択する（ステップＡ６０）。すなわち、当該フィールドと同じ次元、同じ符号のポートを選ぶ。なお、Ｙ座標，Ｘ座標の順で次元順ルーティングを行なう場合には、Ｙ座標、Ｘ座標の順で非０のフィールドを調べる。【００７７】
そして、受信制御部１０８は、選択したノードポート１１０もしくはネットワークポート１０１の送信制御部１１３，１０４に送信要求を送信する。送信制御部１１３，１０４から送信許可が返信されると、受信制御部１０８は、そのノードポート１１０もしくはネットワークポート１０１にパケットを送信する（ステップＡ５０）。
また、パケットを受信したネットワークポート１０１のポート送信部１０２の送信制御部１０４は、パケットを他のスイッチ１００に送信する際、送信ノード数記憶部１０５の更新を行なう。すなわち、送信ノード情報記憶部１２２にその送信ノードに対して“送信中”を記憶し、又、カウンタ１２１の送信ノード数のカウントアップを行なう。【００７８】
次に、第１実施形態の一例としての並列計算機システム１におけるポート送信部１０２の処理を、図１３に示すフローチャート（ステップＢ１０〜Ｂ７０）に従って説明する。
ポート送信部１０２は、ポート受信部１１４やポート受信部１０６から転送するパケットを受信すると、受信したパケットをバッファ１０３に格納する（ステップＢ１０）。
送信制御部１０４は、パケットのローカルノードに基づいて送信ノード情報記憶部１２２を確認する（ステップＢ２０）。すなわち、送信ノード情報記憶部１２２において、当該ローカルノードが“送信中”となっているか否かを確認する。【００７９】
送信ノード情報記憶部１２２において、当該ローカルノードが“送信中”となっていれば（ステップＢ２０のＹＥＳルート参照）、送信制御部１０４（比較部１３）は、送信ノード数記憶部１０５で管理する送信ノード数とパケットに格納されている送信ノード数とを比較する（ステップＢ３０）。
ここで、送信ノード数記憶部１０５がカウンタ１２１を備えている場合（図９参照）には、このカウンタの値が送信ノード数として用いられる。又、送信ノード数記憶部１０５がカウンタ１２１を備えていない場合（図１０参照）には、送信ノード数は、送信ノード情報記憶部１２２において“送信中”と記憶されているノードを数えることで求められる。【００８０】
一方、送信ノード情報記憶部１２２において、当該ローカルノードが“無送信”となっていれば（ステップＢ２０のＮＯルート参照）、送信制御部１０４は、送信ノード情報記憶部１２２における当該ローカルノードに対応付けて“送信中”を設定する。又、送信制御部１０４は、カウンタ１２１に対してカウントアップ信号を送信することにより、送信ノード数をカウントアップ（＋１）する（ステップＢ７０）。その後、ステップＢ３０に移行する。【００８１】
送信ノード数記憶部１０５で管理する送信ノード数がパケットの送信ノード数以下の場合には（ステップＢ３０のＮＯルート参照）、送信制御部１０４は、接続されている他のスイッチ１００のネットワークポート１０１に対して送信要求を送信する。そして、このネットワークポート１０１から送信許可が応答されると、送信制御部１０４は、該当ネットワークポート１０１に対してパケットを送信する（ステップＢ５０）。【００８２】
また、送信ノード数記憶部１０５で管理する送信ノード数がパケットの送信ノード数より大きければ（ステップＢ３０のＹＥＳルート参照）、送信制御部１０４（書換処理部１４）は、パケットの送信ノード数の値を、送信ノード数記憶部１０５の送信ノード数で書き換える（ステップＢ４０）。その後、ステップＢ５０に移行する。
送信制御部１０４は、送信ノード情報記憶部１２２において送信元ノードに対して“送信中”を設定してからの経過時間を測定する。そして、送信ノードに対して“送信中”を設定してから、予め設定した時間の間、同じノードからパケットが来なければ、送信ノード情報記憶部１２２における当該送信元ノードに対して“無送信”を設定する。又、送信ノード数記憶部１０５がカウンタ１２１を備えている場合（図９参照）には、送信制御部１０４は、カウンタ１２１に対してカウントダウン信号を送信することにより、送信ノード数をカウントダウン（−１）する（ステップＢ６０）。なお、送信ノード数記憶部１０５がカウンタ１２１を備えていない場合（図１０参照）には、送信制御部１０４はカウントダウン信号の送信は行なわない。【００８３】
このように、第１実施形態の一例としての並列計算機システム１によれば、送信元ノードから送信先ノードへの経路上を通過するパケットを送信している送信元ノードの数（送信ノード数）を、当該経路上のスイッチ１００が送信ノード数記憶部１０５に記憶する。そして、送信元ノードが、この送信ノード数に基づいて、連続して送信するパケット間の送信間隔を算出する。【００８４】
具体的には、“パケットサイズ×（送信ノード数−１）”として算出される長さ（ギャップ長）のギャップをパケット間に挿入する。
このギャップ長は、通信経路上にパケットを送出している送信元ノードの数に基づいて算出されるものであり、複数の送信元ノードが通信経路上にパケットを送出することにより、これらのパケットが重なり合う（重合する）ことにより生じる通信帯域の減少量に対応するものである。従って、この送信ノード数に基づいてギャップ長を設定することにより、パケットを送信中の各送信元ノードが通信帯域を均等に使用することができる。【００８５】
本並列計算機システム１によれば、送信元ノードが、通信経路上におけるパケットの通信状態に合わせた間隔でパケットを送信することができ、これにより、輻輳が解消することができる。すなわち、通信経路上の通信状態に合わせた輻輳制御を効率よく実現することができ、並列計算機システム１におけるネットワーク２を効率よく使用することができる。【００８６】
図１４は第１実施形態の一例としての並列計算機システム１におけるパケットの送信状態を例示する図である。この図１４に示す例においては、ノードＮ０及びノードＮ３がノードＮ４に対してデータを送信している。
本第１実施形態の並列計算機システム１においては、この図１４に示すように、送信元ノードがパケットを送信する際に、複数の送信元ノードからパケットが送信されることにより減少する通信帯域に応じた長さのギャップを、予めパケット間に挿入する。【００８７】
この図１４に示す例では、ノードＮ０から送信されたパケットとノードＮ３から送信されたパケットが、スイッチ１００−３からノードＮ４までの経路上において重なる。この重なり部分で、ノードＮ０及びノードＮ３が使用できる通信帯域が１／２に減少する。
ここで、パケットの送信元ノードであるノードＮ０，Ｎ３が、連続して送信するパケットの間にパケットと同じ長さ（ギャップ長）のギャップを挿入することで、これらのノードＮ０，Ｎ３が使用する通信帯域をそれぞれ１／２にする。これにより、スイッチ１００−３からノードＮ４までの重なり部分で通信帯域が減少せず、バッファ詰まりが発生しない。すなわち、輻輳の発生が阻止され、ノードＮ１，Ｎ２の通信はバッファの詰まりの影響を受けない。【００８８】
また、本並列計算機システム１においては、パケットに送信ノード数を格納することにより、各スイッチ１００が容易にネットワーク２上における送信ノード数を把握することができる。
スイッチ１００において、送信ノード数において送信ノード数を管理し、ポート送信部１０２からパケットを送信するに際して、そのパケットのローカルノードの情報（送信中）を送信ノード数記憶部１０５（送信ノード情報記憶部１２２）に記憶する。これにより、スイッチ１００において、パケットを送信中の送信元ノードをリアルタイムに把握することができる。【００８９】
スイッチ１００において、送信ノード数記憶部１０５にカウンタ１２１を備え、このカウンタ１２１により送信ノード数を計数することにより、スイッチ１００において、パケットを送信中の送信元ノードの数をリアルタイムに把握することができる。
また、送信ノード数記憶部１０５に送信元ノードについての送信ノード状態情報を格納してから所定時間パケットが送信されない場合に、カウンタ１２１の送信ノード数をカウントダウンする。これにより、送信ノード数の値が適正に管理され、信頼性を向上させることができる。【００９０】
スイッチ１００において、ポート送信部１０２からパケットを送信するに際して、送信ノード数記憶部１０５（カウンタ１２１）で管理する送信ノード数と、パケットに記憶されている送信ノード数とを比較する。そして、送信ノード数記憶部１０５の送信ノード数がパケットの送信ノード数よりも大きい場合に、送信ノード数記憶部１０５の送信ノード数でパケットの送信ノード数を書き換える。これにより、各スイッチ１００において管理する送信ノード数の値をパケットに反映させることができる。【００９１】
また、送信先ノードが、受信したパケットから送信ノード数を抽出して、応答パケットを作成して送信元ノードに送信する。これにより、送信元ノードが送信ノード数を容易に把握することができ、この応答パケットから読み出した送信ノード数を用いて、上記式（１）によりギャップ長を算出することができる。
（Ｂ）第１実施形態の変形例
上述した第１実施形態においては、Ｐｕｔ通信等のローカルノードがリモートノードへメッセージを送信する例について説明したが、これに限定されるものではない。すなわち、本技術はＧｅｔ通信等のリモートノードがローカルノードにメッセージを送信する場合にも適用することができる。【００９２】
以下に、Ｇｅｔ通信等のリモートノードがローカルノードにメッセージを送信する場合の処理を説明する。
（１）ローカルノードがリモートノードへメッセージ送信を要求するＧｅｔリクエストパケットを送信する。
なお、このＧｅｔリクエストパケットのパケットフォーマットとしては、例えば、図４に示した送信パケットのフォーマットから送信ノード数及びペイロードを除いたものを用いることができる。【００９３】
（２）スイッチ１００において、ポート受信部１０６は、図１２に示したフローチャートと同様の手法でルーティングヘッダに基づく次元順ルーティングを行ない、リモートノードへパケットを送信する。又、ポート送信部１０２は、図１３に示すフローチャートのステップＢ１０，Ｂ５０と同様の処理でパケットの送信を行なう。なお、この時点では、ポート送信部１０２による、図１３のフローチャートのステップＢ２０〜Ｂ４０，Ｂ６０に示した、送信ノード数に基づく送信ノード数記憶部１０５の更新処理は行なわれない。【００９４】
（３）Ｇｅｔリクエストパケットを受信したリモートノードのネットワークインタフェース２０３は、要求されたデータを読み出し、Ｇｅｔレスポンスパケットをローカルノードに送り返す。
なお、このＧｅｔレスポンスパケットのパケットフォーマットとしては、例えば、図４に示した送信パケットのフォーマットと同様のものを用いることができる。【００９５】
（４）スイッチ１００において、ポート受信部１０６は、図１２に示したフローチャートと同様の処理で、ルーティングヘッダに基づく次元順ルーティングを行ない、ローカルノードへパケットを送信する。又、ポート送信部１０２は、図１３に示したフローチャートと同様の処理で、パケットの送信や送信ノード数に基づく送信ノード数記憶部１０５の更新処理等を行なう。【００９６】
（５）Ｇｅｔレスポンスパケットを受信したローカルノードのネットワークインタフェース２０３は、パケットのペイロードを主記憶装置２０２に記憶し、又、送信ノード数を記憶した応答パケットをリモートノードへ送り返す。
なお、この応答パケットのパケットフォーマットとしては、例えば、図７に示した応答パケットのフォーマットと同様である。【００９７】
（６）パケットを受信したリモートノードのネットワークインタフェース２０３は、前記式（１）により、ギャップ長を算出し、このギャップ長を有するギャップをＧｅｔレスポンスパケットの間に挿入して、ローカルノードに送信する。
（Ｃ）第２実施形態
上述した第１実施形態の一例としての並列計算機システム１においては、送信制御部１０４は、送信元ノードから予め設定された所定時間パケットが送信されないことを検知すると、送信ノード情報記憶部１２２において、当該送信元ノードに対して“無送信”を設定する。又、カウンタ１２１が備えられている場合には、送信制御部１０４は、これと同時に、カウンタ１２１に対してカウントダウン信号を送信して、送信ノード数をカウントダウンさせる。【００９８】
本第２実施形態の一例としての並列計算機システム１においては、ポート送信部１０２において、送信制御部１０４は、一つのメッセージを成す複数のパケットについて、その末尾のパケット（末尾パケット）を検知する。そして、送信制御部１０４は、この末尾パケットを送信する際に、送信ノード情報記憶部１２２において、当該送信元ノードに対して“無送信”を設定する。又、カウンタ１２１が備えられている場合には、送信制御部１０４は、これと同時に、カウンタ１２１に対してカウントダウン信号を送信して、送信ノード数をカウントダウンさせる。【００９９】
具体的には、送信元ノードにおいて、パケット送信部２０６が、メッセージのパケットを生成するに際して、メッセージの末尾のパケットに末尾である旨を表す情報（末尾フラグ）設定する。
図１５は第２実施形態の一例としての並列計算機システム１における送信パケットのフォーマットを模式的に例示する図である。本第２実施形態の一例としての並列計算機システム１の送信パケットフォーマットは、図４に示した第１実施形態の送信パケットフォーマットに加えて末尾フラグを備える。なお、送信パケットにおける、その他の部分は第１実施形態の送信パケットフォーマットと同様に構成されており、その説明は省略する。【０１００】
また、以下、図中、既述の符号と同一の符号は同様の部分を示しているので、その詳細な説明は省略する。
送信元ノードにおいて、ネットワークインタフェース２０３は、メッセージを複数のパケットに分割して送信する際に、末尾のパケットに対しては、その末尾フラグを有効にする。例えば、末尾フラグに“１”に設定する。又、末尾以外のパケットに対しては、それぞれ末尾フラグに“０”を設定する。これらの、末尾フラグの“１”が、当該パケット（分割データ）が末尾である事を示す末尾識別情報に相当する。【０１０１】
なお、この末尾フラグへの“０”又は“１”の設定は、例えば、制御部２０５が行なってもよく、又、パケット送信部２０６が行なってもよい。
本第２実施形態の一例としての並列計算機システム１の計算ノード２００は、上述の如く、ネットワークインタフェース２０３において、送信する各パケットに対して、末尾フラグとして“１”又は “０”を設定するが、その他の部分は第１実施形態の計算ノード２００と同様に構成されており、その説明は省略する。【０１０２】
スイッチ１００において、ポート送信部１０２の送信制御部１０４は、この末尾フラグに基づき、送信ノード数記憶部１０５の更新を行なう。すなわち、送信制御部１０４は、送信するパケットの末尾フラグを確認し、末尾フラグに“１”が設定されているパケットを送信する際に、送信ノード情報記憶部１２２において、その送信元ノードに“無送信”を設定する。又、これと同時に、送信ノード数記憶部１０５にカウンタ１２１が備えられている場合には、送信制御部１０４はカウンタ１２１に対してカウントダウン信号を送信して、送信ノード数をカウントダウンさせる。【０１０３】
また、本第２実施形態においては、送信先ノードとしての計算ノード２００は、送信元ノードに送信する応答パケットにも末尾フラグを備える。具体的には、図７に示す第１実施形態の応答パケットフォーマットに加えて末尾フラグを備える。計算ノード２００は、受信したパケットから読み出した末尾フラグの値を、その応答パケットの末尾フラグに設定して返信する。【０１０４】
第２実施形態の一例としての並列計算機システム１におけるポート送信部１０２の処理を、図１６に示すフローチャート（ステップＣ１０〜Ｃ８０）に従って説明する。
ポート送信部１０２は、ポート受信部１１４やポート受信部１０６から転送するパケットを受信すると、受信したパケットをバッファ１０３に格納する（ステップＣ１０）。
送信制御部１０４は、パケットの末尾フラグを確認し、当該パケットが一のメッセージを構成する複数のパケットのうち末尾のパケットであるか否かを確認する（ステップＣ２０）。【０１０５】
この末尾フラグに“１”が設定されている場合、すなわち、当該パケットが末尾のパケットである場合には（ステップＣ２０のＹＥＳルート参照）、送信制御部１０４は、送信ノード情報記憶部１２２において、その送信元ノードに“無送信”を設定する。又、送信ノード数記憶部１０５にカウンタ１２１が備えられている場合には、送信制御部１０４はカウンタ１２１に対してカウントダウン信号を送信して、送信ノード数をカウントダウン（−１）させる（ステップＣ３０）。なお、カウンタ１２１を備えない場合には、このステップＣ３０の処理は省略することができる。【０１０６】
送信制御部１０４（比較部１３）は、送信ノード数記憶部１０５で管理する送信ノード数とパケットに格納されている送信ノード数とを比較する（ステップＣ４０）。なお、送信ノード数には、送信ノード数記憶部１０５がカウンタ１２１を備えている場合（図９参照）には、第１実施形態と同様に、このカウンタの値が用いられる。又、送信ノード数記憶部１０５がカウンタ１２１を備えていない場合（図１０参照）には、送信ノード数は、送信ノード情報記憶部１２２において“送信中”と記憶されているノードを数えることで求められる。【０１０７】
送信ノード数記憶部１０５で管理する送信ノード数がパケットの送信ノード数以下の場合には（ステップＣ４０のＮＯルート参照）、送信制御部１０４は、接続されている他のスイッチ１００のネットワークポート１０１に対して送信要求を送信する。そして、このネットワークポート１０１から送信許可が応答されると、送信制御部１０４は、該当ネットワークポート１０１に対してパケットを送信する（ステップＣ６０）。【０１０８】
また、送信ノード数記憶部１０５で管理する送信ノード数がパケットの送信ノード数より大きければ（ステップＣ４０のＹＥＳルート参照）、送信制御部１０４（書換処理部１４）は、パケットの送信ノード数の値を、送信ノード数記憶部１０５の送信ノード数で書き換える（ステップＣ５０）。その後、ステップＣ６０に移行する。
一方、末尾フラグに“０”が設定されている場合、すなわち、パケットが末尾のパケットでない場合には（ステップＣ２０のＮＯルート参照）、送信制御部１０４は、パケットのローカルノードに基づいて送信ノード情報記憶部１２２を確認する（ステップＣ７０）。【０１０９】
送信ノード情報記憶部１２２において、当該ローカルノードが“送信中”となっていれば（ステップＣ７０のＹＥＳルート参照）、ステップＣ４０に移行する。又、送信ノード情報記憶部１２２において、当該ローカルノードが“無送信”となっていれば（ステップＣ７０のＮＯルート参照）、送信制御部１０４は、送信ノード情報記憶部１２２における当該ローカルノードに対応付けて“送信中”を設定する。又、送信制御部１０４は、カウンタ１２１に対してカウントアップ信号を送信することにより、送信ノード数をカウントアップ（＋１）する（ステップＣ８０）。その後、ステップＣ４０に移行する。【０１１０】
このように、第２実施形態の一例としての並列計算機システム１によれば、上述した第１実施形態と同様の作用効果を得ることができる他、送信制御部１０４が末尾パケットであることを検知した場合に、送信ノード数記憶部１０５の更新を行なう。すなわち、末尾パケットを検知することにより、送信ノード情報記憶部１２２において当該送信元ノードへの“無送信”の設定や、カウンタ１２１のカウントダウンを行なう。【０１１１】
すなわち、第１実施形態のように、送信ノード数記憶部１０５に送信元ノードについての送信ノード状態情報を格納してから所定時間の経過を待つことなく、送信ノード情報記憶部１２２における当該送信元ノードへの“無送信”の設定や、カウンタ１２１のカウントダウンを行なうことができる。これにより、一のメッセージについての一群のパケットの送信の終了を迅速且つ正確に把握することができ、パケットの送信の終了に即座に対応することができる。【０１１２】
すなわち、送信元ノードにおいて、ギャップ調整部２２による、パケット間に挿入するギャップ値の算出に、通信経路上の通信状態を迅速に反映させることができ、正確性や信頼性を向上させることができる。
（Ｄ）第３実施形態
上述した各実施形態やその変形例の一例としての並列計算機システム１においては、送信制御部１０４は、送信する全てのパケットに基づいて送信ノード数記憶部１０５の更新を行なっている。【０１１３】
本第３実施形態の一例としての並列計算機システム１においては、ポート送信部１０２において、送信制御部１０４は、パケットのメッセージ長を予め設定された閾値と比較する。そして、メッセージ長が閾値よりも小さければ、そのパケットについての送信ノード数記憶部１０５の更新を行なわない。つまり、送信ノード情報記憶部１２２への“送信中”，“無送信”の設定やカウンタ１２１のカウントアップを行なわない。【０１１４】
すなわち、本第３実施形態においては、送信制御部１０４は、パケットのデータサイズが閾値よりも小さい場合には送信ノード数の更新を抑止する更新抑止部として機能する。
図１７は第３実施形態の一例としての並列計算機システム１における送信パケットのフォーマットを模式的に例示する図である。本第３実施形態の一例としての並列計算機システム１の送信パケットフォーマットは、図１５に示した第２実施形態の送信パケットフォーマットに加えてメッセージ長を備える。なお、送信パケットにおける、その他の部分は第２実施形態の送信パケットフォーマットと同様に構成されており、その説明は省略する。【０１１５】
送信元ノードにおいて、ネットワークインタフェース２０３は、メッセージをパケットに分割して送信する際に、各パケットにメッセージの全体のデータ長を示すメッセージ長を設定する。このメッセージ長は、例えば、メッセージ送信指示とともにプロセッサ２０１から送信される。
スイッチ１００において、ポート送信部１０２の送信制御部１０４は、このメッセージ長に基づき、送信ノード数記憶部１０５の更新を行なうか否かの判別を行なう。すなわち、送信制御部１０４は、パケットを送信する際に、送信するパケットのメッセージ長を予め設定された閾値と比較する。この比較の結果、メッセージ長が閾値よりも小さい場合には、当該パケットについて、送信ノード情報記憶部１２２送信ノード情報記憶部１２２への“無送信”や“送信中”の設定やカウンタ１２１の更新を行なわずに、当該パケットの転送を行なう。なお、スイッチ１００における、その他の部分は第２実施形態の送信パケットフォーマットと同様に構成されており、その説明は省略する。【０１１６】
第３実施形態の一例としての並列計算機システム１におけるポート送信部１０２の処理を、図１８に示すフローチャート（ステップＣ１０，Ｄ１１，Ｃ２０〜Ｃ８０）に従って説明する。なお、以下、図中、既述の符号と同一の符号を付したステップは、同様の処理を示しているので、その説明は省略する。
ポート送信部１０２は、ポート受信部１１４やポート受信部１０６から転送するパケットを受信すると、受信したパケットをバッファ１０３に格納する（ステップＣ１０）。【０１１７】
送信制御部１０４は、パケットのメッセージ長が予め設定された閾値よりも短いか否かを確認する（ステップＤ１１）。この確認の結果、パケットのメッセージ長が閾値よりも短い場合には（ステップＤ１１のＹＥＳルート参照）、ステップＣ６０に移行する。
また、パケットのメッセージ長が閾値以上の場合には（ステップＤ１１のＮＯルート参照）、ステップＣ２０に移行する。【０１１８】
このように、第３実施形態の一例としての並列計算機システム１によれば、上述した第２実施形態と同様の作用効果を得ることができる他、パケットのメッセージ長が予め設定された閾値よりも小さい場合には、カウンタ１２１のカウントアップや送信ノード情報記憶部１２２への登録を行なわない。
これにより、他ノードに送信ノード数の増加が通知される時には、既にメッセージの送信が完了しているような短いメッセージが、他の計算ノード２００において設定されるギャップ長に影響を与えることを防止する。すなわち、短いメッセージにより送信ノード数がカウントアップされ、送信元ノードにおいて送信されるパケット間のギャップが長くなることを防止する。これにより、メッセージの送信をいたずらに遅延させることを防止し、パケットの伝送効率を向上させる。【０１１９】
なお、上述した第３実施形態の一例としての並列計算機システム１においては、送信パケットフォーマットにメッセージ長を備えるとともに、スイッチ１００において、メッセージ長に基づき送信ノード数記憶部１０５の更新を行なうか否かの判別を行なう。そして、その他の部分は、第２実施形態の送信パケットフォーマットと同様に構成されている例について示しているが、これに限定されるものではない。すなわち、その他の部分として、第１実施形態もしくはその変形例と同様の構成を備えてもよい。【０１２０】
（Ｅ）第４実施形態
上述した各実施形態および変形例としての並列計算機システム１においては、計算ノード２００において、１つのパケット送信部２０６を備える例を示している。本第４実施形態においては、計算ノード２００が複数のパケット送信部２０６を備え、これらの複数のパケット送信部２０６からそれぞれメッセージのパケットを送信することにより、同時に複数のメッセージを送信できる。【０１２１】
図１９は第４実施形態の一例としての並列計算機システム１の計算ノード２００の構成を模式的に示す図である。
この図１９に示すように、本第４実施形態においては、計算ノード２００は複数のパケット送信部２０６を備える。又、各パケット送信部２０６は、パケットに対して、当該パケットに対応するメッセージを特定するメッセージ番号（メッセージ識別情報）を付加する機能を備える。【０１２２】
図２０は第４実施形態の一例としての並列計算機システム１における送信パケットのフォーマットを模式的に例示する図である。本第４実施形態の一例としての並列計算機システム１の送信パケットフォーマットは、図１５に示した第２実施形態の送信パケットフォーマットに加えてメッセージ番号を備える。
メッセージ番号は、送信元ノードである計算ノード２００が複数のメッセージを同時に送信する場合に、これらの同時に送信している複数のメッセージを識別できるように、ネットワークインタフェース２０３が番号付け送信する。【０１２３】
また、送信先ノードである計算ノード２００は、送信元ノードから送信されたパケットを受信すると、その送信元ノードに対して返信する応答パケットに、受信したパケットに付加されているメッセージ番号を付加して送信する。この応答パケットフォーマットとしては、例えば、図７に示した第１実施形態における応答パケットフォーマットに、メッセージ番号を付加したものを用いることができる。【０１２４】
なお、メッセージ番号の付け方は、例えば、０から開始し、メッセージ送信指示が来るたびにカウントアップ（＋１）する。又、送信元ノードにおいては、送信先ノードから、一のメッセージについての末尾のパケットに対応する応答パケットを受信すると、この応答パケットに付されているメッセージ番号を、次に送信するメッセージに対して、再び割り当てる。これにより、メッセージ番号を効率良く運用することができる。【０１２５】
なお、送信パケットにおける、メッセージ番号以外の部分は第２実施形態の送信パケットフォーマットと同様であり、その説明は省略する。
送信元ノードにおいて、ネットワークインタフェース２０３は、メッセージをパケットに分割して送信する際に、各パケットにそのメッセージを識別するメッセージ番号を設定する。【０１２６】
図２１は第４実施形態の一例としての並列計算機システム１における送信ノード数記憶部１０５の機能構成を模式的に示す図である。この送信ノード数記憶部１０５は、カウンタ１２１及び送信ノード情報記憶部１２２を備える。  
本第４実施形態の並列計算機システム１において、送信ノード情報記憶部１２２は、図２１に示すように、ノードアドレス等の送信元ノードを特定する情報とメッセージ番号との組み合わせに対して、当該組み合わせに相当するパケットが送信されているか否かを表す、“送信中”もしくは“無送信”のいずれかを示す情報が対応付けられる。【０１２７】
すなわち、本第４実施形態においては、同じ送信元ノードから送信されたパケットであっても、メッセージ番号が異なるものは、異なる送信ノード数として取り扱う。つまり、スイッチ１００のポート送信部１０２において、送信元ノード数として、同じ送信元ノードから送信されたパケットであっても、メッセージ番号が異なるものについては異なるものとして計数する。【０１２８】
また、送信制御部１０４は、パケットを送信するに際して、同じ送信元ノードから送信されたパケットであっても、メッセージ番号が異なるものを送信する場合には、別個、カウンタ１２１のカウントアップも行なう。
同一の送信元ノードから複数のメッセージを同時に送信する場合に、これらのメッセージの送信経路が重なれば、これらのメッセージ間においても、他の送信元ノードからそれぞれ送信されたメッセージの重なり合い（重合）により帯域減少が生じるのと同様に、帯域減少が生じるからである。【０１２９】
図２２は第４実施形態の一例としての並列計算機システム１における応答パケットのフォーマットを模式的に例示する図である。
この応答パケットは、例えば、図２２に示すように、図７に示した応答パケットにメッセージ番号及び末尾フラグを備える。なお、この応答パケットに格納されるメッセージ番号以外の情報は、図７等を用いて説明したパケットに含まれる既述の各情報と同様であるので、その詳細な説明は省略する。【０１３０】
また、この応答パケットに格納されるメッセージ番号は、パケット受信部２０８が受信したパケット（送信パケット）から読み出した値が用いられる。
送信先ノードは、パケットを受信するとこの応答パケットを送信元ノードに対して送信することにより、送信ノード数とともに、末尾フラグやメッセージ番号を送信元ノードに通知する。【０１３１】
送信元ノードにおいては、応答パケットに付加された送信ノード数に基づいて、前記式（１）に従ってギャップ長を算出する。すなわち、同じ送信元ノードから送信されたパケットであっても、メッセージ番号が異なるものは、異なるものとしてカウントされた送信ノード数に基づいてギャップ長を算出する。
送信元ノードにおいては、このようにして算出したギャップ長のブランクを、連続して送信するパケット間に挿入する。これにより、同一の送信元ノードから送信される複数のメッセージにより生じる通信帯域の減少に対応したギャップ長でパケットが送信され、輻輳の発生を阻止することができる。【０１３２】
第４実施形態の一例としての並列計算機システム１におけるポート送信部１０２の処理を、図２３に示すフローチャート（ステップＣ１０，Ｃ２０，Ｅ３１，Ｃ４０〜Ｃ６０，Ｅ７１，Ｅ８１）に従って説明する。なお、以下、図中、既述の符号と同一の符号を付したステップは、同様の処理を示しているので、その説明は省略する。
ポート送信部１０２は、ポート受信部１１４やポート受信部１０６から転送するパケットを受信すると、受信したパケットをバッファ１０３に格納する（ステップＣ１０）。【０１３３】
送信制御部１０４は、パケットの末尾フラグを確認し、当該パケットが一のメッセージを構成する複数のパケットのうち末尾のパケットであるか否かを確認する（ステップＣ２０）。
この末尾フラグに“１”が設定されている場合、すなわち、パケットが末尾のパケットである場合には（ステップＣ２０のＹＥＳルート参照）、送信制御部１０４は、送信ノード情報記憶部１２２において、その送信元ノードと対応するメッセージ番号との組み合わせに対応させて“無送信”を設定する。又、送信ノード数記憶部１０５にカウンタ１２１が備えられている場合には、送信制御部１０４はカウンタ１２１に対してカウントダウン信号を送信して、送信ノード数をカウントダウンさせ（ステップＥ３１）、ステップＣ４０に移行する。【０１３４】
一方、末尾フラグに“０”が設定されている場合、すなわち、パケットが末尾のパケットでない場合には（ステップＣ２０のＮＯルート参照）、送信制御部１０４は、パケットのローカルノードとメッセージ番号とに基づいて送信ノード情報記憶部１２２を確認する（ステップＥ７１）。
送信ノード情報記憶部１２２において、当該ローカルノードと対応するメッセージ番号との組み合わせに“送信中”が設定されていれば（ステップＥ７１のＹＥＳルート参照）、ステップＣ４０に移行する。又、送信ノード情報記憶部１２２において、当該ローカルノードと対応するメッセージ番号との組み合わせに“無送信”が設定されていれば（ステップＥ７１のＮＯルート参照）、送信制御部１０４は、送信ノード情報記憶部１２２における当該ローカルノードと対応するメッセージ番号との組み合わせに対応付けて“送信中”を設定する。又、送信制御部１０４は、カウンタ１２１に対してカウントアップ信号を送信することにより、送信ノード数をカウントアップ（＋１）する（ステップＥ８１）。その後、ステップＣ４０に移行する。【０１３５】
このように、第４実施形態の一例としての並列計算機システム１によれば、上述した第２実施形態と同様の作用効果を得ることができる他、送信元の計算ノード２００から同時に複数のメッセージを送信する場合にもパケット間に適切なギャップを挿入できる。すなわち、送信元ノード数として、同じ送信元ノードから送信されたパケットであっても、メッセージ番号が異なるものについては異なるものとして取り扱う。すなわち、スイッチ１００のポート送信部１０２において、送信元ノード数として、同じ送信元ノードから送信されたパケットであっても、メッセージ番号が異なるものについては異なるものとして計数する。【０１３６】
これにより、送信元ノードにおいて、同一の送信元ノードから送信される複数のメッセージにより生じる通信帯域の減少に対応したギャップ長が求められ、最適な間隔でパケットが送信される。これにより、輻輳の発生を阻止することができる。
なお、本第４実施形態においては、図１９に示すように、計算ノード２００のネットワークインタフェース２０３が複数のパケット送信部２０６を備えているが、これに限定されるものではなく、実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。例えば、一の計算ノード２００が複数のネットワークインタフェース２０３を備えてもよい。この場合、メッセージ番号の代わりに、ネットワークインタフェース２０３毎に固有の識別情報（例えば、ネットワークインタフェース番号）を設定する。そして、送信ノード情報記憶部１２２において、メッセージ番号に代えてこのネットワークインタフェース番号を用いて、ローカルノードとネットワークインタフェース番号との組み合わせに対応付けて、“送信中”，“無送信”の情報を設定する。これにより、本第４実施例と同様に実現することができる。【０１３７】
（Ｆ）第５実施形態
例えば、図２に例示した第１実施形態の並列計算機システム１は、複数のスイッチ１００を１次元の直線状に配置した１次元メッシュのネットワーク構成を備えているが、これに限定されるものではない。すなわち、並列計算機システム１が多次元ネットワーク構成を備えてもよい。【０１３８】
図２４は第５実施形態の一例としての並列計算機システム１の構成を模式的に示す図、図２５はその並列計算機システム１に備えられるスイッチ１００のハードウェア構成を模式的に示す図である。
図２４に示す並列計算機システム１は、Ｎ次元メッシュ（ただし、Ｎ＝２）のネットワーク構成を備え、Ｘ方向とＹ方向とからなる二次元の格子状のネットワークの各格子点に、それぞれ、図２５に示すような５ポートのスイッチ１００が配置されている。又、各スイッチ１００には計算ノード２００が接続されている。なお、以下、Ｘ方向を次元Ｘという場合があり、Ｙ方向を次元Ｙという場合がある。【０１３９】
この図２４に示す例においては、並列計算機システム１は、Ｘ方向に４列（Ｘ＝１〜４）、Ｙ方向に４列（Ｙ＝１〜４））の二次元の格子状のネットワーク構成を備え、１６個のスイッチ１００と１６個の計算ノード２００とを備える。
以下、便宜上、この図２４に示す並列計算機システム１における個々のスイッチ１００を、Ｘ，Ｙ座標値で特定する場合がある。例えば、図２４中の左上に位置する、符号Ａが示された計算ノード２００（以下、ノードＡという場合がある）が接続されたスイッチ１００を、その座標（１，４）を用いてスイッチ１００（１，４）と表す。同様に、図２４中の右下に位置する、符号Ｆが示された計算ノード２００（以下、ノードＦという場合がある）が接続されたスイッチ１００を、その座標（４，１）を用いてスイッチ１００（４，１）と表す。以下、同様にして、各スイッチ１００や計算ノード２００を特定する。【０１４０】
図２４に示す例においては、スイッチ１００（２，４）にノードＢが、スイッチ１００（１，３）にノードＣが、スイッチ１００（４，４）にノードＤが、スイッチ１００（４，３）にノードＥが、それぞれ接続されている。
そして、この図２４に示す例においては、ノードＡ，Ｂ，Ｃが、それぞれノードＦに対してパケットを送信している状態を示す。【０１４１】
また、本並列計算機システム１においても、図１２に示したようなＸ，Ｙの順に座標を合わせる次元順ルーティングを行なうものとする。
本第５実施形態においては、図２５に示すような５ポートのスイッチ１００が用いられる。この５ポートのスイッチ１００においては、４つのネットワークポート１０１−１〜１０１−４が備えられている。【０１４２】
そして、これらの４つのネットワークポート１０１−１〜１０１−４のうち、例えば、ネットワークポート１０１−１，１０１−２がＸ方向の通信に用いられ、ネットワークポート１０１−３，１０１−４がＹ方向の通信に用いられる。
これにより、ネットワークポート１０１−１，１０１−２に備えられる各送信ノード数記憶部１０５は、ネットワーク２におけるＸ方向のパケット通信にかかる送信ノード数についての情報を記憶する。すなわち、ネットワークポート１０１−１，１０１−２は次元Ｘに属する。又、ネットワークポート１０１−３，１０１−４に備えられる各送信ノード数記憶部１０５は、ネットワーク２におけるＹ方向のパケット通信にかかる送信ノード数についての情報を記憶する。すなわち、ネットワークポート１０１−３，１０１−４が次元Ｙに属する。【０１４３】
以下、ネットワークポートを示す符号としては、複数のネットワークポートのうち１つを特定する必要があるときには符号１０１−１〜１０１−４を用いるが、任意のネットワークポートを指すときには符号１０１を用いる。又、ノードポート１１０に計算ノード２００が接続される。
なお、図２５中においては、便宜上、各ネットワークポート１０１等の構成の図示を省略している。又、図２４中においては、便宜上、各スイッチ１００の構成の図示を省略するとともに、一部のスイッチ１００についてのみ送信ノード数記憶部１０５を示している。【０１４４】
また、以下、図２４中において、例えばスイッチ１００（１，４）のように、スイッチ１００の内部に示された送信ノード情報記憶部１０５は、Ｘ方向の通信に用いられるネットワークポート１０１のポート送信部１０２に備えられる送信ノード情報記憶部１０５を示す。又、スイッチ１００（４，４）のように、スイッチ１００の外部に示された送信ノード情報記憶部１０５は、Ｙ方向の通信に用いられるネットワークポート１０１のポート送信部１０２に備えられる送信ノード情報記憶部１０５を示す。【０１４５】
本第５実施形態の並列計算機システム１においては、送信ノード数記憶部１０５には、当該送信ノード数記憶部１０５が備えられるネットワークポート１０１が属する次元での通信にかかる、送信元ノードについての情報が記憶される。
また、パケットの通信経路において、次元の乗り換えが生じるスイッチ１００においては、乗り換え前の次元のネットワークポート１０１の送信状態情報に代えて、乗り換え後の次元のネットワークポート１０１の送信ノード数記憶部１０５に、当該スイッチ１００の情報が設定される。【０１４６】
ここで、次元の乗り換えとは、一の次元方向の通信経路を通過するパケットが、スイッチ１００において、当該一の次元に属するネットワークポート１０１から、他の次元に属するポート送信部１０２へ転送されることにより、他の次元方向へ通信経路が切り替わることをいう。例えば、次元Ｘと次元Ｙとからなる２次元のネットワーク２において、Ｘ方向（もしくはＹ方向）の通信経路を通過するパケットが、スイッチ１００において、次元Ｘ（もしくは次元Ｙ）に属するネットワークポート１０１から、他の次元Ｙ（もしくは次元Ｘ）に属するポート送信部１０２へ転送されることにより、Ｙ方向（もしくはＸ方向）へ通信経路が切り替わることをいう。【０１４７】
具体的には、例えば、図２４に示すネットワーク２を備える並列計算機システム１において、ノードＡからノードＦに対して送信されたパケットは、先ず、スイッチ１００（１，４），スイッチ１００（２，４），スイッチ１００（３，４）及びスイッチ１００（４，４）の順でＸ方向（次元Ｘ）の経路を通過する。そして、スイッチ１００（４，４）において、Ｙ方向（次元Ｙ）の経路へ次元の乗り換えが行なわれる。その後、パケットは、スイッチ１００（４，４），スイッチ１００（４，３），スイッチ１００（４，２）及びスイッチ１００（４，１）の順でＹ方向の経路を通過してノードＦに到達する。【０１４８】
ここで、ノードＤが接続されるスイッチ１００（４，４）には、実際にはノードＡから送信されるパケットとノードＢから送信されるパケットとが通過する。従って、ノードＢが接続されるスイッチ１００（２，４）のＸ方向のネットワークポート１０１の送信ノード数記憶部１０５には、送信元ノードＡ，Ｂの情報が記憶される。具体的には、送信ノード情報記憶部１２２において、送信元ノードＡ，Ｂのそれぞれに“送信中”が設定され、又、カウンタ１２１にカウント値“２”が設定される。なお、図２４中、送信ノード数記憶部１０５に登録される送信元ノードＡ，Ｂにかかるこれらの送信状態情報を、送信元ノードを特定する符号“Ａ”，“Ｂ”を用いて表す。【０１４９】
そして、これらのノードＡ，Ｂから送信されるパケットの通信経路において、ノードＤが接続されるスイッチ１００（４，４）にて、上述の如く、Ｘ方向（第１の次元）からＹ方向（第２の次元）への次元の乗り換えが行なわれる。このスイッチ１００（４，４）においては、乗り換え前の次元（Ｘ方向）のネットワークポート１０１の送信状態情報（図２４では“Ａ”，“Ｂ”）に代えて、乗り換え後の次元（Ｙ方向）のネットワークポート１０１の送信ノード数記憶部１０５に、当該スイッチ１００にかかる送信状態情報（図２４では“Ｄ”）が設定される。【０１５０】
そして、この次元の乗り換えに際しては、乗り換え前の次元において２以上の送信元ノードについての送信状態情報が記憶されていても、乗り換え後の次元においては、当該スイッチ１００に接続された一の計算ノード２００の送信状態情報に置換される。
すなわち、ネットワーク２における一の次元の経路上の２以上の送信元ノードについての送信状態情報が、次元の乗り換えが生じるスイッチ１００において、当該スイッチ１００に接続された計算ノード２００の送信状態情報として記憶される。【０１５１】
つまり、パケットの通信経路における、次元Ｘの通信路から次元Ｙの通信路への乗り換えが行なわれるスイッチ１００において、その送信ノード数記憶部１０５に、乗り換え前の次元Ｘの通信路上での送信状態情報に代えて、乗り換え後の次元Ｙに対応するネットワークポート１０１において計算ノード２００（４，４）についての送信状態情報を記憶する。【０１５２】
以下、一の次元方向の２以上の送信元ノードについての送信状態情報が、スイッチ１００における次元の乗り換えにより、他の次元の方向についての、当該スイッチ１００に接続された計算ノード２００の送信状態情報へ置換することを、「まとめる」もしくは「丸める」という。
例えば、スイッチ１００（４，４）においては、ノードＡ，Ｂについての送信状態情報が、これらのノードＡ，ＢとＹ次元のアドレスが等しいノードＤの送信状態情報としてまとめて記憶される。【０１５３】
同様に、ノードＥが接続されたスイッチ１００（４，３）においても、そのＸ方向の次元における送信元ノードＣを表す送信状態情報が、ノードＥを表す送信状態情報にまとめられる。又、このスイッチ１００（４，３）においては、Ｙ方向経路において、スイッチ１００（４，４）から出力されるパケットも通過する。これにより、スイッチ１００（４，３）の送信ノード数記憶部１０５には、ノードＤを表す送信状態情報も記憶される。すなわち、スイッチ１００（４，３）の送信ノード数記憶部１０５には、ノードＤ，Ｅにかかる送信状態情報が記憶される。【０１５４】
図２６は第５実施形態の一例としての並列計算機システム１の送信パケットに記憶される送信ノード数のフォーマット例を模式的に示す図である。
本第５実施形態においては、パケットに記憶される送信ノード数は、この図２６に示すように、次元Ｘの送信ノード数と次元Ｙの送信ノード数とを備える。  
本第５実施例のスイッチ１００において、各ネットワークポート１０１は、当該ネットワークポート１０１が属している次元方向の送信元ノードについてのみ、送信ノード数記憶部１０５に送信状態情報を記憶する。又、送信ノード数記憶部１０５にカウンタ１２１を備える場合には、このカウンタ１２１に、そのネットワークポート１０１が属している次元方向の送信ノードについての送信ノード数を記憶する。すなわち、送信ノード数記憶部１０５には次元毎に送信状態情報が記憶される。【０１５５】
また、パケットを受信したリモートノードのネットワークインタフェース２０３は、受信したパケットの送信ノード数を、そのまま応答パケットに記してローカルノードに送り返す。
そして、応答パケットを受信したローカルノードのネットワークインタフェース２０３において、ギャップ制御部２０７は、パケットから読み出した各次元の送信ノード数の合計から、当該パケットが送信元ノードから送信先ノードまでの経路上において次元を乗り換えた数を引いた値を送信ノード数として算出する。すなわち、本第５実施形態に示す例においては、送信ノード数を以下の式（２）に基づいて算出する。【０１５６】
送信ノード数＝（次元Ｘの送信ノード数）＋（次元Ｙの送信ノード数）
−（次元を乗り換えた数）  ・・・（２）
なお、ローカルノードアドレスとリモートノードアドレスとの間で、各次元の値を比較し、値が異なる次元の数をパケットが次元を乗り換えた数として用いることができる。【０１５７】
また、本並列計算機システム１においては、送信元ノードと送信先ノードとの組み合わせによりパケットの送信経路は確定する。従って、送信元ノードと送信先ノードとの組み合わせに基づいて、その通信経路における「次元を乗り越えた数」を容易に知ることができる。又、ローカルノードアドレスと、リモートノードアドレス間で、各次元の値を比較し、値が異なる次元の数が、次元を乗り換えた回数であるともいえる。【０１５８】
ギャップ制御部２０７は、上記式（２）で算出した送信ノード数を用いて、以下の式（３）によりギャップ長を算出する。
ギャップ長＝パケットサイズ×（送信ノード数−１）×α  ・・・（３）
なお、αはパラメータ（ただし、α＞１）であって、予め設定したこのパラメータαを乗算することでギャップ長を調整する。これは、本第５実施形態の手法においては、以下の如く、ネットワーク２おける一部の領域で送信ノード数が実際の値と不一致となる場合が生じる得ることを補正するためである。【０１５９】
例えば、図２４に示す例において、ノードＡが接続されたスイッチ１００（０，４）やノードＢが接続されたスイッチ１００（２，４）では、Ｘ方向での送信ノード数が２、Ｙ方向での送信ノード数が２である。又、スイッチ１００（４，４）において、Ｘ方向からＹ方向へ１回次元を乗り換えられる。従って、上記式（２）により
送信ノード数＝２＋２−１＝３
が求められる。【０１６０】
パケットを受信したノードＦは、この送信ノード数“３”を格納した応答パケットをノードＡ，Ｂに送信する。
この送信ノード数“３”は、図２４に示す例において、実際にノードＦにパケットを送信しているノードの数（ノードＡ，Ｂ，Ｃの３つ）と一致する。
一方、ノードＣが接続されたスイッチ１００（１，３）では、Ｘ方向での送信ノード数が１、Ｙ方向での送信ノード数が２である。又、スイッチ１００（４，３）において、Ｘ方向からＹ方向へ１回次元を乗り換えられる。従って、上記式（２）により
送信ノード数＝１＋２−１＝２
が求められる。【０１６１】
パケットを受信したノードＦは、この送信ノード数“２”を格納した応答パケットをノードＡ，Ｂに送信する。
この送信ノード数“２”は、図２４に示す例において、実際にノードＦにパケットを送信しているノードの数（ノードＡ，Ｂ，Ｃの３つ）と不一致であり、実際の送信ノード数より小さくなる。【０１６２】
この様に、本第５実施形態の一例としての並列計算機システム１においては、経路において、次元が異なるアドレスに位置する複数のノードからそれぞれパケットを送信する際に、送信ノード数が実際の値より小さくなる場合が生じる。しかし、送信ノード数記憶部１０５にネットワークポート１０１が属している次元のみの送信状態情報を記憶することで、送信ノード数記憶部１０５として用いる記憶部の容量を大幅に削減することができる。【０１６３】
すなわち、ネットワークポート１０１が属する次元の送信状態情報のみを限定して格納することにより、記憶部として、Ｎ個の送信状態情報を格納できるだけの容量を備えればよく、製造コストを低減することができる。これに対して、例えば、各次元のノード数がＮの二次元メッシュ、トーラスの場合、全ノードについての送信状態情報を記憶しようとすれば、記憶部として、ネットワークポート１０１毎にＮ×Ｎ個の送信状態情報を格納するための容量が必要となり、製造コストが大きくなる。【０１６４】
上述の如く構成された、第５実施形態の一例としての並列計算機システム１におけるポート送信部１０２の処理を、図２７に示すフローチャート（ステップＣ１０，Ｆ２０，Ｃ３０〜Ｃ８０）に従って説明する。なお、以下、図中、既述の符号と同一の符号を付したステップは、同様の処理を示しているので、その説明は省略する。
ポート送信部１０２は、ポート受信部１１４やポート受信部１０６から転送するパケットを受信すると、受信したパケットをバッファ１０３に格納する（ステップＣ１０）。【０１６５】
送信制御部１０４は、パケットのローカルノードに基づいて送信ノード情報記憶部１２２を確認する（ステップＦ２０）。すなわち、送信ノード情報記憶部１２２において、当該ローカルノードが“送信中”となっており、且つ、当該パケットが末尾のパケットであるか否かを確認する。
送信ノード情報記憶部１２２において、当該ローカルノードが“送信中”、且つ、当該パケットが末尾パケットであれば（ステップＦ２０のＹＥＳルート参照）、ステップＣ３０に移行する。【０１６６】
一方、送信ノード情報記憶部１２２において、当該ローカルノードが“送信中”、且つ、当該パケットが末尾パケットでない場合には（ステップＦ２０のＮＯルート参照）、ステップＣ７０に移行する。
このように、第５実施形態の一例としての並列計算機システム１によれば、上述した第２実施形態と同様の作用効果を得ることができる他、Ｎ次元メッシュのネットワーク構成を備える場合に、送信ノード数記憶部１０５にネットワークポート１０１が属している次元のみの送信状態情報を記憶することで、送信ノード数記憶部１０５として用いる記憶部の容量を削減することができる。【０１６７】
すなわち、ネットワークポート１０１が属する次元の送信状態情報のみを限定して格納することにより、製造コストを低減することができる。
（Ｇ）第６実施形態
上述した各実施形態やその変形例の一例としての並列計算機システム１においては、送信パケットを受信した送信先ノードが、送信元ノードに対して送信ノード数を含む応答パケットを返信している。【０１６８】
本第６実施形態の一例としての並列計算機システム１においては、スイッチ１００が送信元ノードに対して送信ノード数を含む応答パケットを返信する。すなわち、本第６実施形態の一例としての並列計算機システム１においては、スイッチ１００が送信ノード数送信部２３としての機能を備える。
具体的には、スイッチ１００のポート送信部１０２において、送信制御部１０４が、パケットの送信ノード数と送信ノード数記憶部１０５に記憶されたポートの送信ノード数とを比較する。【０１６９】
そして、送信ノード数記憶部１０５に記憶されたポートの送信ノード数がパケットの送信ノード数より大きければ、送信制御部１０４は、ポートの送信ノード数を記した応答パケットを作成し、当該パケットのローカルノードに送り返す。
なお、この応答パケットのフォーマットや作成手法は、第１実施形態と同様の手法により実現することができ、その詳細な説明は省略する。【０１７０】
上述の如く構成された、第６実施形態の一例としての並列計算機システム１におけるポート送信部１０２の処理を、図２８に示すフローチャート（ステップＣ１０〜Ｃ５０，Ｇ５１，Ｃ６０〜Ｃ８０）に従って説明する。なお、以下、図中、既述の符号と同一の符号を付したステップは、同様の処理を示しているので、その説明は省略する。
送信制御部１０４（比較部１３）は、送信ノード数記憶部１０５で管理する送信ノード数とパケットに格納されている送信ノード数とを比較する（ステップＣ４０）。この比較の結果、送信ノード数記憶部１０５で管理する送信ノード数がパケットの送信ノード数より大きければ（ステップＣ４０のＹＥＳルート参照）、送信制御部１０４は、パケットの送信ノード数の値を、送信ノード数記憶部１０５の送信ノード数で書き換える（ステップＣ５０）。【０１７１】
送信制御部１０４は、書き換えたパケットの送信ノード数に基づき、応答パケットを生成する。そして、送信制御部１０４は、送信元であるネットワークポート１０１のポート送信部１０２に送信要求を送信する。このポート送信部１０２から送信許可が返信されると、応答パケットを送信する（ステップＧ５１）。
その後、送信制御部１０４は、接続されている他のスイッチ１００のネットワークポート１０１に対して送信要求を送信する。そして、このネットワークポート１０１から送信許可が応答されると、送信制御部１０４は、該当ネットワークポート１０１に対してパケットを送信し（ステップＣ６０）、処理を終了する。【０１７２】
また、応答パケットを受信したローカルノードのネットワークインタフェース２０３においては、第１実施形態と同様に、送信ノード数をギャップ制御部２０７に送り、パケット送信部２０６にギャップを挿入するように制御する。
このように、第６実施形態の一例としての並列計算機システム１によれば、スイッチ１００において、パケットの転送時に送信ノード数が増加する時に、応答パケットを作成して送信元ノードに対して送り返す。これにより、送信先ノードから応答パケットを送り返すことに比べて、ネットワーク２上の通信状態を送信元ノードに対して迅速に通知し、最適なギャップ長でのパケット送出を行なうことができる。すなわち、送信元ノードに対して、ネットワーク２の通信状態を迅速に反映させることができる。【０１７３】
また、上述した第６実施形態の一例としての並列計算機システム１において、送信元ノードに対して応答パケットを送り返すスイッチ１００を、特定のスイッチ１００に限定してもよい。これにより、全てのスイッチ１００から応答パケットを送出することにより生じうる、ネットワークトラフィックの増加等の影響を少なくすることができる。
なお、応答パケットを送り返す機能を備えるスイッチ１００としては、例えば、ネットワーク２のトポロジがメッシュである場合の中央部分のスイッチ等、通信が集中することが予想されるスイッチ１００に限定することが望ましい。【０１７４】
（Ｈ）第７実施形態
図２９は第７実施形態の一例としての並列計算機システム１における計算ノード２００の構成を模式的に示す図である。
この図２９に示すように、第７実施形態の計算ノード２００は、制御部２０５を複数備える他は、第１実施形態の計算ノード２００と同様の構成を備える。なお、以下、図中、既述の符号と同一の符号は同様の部分を示しているので、その詳細な説明は省略する。【０１７５】
本第７実施形態の並列計算機システム１においては、各計算ノード２００から送信されるデータはパケットに分割された状態で送受信される。又、このパケットのパケット長は適宜設定することができ、又、固定長もしくは可変長として適宜実施することができる。
本第７実施形態の一例としての並列計算機システム１において、プロセッサ２０１からメッセージ送信指示を受け取った各制御部２０５は、パケットを生成し、生成したこれらのパケットをそれぞれパケット送信部２０６に送る。【０１７６】
プロセッサ２０１が複数のメッセージ送信指示を行ない、複数の制御部２０５がそれぞれパケットをパケット送信部２０６に送った場合は、パケット送信部２０６は時分割でパケットを送信する。
図３０は第７実施形態の一例としての並列計算機システム１における送信パケットのフォーマットを模式的に例示する図である。本第７実施形態の一例としての並列計算機システム１の送信パケットフォーマットは、図１５に示した第２実施形態の送信パケットフォーマットに加えて先頭フラグを備える。なお、送信パケットにおける、その他の部分は、図１５等を用いて説明したパケットに含まれる既述の各情報と同様であるので、その詳細な説明は省略する。【０１７７】
また、以下、図中、既述の符号と同一の符号は同様の部分を示しているので、その詳細な説明は省略する。
送信元ノードにおいて、ネットワークインタフェース２０３は、メッセージを複数のパケットに分割して送信する際に、先頭のパケットに対しては、その先頭フラグを例えば“１”に設定する。又、先頭以外のパケットに対しては、それぞれ先頭フラグに“０”を設定する。これらの、先頭フラグの“１”が、当該パケット（分割データ）が先頭である事を示す先頭識別情報に相当する。【０１７８】
なお、この先頭フラグへの“０”又は“１”の設定は、例えば、制御部２０５が行なってもよく、又、パケット送信部２０６が行なってもよい。
図３１は第７実施形態の一例としての並列計算機システム１における送信ノード数記憶部１０５の構成を示す図である。この図３１に示す第７実施形態の一例としての並列計算機システム１の送信ノード数記憶部１０５は、第１実施形態の送信ノード数記憶部１０５から送信ノード数記憶部１０５を除くものであり、カウンタ１２１のみを備える。【０１７９】
この第７実施形態としての送信ノード数記憶部１０５を備えるスイッチ１００においては、カウンタ１２１は、送信制御部１０４からのカウントアップ信号もしくはカウントダウン信号に基づきそのカウント値を変更する。
そして、送信制御部１０４は、先頭フラグ“１”が設定されたパケット（先頭パケット）を他のスイッチ１００に送信する際に、カウンタ１２１に対してカウントアップ信号を送信することにより、カウンタ１２１にカウントアップを行なわせる。【０１８０】
また、送信制御部１０４は、末尾フラグ“１”が設定された末尾パケットを送信する際に、カウンタ１２１に対してカウントダウン信号を送信することにより、送信ノード数をカウントダウンさせる。
なお、カウンタ１２１のカウントアップやカウントダウンのタイミングは、これらに限定されるものではなく、種々変形して実施することができる。例えば、先頭パケットをポート受信部１０６が受信した際に、受信制御部１０８がカウンタ１２１に対してカウントアップ信号を送信してカウントアップを行なわせてもよい。【０１８１】
同様に、末尾パケットをポート受信部１０６が受信した際に、受信制御部１０８がカウンタ１２１に対してカウントダウン信号を送信して送信ノード数をカウントダウンさせてもよい。
上述の如く構成された第７実施形態の一例としての並列計算機システム１における送信元ノードとしての計算ノード２００のネットワークインタフェース２０３の処理を、図３２に示すフローチャート（ステップＨ１０〜Ｈ１００）に従って説明する。【０１８２】
制御部２０５は、プロセッサ２０１からメッセージ送信指示を受信する（ステップＨ１０）。制御部２０５は、このメッセージ送信指示を確認し、当該メッセージ送信指示が主記憶装置２０２に格納されているデータの送信を指示するものであるか否かを確認する（ステップＨ２０）。主記憶装置２０２に格納されているデータの送信を指示するメッセージ送信指示としては、例えば、Ｐｕｔリクエストがある。又、主記憶装置２０２に格納されているデータの送信を指示しないメッセージ送信指示としては、例えば、Ｇｅｔリクエストや単なるコマンド送信がある。【０１８３】
メッセージ送信指示がリモートノードへデータを送信するものである場合には（ステップＨ２０のＹＥＳルート参照）、制御部２０５は、対象のデータを分割して、１パケットで送信するデータの主記憶装置２０２上のアドレスやデータ長を生成する。制御部２０５は、生成したこれらの情報をＤＭＡコントローラ２０４へ送信して、ＤＭＡコントローラ２０４に送信するデータを主記憶装置２０２から読み出させる（ステップＨ３０）。【０１８４】
制御部２０５は、プロセッサ２０１からのメッセージ送信指示に基づいて、送信するパケットを生成する（ステップＨ４０）。例えば、データ送信を行なう場合には、ＤＭＡコントローラ２０４が読み出したデータとメッセージ送信指示から取得した情報等に基づいて作成したヘッダとを組み合わせることによりパケットを生成する。又、メッセージ送信指示がデータ送信を行なわないものである場合には（ステップＨ２０のＮＯルート参照）、メッセージ送信指示に基づいて送信するパケットを作成する。【０１８５】
その後、制御部２０５は、生成したパケットが、メッセージにかかる先頭パケットであり、且つ、他の制御部２０５がパケットを送信中ではないことを確認する（ステップＨ５０）。
生成したパケットが、メッセージにかかる先頭パケットであり、且つ、他の制御部２０５がパケットを送信中ではない場合には（ステップＨ５０のＹＥＳルート参照）、当該パケットの先頭フラグを有効にする（ステップＨ６０）。例えば、先頭フラグに“１”を設定する。そして、制御部２０５は、このパケットをパケット送信部２０６によって送信させる（ステップＨ７０）。【０１８６】
一方、生成したパケットが、メッセージにかかる先頭パケットであり、且つ、他の制御部２０５がパケットを送信中ではないとの条件を満たさない場合には（ステップＨ５０のＮＯルート参照）、次に、そのパケットが末尾パケットであり、且つ、同じメッセージの先頭パケットの先頭フラグが有効に設定されているか否かを確認する（ステップＨ９０）。【０１８７】
当該パケットが末尾パケットであり、且つ、同じメッセージで先頭フラグが有効に設定されているとの条件が満たされていない場合には（ステップＨ９０のＮＯルート参照）、ステップＨ７０に移行する。
また、当該パケットが末尾パケットであり、且つ、同じメッセージで先頭フラグが有効に設定されていれば（ステップＨ９０のＹＥＳルート参照）、当該パケットの末尾フラグを有効にする。すなわち、例えば、末尾フラグに“１”を設定する（ステップＨ１００）。その後、ステップＨ７０に移行する。【０１８８】
そして、制御部２０５は、当該パケットが末尾パケットであるか否かを確認し（ステップＨ８０）、末尾パケットでない場合には（ステップＨ８０のＮＯルート参照）、ステップＨ２０に戻る。又、当該パケットが末尾パケットであれば（ステップＨ８０のＹＥＳルート参照）、処理を終了する。
次に、第７実施形態の一例としての並列計算機システム１におけるポート送信部１０２の処理を、図３３に示すフローチャート（ステップＣ１０，Ｊ１１，Ｊ１２，Ｃ２０〜Ｃ６０）に従って説明する。なお、以下、図中、既述の符号と同一の符号を付したステップは、同様の処理を示しているので、その説明は省略する。【０１８９】
ポート送信部１０２は、ポート受信部１１４やポート受信部１０６から転送するパケットを受信すると、受信したパケットをバッファ１０３に格納する（ステップＣ１０）。
送信制御部１０４は、この受信したパケットの先頭フラグを確認して、当該パケットが先頭パケットであるか否かを確認する（ステップＪ１１）。この確認の結果、パケットが先頭パケットである場合には（ステップＪ１１のＹＥＳルート参照）、送信制御部１０４は、送信ノード数記憶部１０５（カウンタ１２１）に対してカウントアップ信号を送信し、カウンタ値をカウントアップ（＋１）させる（ステップＪ１２）。その後、ステップＣ４０に移行する。【０１９０】
また、パケットが先頭パケットではない場合には（ステップＪ１１のＮＯルート参照）、ステップＣ２０に移行する。
このように、第７実施形態の一例としての並列計算機システム１によれば、上述した第２実施形態と同様の作用効果を得ることができる他、スイッチ１００において、送信ノード数記憶部１０５がカウンタ１２１のみを備え、このカウンタ値に基づいて送信ノード数を管理する。【０１９１】
これにより、送信ノード情報記憶部１２２のような送信ノード状態情報の記憶を行なうための記憶領域を用意する必要がなく、送信ノード数記憶部１０５として用いる記憶部の容量を削減することができる。従って、製造コストを低減することができる。
また、送信パケットに送信フラグと末尾フラグとを備える。そして、１つの送信元ノードが時分割で複数のメッセージを送信する場合に、１つのメッセージに対してのみ先頭フラグと末尾フラグとを有効にすることにより、送信ノード数を正確にカウントすることができ、信頼性を向上させることができる。【０１９２】
（Ｉ）その他
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
なお、本発明の各実施形態が開示されていれば、本発明を当業者によって実施・製造することが可能である。
【符号の説明】
【０１９３】
１    並列計算機システム
２    ネットワーク
１１    入力部
１２    出力部
１３    比較部
１４    書換処理部
１５    更新処理部
１６    送信ノード数記憶部
２１    パケット送信部
２２    ギャップ調整部
２３    送信ノード数送信部
１００    スイッチ
１０１，１０１−１，１０１−２，１０１−３，１０１−４    ネットワークポート
１０２    ポート送信部
１０３，１０７，１１２，１１５    バッファ
１０４，１１３    送信制御部
１０５    送信ノード数記憶部
１０６    ポート受信部
１０８，１１６    受信制御部
１１０    ノードポート
１１１    ポート送信部
１２１    カウンタ
１２２    送信ノード情報記憶部
２００，２００−１，２００−２，２００−３，２００−４    計算ノード（送信元ノード，送信先ノード）
２０１    プロセッサ
２０２    主記憶装置
２０３    ネットワークインタフェース
２０４    ＤＭＡコントローラ
２０５    制御部
２０６    パケット送信部
２０７    ギャップ制御部
２０８    パケット受信部
【図１】
2013098993.tif 000003
【図２】
2013098993.tif 000004
【図３】
2013098993.tif 000005
【図４】
2013098993.tif 000006
【図５】
2013098993.tif 000007
【図６】
2013098993.tif 000008
【図７】
2013098993.tif 000009
【図８】
2013098993.tif 000010
【図９】
2013098993.tif 000011
【図１０】
2013098993.tif 000012
【図１１】
2013098993.tif 000013
【図１２】
2013098993.tif 000014
【図１３】
2013098993.tif 000015
【図１４】
2013098993.tif 000016
【図１５】
2013098993.tif 000017
【図１６】
2013098993.tif 000018
【図１７】
2013098993.tif 000019
【図１８】
2013098993.tif 000020
【図１９】
2013098993.tif 000021
【図２０】
2013098993.tif 000022
【図２１】
2013098993.tif 000023
【図２２】
2013098993.tif 000024
【図２３】
2013098993.tif 000025
【図２４】
2013098993.tif 000026
【図２５】
2013098993.tif 000027
【図２６】
2013098993.tif 000028
【図２７】
2013098993.tif 000029
【図２８】
2013098993.tif 000030
【図２９】
2013098993.tif 000031
【図３０】
2013098993.tif 000032
【図３１】
2013098993.tif 000033
【図３２】
2013098993.tif 000034
【図３３】
2013098993.tif 000035
【図３４】
2013098993.tif 000036
【図３５】
2013098993.tif 000037
【手続補正書】
【提出日】平成26年5月30日(2014.5.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
通信制御装置と、前記送信元の計算ノードと、前記送信先の計算ノード間を接続する通信網が、複数の次元の通信路を接続する多次元ネットワーク構成を有し、
前記送信ノード数記憶部は、
次元毎に前記送信ノード数を対応させて記憶し、
前記送信元の計算ノードから前記送信先の計算ノードまでの通信路に中に存在し、一の次元の通信路から他の次元の通信路への乗り換えが行なわれる通信制御装置の更新処理部は、
乗り換え前の前記一の次元の通信路の送信ノード数に代えて、乗り換え後の前記他の次元に対応する送信ノード数として、前記通信制御装置に接続された計算ノードの数を記憶することを特徴とする請求項１〜９のいずれか１項に記載の計算機システム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００５８
【補正方法】変更
【補正の内容】
【００５８】
そして、送信ノード数記憶部１０５は、ネットワーク２においてそのスイッチ１００を経由するデータを送信中の計算ノード２００の数を表す送信ノード数を記憶する送信ノード数記憶部１６に相当する。
また、送信制御部１０４は、図１に示すように、比較部１３及び書換処理部１４としての機能を備える。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００８８
【補正方法】変更
【補正の内容】
【００８８】
また、本並列計算機システム１においては、パケットに送信ノード数を格納することにより、各スイッチ１００が容易にネットワーク２上における送信ノード数を把握することができる。
スイッチ１００において、送信ノード数を管理し、ポート送信部１０２からパケットを送信するに際して、そのパケットのローカルノードの情報（送信中）を送信ノード数記憶部１０５（送信ノード情報記憶部１２２）に記憶する。これにより、スイッチ１００において、パケットを送信中の送信元ノードをリアルタイムに把握することができる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１１５
【補正方法】変更
【補正の内容】
【０１１５】
送信元ノードにおいて、ネットワークインタフェース２０３は、メッセージをパケットに分割して送信する際に、各パケットにメッセージの全体のデータ長を示すメッセージ長を設定する。このメッセージ長は、例えば、メッセージ送信指示とともにプロセッサ２０１から送信される。
スイッチ１００において、ポート送信部１０２の送信制御部１０４は、このメッセージ長に基づき、送信ノード数記憶部１０５の更新を行なうか否かの判別を行なう。すなわち、送信制御部１０４は、パケットを送信する際に、送信するパケットのメッセージ長を予め設定された閾値と比較する。この比較の結果、メッセージ長が閾値よりも小さい場合には、当該パケットについて、送信ノード情報記憶部１２２への“無送信”や“送信中”の設定やカウンタ１２１の更新を行なわずに、当該パケットの転送を行なう。なお、スイッチ１００における、その他の部分は第２実施形態の送信パケットフォーマットと同様に構成されており、その説明は省略する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１４４
【補正方法】変更
【補正の内容】
【０１４４】
また、以下、図２４中において、例えばスイッチ１００（１，４）のように、スイッチ１００の内部に示された送信ノード数記憶部１０５は、Ｘ方向の通信に用いられるネットワークポート１０１のポート送信部１０２に備えられる送信ノード数記憶部１０５を示す。又、スイッチ１００（４，４）のように、スイッチ１００の外部に示された送信ノード数記憶部１０５は、Ｙ方向の通信に用いられるネットワークポート１０１のポート送信部１０２に備えられる送信ノード数記憶部１０５を示す。
【手続補正６】
【補正対象書類名】図面
【補正対象項目名】図２３
【補正方法】変更
【補正の内容】
【図２３】
2013098993.tif 000038
【手続補正書】
【提出日】平成27年2月2日(2015.2.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
通信制御装置と、前記通信制御装置を経由してデータを送信する送信元の計算ノードと、前記通信制御装置を経由してデータを受信する送信先の計算ノードとを、それぞれ複数備える計算機システムにおいて、
前記送信元の計算ノードは、
前記送信先の計算ノードにデータを送信するデータ送信部と、
受信した制御データに含まれる送信ノード数に基づいて、前記データ送信部が送信するデータ間の間隔を調整する調整部を有し、
前記通信制御装置は、
前記送信元の計算ノードが送信するデータを入力する入力部と、
前記送信先の計算ノードに送信するデータを出力する出力部と、
前記通信制御装置を経由してデータを送信中の計算ノードの数を表す送信ノード数を記憶する送信ノード数記憶部と、
前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新する更新処理部と、
前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較する比較部と、
前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換える書換部を有し、
前記送信先の計算ノードは、
受信したデータに含まれる送信ノード数を含む前記制御データを、前記送信元の計算ノードに送信する制御データ送信部を有することを特徴とする計算機システム。
【請求項２】
前記通信制御装置はさらに、
前記入力部が入力するデータのサイズであるデータサイズと、予め設定した閾値とを比較するデータサイズ比較部と、
前記データサイズ比較部による比較の結果、前記データサイズが前記閾値より小さい場合、前記出力部がデータを出力するとき、前記送信ノード数記憶部が記憶する送信ノード数の前記更新処理部による更新を抑止する更新抑止部を有することを特徴とする請求項１記載の計算機システム。
【請求項３】
前記データ送信部は、
分割された複数のデータを生成し、
前記更新処理部は、
前記出力部が、生成された前記複数のデータのうち先頭のデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新することを特徴とする請求項１又は２記載の計算機システム。
【請求項４】
前記データ送信部は、
分割された前記複数のデータのうち先頭のデータに先頭である旨を示す先頭識別情報を付加し、
前記更新処理部は、
前記先頭識別情報が付加されたデータを前記出力部から出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新することを特徴とする請求項３記載の計算機システム。
【請求項５】
前記データ送信部は、
分割された複数のデータを作成し、
前記更新処理部は、
前記出力部が、生成された前記複数のデータのうち末尾のデータを出力する場合、前記送信ノード数記憶部の送信ノード数を更新させることを特徴とする請求項１又は２記載の計算機システム。
【請求項６】
前記データ送信部は、
分割された複数のデータを作成するとともに、前記複数のデータの末尾のデータに末尾である旨を示す末尾識別情報を付加し、
前記更新処理部は、
前記出力部が、前記末尾識別情報が付加されたデータを出力する場合、前記送信ノード数記憶部の送信ノード数を更新させることを特徴とする請求項５記載の計算機システム。
【請求項７】
前記更新処理部は、
前記送信ノード数記憶部の送信ノード数を増加させた後、所定時間が経過した場合、前記送信ノード数記憶部が記憶する送信ノード数を更新させることを特徴とする請求項１〜４のいずれか１項に記載の計算機システム。
【請求項８】
前記通信制御装置は、
前記通信制御装置を経由するデータを送信中の計算ノードを示す送信ノード情報を記憶する送信ノード情報記憶部を有し、
前記更新処理部は、
前記出力部がデータを出力する場合、前記送信ノード情報記憶部を参照し、前記出力部が出力するデータの送信元の計算ノードが、前記送信ノード情報に含まれていないとき、前記送信ノード情報に前記データの送信元の計算ノードを含めるとともに、前記送信ノード数記憶部が記憶する送信ノード数を更新することを特徴とする請求項１〜７のいずれか１項に記載の計算機システム。
【請求項９】
前記データ送信部は、
複数のメッセージにそれぞれ対応する複数のデータを送信する場合、前記複数のメッセージにそれぞれ対応する複数のデータに、対応するメッセージを識別するメッセージ識別情報をそれぞれ付加し、
前記送信ノード情報記憶部は、
メッセージ識別情報毎に送信ノード情報を記憶し、
前記更新処理部は、
前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を、メッセージ識別情報毎に更新することを特徴とする請求項８記載の計算機システム。
【請求項１０】
通信制御装置と、前記送信元の計算ノードと、前記送信先の計算ノード間を接続する通信網が、複数の次元の通信路を接続する多次元ネットワーク構成を有し、
前記送信ノード数記憶部は、
次元毎に前記送信ノード数を対応させて記憶し、
前記送信元の計算ノードから前記送信先の計算ノードまでの通信路に中に存在し、一の次元の通信路から他の次元の通信路への乗り換えが行なわれる通信制御装置の更新処理部は、
乗り換え前の前記一の次元の通信路の送信ノード数に代えて、乗り換え後の前記他の次元に対応する送信ノード数として、前記通信制御装置に接続された計算ノードの数を記憶することを特徴とする請求項１〜９のいずれか１項に記載の計算機システム。
【請求項１１】
通信制御装置において、
前記通信制御装置を経由してデータを送信する送信元の計算ノードから、受信した制御データに含まれる送信ノード数に基づいて、送信間隔を調整して送信されるデータを入力する入力部と、
前記通信制御装置を経由してデータを受信する送信先の計算ノードに送信するデータを出力する出力部と、
前記通信制御装置を経由してデータを送信中の計算ノードの数を表す送信ノード数を記憶する送信ノード数記憶部と、
前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新する更新処理部と、
前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較する比較部と、
前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換える書換部を有することを特徴とする通信制御装置。
【請求項１２】
通信制御装置と、前記通信制御装置を経由してデータを送信する送信元の計算ノードと、前記通信制御装置を経由してデータを受信する送信先の計算ノードとを、それぞれ複数備える計算機システムの制御方法において、
前記送信元の計算ノードが有するデータ送信部が、前記送信先の計算ノードにデータを送信し、
前記送信元の計算ノードが有する調整部が、受信した制御データに含まれる送信ノード数に基づいて、前記データ送信部が送信するデータ間の間隔を調整し、
前記通信制御装置が有する入力部が、前記送信元の計算ノードが送信するデータを入力し、
前記通信制御装置が有する送信ノード数記憶部が、前記通信制御装置を経由してデータを送信中の計算ノードの数を表す送信ノード数を記憶すると、
前記通信制御装置が有する出力部が、前記送信先の計算ノードに送信するデータを出力し、
前記出力部がデータを出力する場合、前記通信制御装置が有する更新処理部が、前記送信ノード数記憶部が記憶する送信ノード数を更新し、
前記通信制御装置が有する比較部が、前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較し、
前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記通信制御装置が有する書換部が、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換え、
前記送信先の計算ノードが有する制御データ送信部が、受信したデータに含まれる送信ノード数を含む前記制御データを、前記送信元の計算ノードに送信することを特徴とする計算機システムの制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
上記の目的を達成するために、通信制御装置と、前記通信制御装置を経由してデータを送信する送信元の計算ノードと、前記通信制御装置を経由してデータを受信する送信先の計算ノードとを、それぞれ複数備える計算機システムにおいて、前記送信元の計算ノードは、前記送信先の計算ノードにデータを送信するデータ送信部と、受信した制御データに含まれる送信ノード数に基づいて、前記データ送信部が送信するデータ間の間隔を調整する調整部を有し、前記通信制御装置は、前記送信元の計算ノードが送信するデータを入力する入力部と、前記送信先の計算ノードに送信するデータを出力する出力部と、前記通信制御装置を経由してデータを送信中の計算ノードの数を表す送信ノード数を記憶する送信ノード数記憶部と、前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新する更新処理部と、前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較する比較部と、前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換える書換部を有し、前記送信先の計算ノードは、受信したデータに含まれる送信ノード数を含む前記制御データを、前記送信元の計算ノードに送信する制御データ送信部を有する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
また、通信制御装置において、前記通信制御装置を経由してデータを送信する送信元の計算ノードから、受信した制御データに含まれる送信ノード数に基づいて、送信間隔を調整して送信されるデータを入力する入力部と、前記通信制御装置を経由してデータを受信する送信先の計算ノードに送信するデータを出力する出力部と、前記通信制御装置を経由してデータを送信中の計算ノードの数を表す送信ノード数を記憶する送信ノード数記憶部と、前記出力部がデータを出力する場合、前記送信ノード数記憶部が記憶する送信ノード数を更新する更新処理部と、前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較する比較部と、前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換える書換部を有する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
さらに、通信制御装置と、前記通信制御装置を経由してデータを送信する送信元の計算ノードと、前記通信制御装置を経由してデータを受信する送信先の計算ノードとを、それぞれ複数備える計算機システムの制御方法において、前記送信元の計算ノードが有するデータ送信部が、前記送信先の計算ノードにデータを送信し、前記送信元の計算ノードが有する調整部が、受信した制御データに含まれる送信ノード数に基づいて、前記データ送信部が送信するデータ間の間隔を調整し、前記通信制御装置が有する入力部が、前記送信元の計算ノードが送信するデータを入力し、前記通信制御装置が有する送信ノード数記憶部が、前記通信制御装置を経由してデータを送信中の計算ノードの数を表す送信ノード数を記憶すると、前記通信制御装置が有する出力部が、前記送信先の計算ノードに送信するデータを出力し、前記出力部がデータを出力する場合、前記通信制御装置が有する更新処理部が、前記送信ノード数記憶部が記憶する送信ノード数を更新し、前記通信制御装置が有する比較部が、前記入力部が入力するデータに含まれる送信ノード数と、前記送信ノード数記憶部が記憶する送信ノード数を比較し、前記比較部による比較の結果、前記送信ノード数記憶部が記憶する送信ノード数が、前記入力部が入力するデータに含まれる送信ノード数より大きい場合、前記通信制御装置が有する書換部が、前記出力部が出力するデータに含まれる送信ノード数を、前記送信ノード数記憶部が記憶する送信ノード数に書き換え、  前記送信先の計算ノードが有する制御データ送信部が、受信したデータに含まれる送信ノード数を含む前記制御データを、前記送信元の計算ノードに送信する。
【国際調査報告】
2013098993.tif 000039
2013098993.tif 000040
2013098993.tif 000041
2013098993.tif 000042