(57)【特許請求の範囲】
【請求項１】
複数のノードがｎ次元（ｎは２以上の整数）でメッシュまたはトーラス接続されたネットワーク内の第１領域に含まれ、前記第１領域内での位置に応じた識別子が付与された複数の第１ノードから、前記ネットワーク内の第２領域に含まれ、前記第２領域内での位置に応じて、前記第１領域内の対応する位置の第１ノードと同じ識別子が付与された複数の第２ノードへのデータ転送を制御するデータ転送制御装置において、
前記複数のノードと通信する通信インタフェースと、
データ転送対象のノードに対して、前記通信インタフェースを介してデータ転送を指示する制御部と、を有し、
前記制御部は、
前記第１領域のサイズに応じた数を各軸方向の記号数とするｎ次元のラテン超方格を生成し、
前記第１領域内での前記複数の第１ノードそれぞれの位置に応じて、前記複数の第１ノードそれぞれに、前記ラテン超方格内の対応する位置の記号を対応付け、
前記ラテン超方格内の同じ種類の記号に対応付けられた第１ノード同士を纏めた複数の第１ノード群それぞれによる、送信元の第１ノード群内の各第１ノードから該第１ノードと同じ識別子の第２ノードへの並列データ転送を、第１ノード群単位で順番に実行するように、前記複数の第１ノードそれぞれに指示する、
ことを特徴とするデータ転送制御装置。
【請求項２】
前記ラテン超方格の生成では、前記第１領域内のｎ次元の各軸方向の幅のうち、最長の幅の軸方向に並べられた第１ノード数を、前記ラテン超方格の各軸方向の記号数とする、
請求項１記載のデータ転送制御装置。
【請求項３】
前記記号の対応付けでは、前記第１領域と前記第２領域との間で、少なくとも１つの軸方向の範囲が重複する場合、範囲が重複する該軸方向に、前記ラテン超方格を複数積み重ね、積み重ねられた前記ラテン超方格それぞれ内の記号を、前記第１領域内の前記複数の第１ノードに対応付ける、
請求項１または２記載のデータ転送制御装置。
【請求項４】
前記ラテン超方格の生成では、前記第１領域と前記第２領域との間で、少なくとも１つの軸方向の範囲が重複する場合、範囲が重複する該軸方向への前記第１領域と前記第２領域とのずれ幅と、前記第１領域内の該軸方向以外の方向の幅のうちの最長の幅とのうちの長い方の幅に応じた値を、前記ラテン超方格の各軸方向の記号数とする、
請求項３記載のデータ転送制御装置。
【請求項５】
前記記号の対応付けでは、前記第１領域を平行移動させ、所定の軸周りに時計回りまたは反時計回りに９０度回転させたときに前記第１領域が占めることとなる領域が前記第２領域となっている場合、前記第１領域のｎ次元の各軸方向の幅のうち、最長の幅の軸方向に、前記ラテン超方格を複数積み重ね、積み重ねられた前記ラテン超方格それぞれ内の記号を、前記第１領域内の前記複数の第１ノードに対応付ける、
請求項１乃至４のいずれかに記載のデータ転送制御装置。
【請求項６】
前記ラテン超方格の生成では、前記第１領域を平行移動させ、所定の軸周りに時計回りまたは反時計回りに９０度回転させたときに前記第１領域が占めることとなる領域が前記第２領域となっている場合、前記第１領域内のｎ次元の各軸方向の幅のうち、２番目に長い幅の軸方向に並べられた第１ノード数を、前記ラテン超方格の各軸方向の記号数とする、
請求項５記載のデータ転送制御装置。
【請求項７】
前記ラテン超方格の生成では、複数のラテン超方格を生成し、
前記記号の対応付けでは、前記第１領域と前記第２領域との間の通信経路上の通信状況に基づいて、前記複数のラテン超方格のうちの１つを、使用ラテン超方格として選択し、前記第１領域内での前記複数の第１ノードそれぞれの位置に応じて、前記複数の第１ノードそれぞれに前記使用ラテン超方格内の記号を対応付ける、
請求項１乃至６のいずれかに記載のデータ転送制御装置。
【請求項８】
前記指示では、前記複数の第１ノードそれぞれに対して、転送するデータの半分のデータを第１の経路で送信するように指示し、前記複数の第２ノードそれぞれに対して、転送するデータの残りの半分のデータを、前記複数の第１ノードそれぞれから、前記第１の経路とは別の第２の経路で取得するように指示する、
請求項１乃至７のいずれかに記載のデータ転送制御装置。
【請求項９】
複数のノードがｎ次元（ｎは２以上の整数）でメッシュまたはトーラス接続されたネットワーク内の第１領域に含まれ、前記第１領域内での位置に応じた識別子が付与された複数の第１ノードから、前記ネットワーク内の第２領域に含まれ、前記第２領域内での位置に応じて、前記第１領域内の対応する位置の第１ノードと同じ識別子が付与された複数の第２ノードへのデータ転送を制御するためのデータ転送制御プログラムにおいて、
コンピュータに、
前記第１領域のサイズに応じた数を各軸方向の記号数とするｎ次元のラテン超方格を生成し、
前記第１領域内での前記複数の第１ノードそれぞれの位置に応じて、前記複数の第１ノードそれぞれに、前記ラテン超方格内の対応する位置の記号を対応付け、
前記ラテン超方格内の同じ種類の記号に対応付けられた第１ノード同士を纏めた複数の第１ノード群それぞれによる、送信元の第１ノード群内の各第１ノードから該第１ノードと同じ識別子の第２ノードへの並列データ転送を、第１ノード群単位で順番に実行するように、前記複数の第１ノードそれぞれに指示する、
処理を実行させるデータ転送制御プログラム。
【請求項１０】
ｎ次元（ｎは２以上の整数）のメッシュまたはトーラス接続のネットワークに含まれる複数のノードと、
前記ネットワーク内の第１領域に含まれ、前記第１領域内での位置に応じた識別子が付与された複数の第１ノードから、前記ネットワーク内の第２領域に含まれ、前記第２領域内での位置に応じて、前記第１領域内の対応する位置の第１ノードと同じ識別子が付与された複数の第２ノードへのデータ転送を制御する制御ノードと、
を有する並列計算システムであって、
前記制御ノードは、
前記第１領域のサイズに応じた数を各軸方向の記号数とするｎ次元のラテン超方格を生成し、
前記第１領域内での前記複数の第１ノードそれぞれの位置に応じて、前記複数の第１ノードそれぞれに、前記ラテン超方格内の対応する位置の記号を対応付け、
前記ラテン超方格内の同じ種類の記号に対応付けられた第１ノード同士を纏めた複数の第１ノード群それぞれによる、送信元の第１ノード群内の各第１ノードから該第１ノードと同じ識別子の第２ノードへの並列データ転送を、第１ノード群単位で順番に実行するように、前記複数の第１ノードそれぞれに指示し、
前記複数の第１ノードそれぞれは、
前記制御ノードからの指示に従って、前記複数の第２ノードのうちの所定の第２ノードに対してデータを送信する、
並列計算システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送制御装置、データ転送制御プログラム、および並列計算システムに関する。
【背景技術】
【０００２】
ＩＣＴ（Information and Communication Technology）サービスを提供するノード（コンピュータ）を変更する技術として、マイグレーション技術がある。例えばＩＣＴサービスの負荷の増加に伴い、現在サービスを実行しているノードのすべてのプロセスを、より処理能力の高いノードに移動するノードマイグレーションがある。また、特定のプロセスのみを移動するプロセスマイグレーションもある。
【０００３】
いずれのマイグレーションの方式においても、移動元から移動先へ必要なメモリ上のデータ（マイグレーションデータ）の転送が行われる。一般的には、移動元ノードではマイグレーションデータを共有ディスク（二次記憶装置）に書き込み、移動先ノードではマイグレーションデータを共有ディスクから読み出し、メモリ上に展開することでマイグレーションが実現される。本方式では、マイグレーション処理は共有ディスクに対する入出力処理時間が大半を占めるため、マイグレーションに長い時間を要する。
【０００４】
近年では、より高速なマイグレーションとして、移動元から移動先へネットワークを介して直接マイグレーションデータを転送するディスクレスマイグレーションが実現されている。ディスクレスマイグレーションでは、移動元ノードと移動先ノードとが協調してマイグレーションを行う。このようなディスクレスマイグレーションは、ＨＰＣ（High Performance Computing）システムのように、特に高速な処理が要求されるシステムにおいて非常に有用である。
【０００５】
ＨＰＣシステムでは、高速なインターコネクトで接続された複数の計算ノードで、ジョブを並列処理する方式が一般化している。このようなシステムでは、並列処理過程において互いの計算ノードで使用するデータを、インターコネクトを通じて送受信するのに、例えばＭＰＩ（Message Passing Interface）が利用される。
【０００６】
特に大規模なＨＰＣシステムにおいては、トーラスやメッシュ接続のネットワークが利用されている。メッシュまたはトーラス接続のネットワークは、各ノードがルータを内蔵し、ノード間が直接接続されるため、直接網と呼ばれる。メッシュまたはトーラス接続のネットワークにおける並列ジョブは、例えば最小限の大きさのサブメッシュ（３次元であれば直方体領域）内のノード集合に割り当てられる。これは、ジョブ内のノード間通信が他のジョブへ影響するのを排除するためである。このようなＨＰＣシステムのマイグレーションでは、現行のサブメッシュのノード集合（移動元）から新たなサブメッシュのノード集合（移動先）に、マイグレーションデータが転送される。
【０００７】
データを並列で処理する際のデータ転送に関する技術としては、例えばアレイの相互接続配線の必要条件を実質的に低減する並列処理アーキテクチャがある。また、ワームホールルーティング技術を用いたメッシュ接続のマルチコンピュータにおける効率的なタスクマイグレーション技術も考えられている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００２−５０７３００号公報
【非特許文献】
【０００９】
【非特許文献１】Gwo-jong Yu, Chih-yung Chang, Tzung-shi Chen, "Task migration in n-dimensional wormhole-routed mesh multicomputers", Journal of Systems Architecture, March 2004, Volume 50, Issue 4, pp.177-192
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、移動元のノード集合から移動先のノード集合へのマイグレーションを行うと、隣接する複数のノードが一斉に大量のデータを送信することになり、通信の輻輳が発生しやすい。輻輳が発生すると、パケットロスによる再送信などの余計な処理が発生し、データの転送効率が低下する。なお、マイグレーションに限らず、あるサブメッシュ内のノード集合から他のサブメッシュ内のノード集合へ一斉にデータ転送を行う場合、輻輳の発生によりデータ転送効率が低下する。
【００１１】
１つの側面では、本件は、ノード集合間のデータ転送時の輻輳の発生を抑止することを目的とする。
【課題を解決するための手段】
【００１２】
１つの案では、複数のノードがｎ次元（ｎは２以上の整数）でメッシュまたはトーラス接続されたネットワーク内の第１領域に含まれる複数の第１ノードからネットワーク内の第２領域に含まれる複数の第２ノードへのデータ転送を制御するデータ転送制御装置が提供される。データ転送制御装置は複数のノードと通信する通信インタフェースと、データ転送対象のノードに対して、通信インタフェースを介してデータ転送を指示する制御部とを有する。制御部は、第１領域のサイズに応じた数を各軸方向の記号数とするｎ次元のラテン超方格を生成する。次に制御部は、第１領域内での複数の第１ノードそれぞれの位置に応じて、複数の第１ノードそれぞれに、ラテン超方格内の対応する位置の記号を対応付ける。そして制御部は、ラテン超方格内の同じ種類の記号に対応付けられた第１ノード同士を纏めた複数の第１ノード群それぞれによる並列データ転送を、第１ノード群単位で順番に実行するように、複数の第１ノードそれぞれに指示する。
【発明の効果】
【００１３】
１態様によれば、ノード集合間のデータ転送時の輻輳の発生を抑止できる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態に係る並列計算システムの構成例を示す図である。
【図２】並列計算システムの構成例を示す図である。
【図３】制御ノードのハードウェアの一構成例を示す図である。
【図４】計算ノードのハードウェア構成の一例を示す図である。
【図５】並列計算システム内の各装置の機能を示すブロック図である。
【図６】輻輳の発生状況を示す第１の例を示す図である。
【図７】輻輳の発生状況を示す第２の例を示す図である。
【図８】ラテン方格の例を示す図である。
【図９】ラテン方格を用いたマイグレーションデータの転送例を示す第１の図である。
【図１０】ラテン方格を用いたマイグレーションデータの転送例を示す第２の図である。
【図１１】サブメッシュの軸長が異なる場合のマイグレーションデータ転送例を示す図である。
【図１２】複数のラテン方格を積み重ねた場合の第１の例を示す図である。
【図１３】複数のラテン方格を積み重ねた場合の第２の例を示す図である。
【図１４】計算ノードの配置の回転を伴うマイグレーションの例を示す図である。
【図１５】生成するラテン方格のタイプを示す図である。
【図１６】マイグレーション処理の手順の一例を示すフローチャートである。
【図１７】ラテン方格生成処理の手順の一例を示すフローチャートである。
【図１８】マイグレーションデータ転送処理に用いる変数を示す図である。
【図１９】マイグレーションデータ転送処理の手順の一例を示すフローチャートである。
【図２０】３次元のメッシュまたはトーラス接続のネットワークの例を示す図である。
【図２１】ラテン超方格の一例を示す図である。
【図２２】第３の実施の形態におけるマイグレーションデータ転送手順を示すシーケンス図である。
【図２３】ノード割り当て管理表の一例を示す図である。
【図２４】広帯域転送管理表の一例を示す図である。
【図２５】ラテン方格選択処理の手順の一例を示す図である。
【図２６】通信干渉度合い評価処理の手順の一例を示すフローチャートである。
【図２７】第５の実施の形態におけるデータ通信経路の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る並列計算システムの構成例を示す図である。並列計算システムは、複数のノード１ａがｎ次元（ｎは２以上の整数）でメッシュまたはトーラス接続されたネットワーク１を含んでいる。ネットワーク１内のノードは、ノード間を接続するリンクと別に、データ転送制御装置１０に接続されている。データ転送制御装置１０は、ネットワーク１内での、複数の領域間のデータ転送を制御する。
【００１６】
データ転送制御装置１０は、データ転送を制御するために、通信インタフェース１１、制御部１２、および記憶部１３を有している。通信インタフェース１１は、ネットワーク１内の複数のノード１ａと通信する。制御部１２は、ネットワーク１内のデータ転送対象のノードに対して、通信インタフェース１１を介してデータ転送を指示する。記憶部１３は、データ転送制御に用いるラテン超方格を記憶する。
【００１７】
ラテン超方格とは、２次元のラテン方格をｎ次元に拡張したものである。２次元のラテン方格は、ｋ行ｋ列（ｋは２以上の整数）の表にｋ個の異なる記号を、各記号が各行および各列に１回だけ現れるように並べたものである。従って、ネットワーク１が２次元のメッシュまたはトーラス接続であれば、記憶部１３に記憶されるラテン超方格は、２次元のラテン方格１３ａとなる。
【００１８】
制御部１２は、例えば、第１領域２に含まれる複数の第１ノードから第２領域３に含まれる複数の第２ノードへのデータ転送制御指示を受けると、まずｎ次元のラテン超方格を生成する。なお第１領域２と第２領域３との形状とサイズは同じである。すなわち、第１領域２と第２領域３とは合同である。そのため、第１領域２と第２領域３とのそれぞれに含まれるノード数も同じである。例えば、第１領域２と第２領域３とのそれぞれに含まれるノード数がＫ個（Ｋは１以上の整数）の場合、第１領域２内の複数の第１ノードと第２領域３内の複数の第２ノードとの間で、Ｋ組の１対１通信が行われる。このような通信は、例えば並列ジョブのマイグレーション時に発生する。
【００１９】
生成されるラテン超方格の各軸方向の記号数は、第１領域２のサイズに応じた数である。例えば、制御部１２は、第１領域２内のｎ次元の各軸方向の幅のうち、最長の幅の軸方向に並べられた第１ノード数を、ラテン超方格の各軸方向の記号数とする。制御部１２は、生成したラテン超方格を、例えば記憶部１３に格納する。
【００２０】
ラテン超方格を生成後、制御部１２は、第１領域２内での複数の第１ノードそれぞれの位置に応じて、複数の第１ノードそれぞれに、ラテン超方格内の対応する位置の記号を対応付ける。例えば制御部１２は、第１領域２内の第１ノードの配列上に、ラテン超方格の記号を重ね合わせる。そして制御部１２は、第１ノードそれぞれの上に重ねられた記号を、その第１ノードに対応付ける。これにより、第１領域２内の同じ軸上に並んだ第１ノードには、異なる種類の記号が対応付けられる。
【００２１】
そして制御部１２は、ラテン超方格内の同じ種類の記号に対応付けられた第１ノード同士を纏めた複数の第１ノード群それぞれによる並列データ転送を、第１ノード群単位で順番に実行するように、複数の第１ノードそれぞれに指示する。
【００２２】
このようにして、第１領域２内の複数の第１ノードから第２領域３内の複数の第２ノードへのデータ転送が行われる。図１の例では、ネットワーク１が２次元のメッシュまたはトーラス接続である。この場合、生成されるラテン超方格は、２次元のラテン方格１３ａである。例えば第１領域２のサイズは、ｘ軸方向（図中横方向）とｙ軸方向（図中縦方向）にそれぞれノード３個分の幅である。この場合、生成されるラテン方格１３ａのサイズは、３行３列（各軸方向の記号数が「３」）である。図１の例では、ラテン方格１３ａに設定する記号として「０」、「１」、「２」の３種類が用いられている。ラテン方格１３ａでは、行方向と列方向とに並ぶ３つの記号は、常に異なる種類となる。
【００２３】
このようなラテン方格１３ａの記号が、第１領域２内の３×３のノードに対応付けられる。図１の例では、９個の第１ノードに「１」から「９」までの識別子が付与されている。識別子「１」、「５」、「９」の第１ノード群には、記号「０」が対応付けられている。識別子「２」、「６」、「７」の第１ノード群には、記号「１」が対応付けられている。識別子「３」、「４」、「８」の第１ノード群には、記号「２」が対応付けられている。このように３×３に配置された複数の第１ノードに、各第１ノードの位置に応じて、３×３のラテン方格１３ａ内の対応する位置の記号を対応付けることで、同じ軸方向に並ぶ３つの第１ノードには、常に異なる記号が対応付けられる。
【００２４】
第１領域２内の複数の第１ノードに対して、例えば、記号「０」に対応する第１ノード群、記号「１」に対応する第１ノード群、記号「２」に対応する第１ノード群の順で、第２領域３内の第２ノードへの並列データ転送の指示が、順番に出される。２番目以降にデータ転送を行う第１ノード群には、前の順番の第１ノード群によるデータ転送が完了した後にデータ転送を開始するように、指示が出される。図１の例では、複数の第２ノードにも、複数の第１ノードと同じ順に識別子が付与されている。すなわち、左下（ｘ座標、ｙ座標ともに最小の位置）のノードから、右（ｘ軸正の方向）に向かって昇順の番号が識別子として付与され、下の列のノードに識別子を付与後、その上の列のノードの左から右に向かって、昇順の番号が識別子として付与される。そして各第１ノードは、同じ識別子が付与された第２ノードに対してデータを送信する。
【００２５】
制御部１２からのデータ転送指示に基づいて、まず識別子「１」、「５」、「９」の第１ノード群が並列にデータを転送する（ｓｔｅｐ０）。次に識別子「２」、「６」、「７」の第１ノード群が並列にデータを転送する（ｓｔｅｐ１）。最後に識別子「３」、「４」、「８」の第１ノード群が並列にデータを転送する（ｓｔｅｐ２）。同じ第１ノード群内の第１ノードは、異なる経路でデータ転送を行う。並列にデータ転送を行う第１ノード群内の各第１ノードは、すべて異なる通信経路でデータを転送することができる。その結果、データ転送中の通信の輻輳が抑止され、効率的なデータ転送が可能となる。
【００２６】
なお、第１領域２と第２領域３との間で、少なくとも１つの軸方向の範囲が重複する場合がある。これは換言すると、第１領域２と第２領域３の位置のある軸方向のずれ量が、その軸方向の第１領域２の幅よりも小さい場合である。この場合、第１ノードへの記号の対応付けでは、範囲が重複する該軸方向に、ラテン超方格を複数積み重ね、積み重ねられたラテン超方格それぞれ内の記号を、第１領域内の複数の第１ノードに対応付けることができる。このとき、例えば、範囲が重複する軸方向への第１領域２と第２領域３とのずれ幅と、第１領域２内の範囲が重複する軸以外の軸方向の幅のうちの最長の幅とのうちの、長い方の幅に応じた値が、ラテン超方格の各軸方向の記号数となる。このように、ラテン超方格を積み重ねることで、ラテン超方格のサイズを小さくすることができる。ラテン超方格のサイズが小さくなれば、ラテン超方格に含まれる記号の種別が少なくなり、データ転送のステップ数も少なくなる。その結果、少ないステップ数でデータ転送が可能となり、データ転送効率が向上する。
【００２７】
また第２領域３が、第１領域２を所定の軸周り（例えばｘ−ｙ平面に垂直な軸周り）に回転させた配置となっている場合がある。例えば、第１領域２をｘ軸、ｙ軸方向に平行移動させ、時計回りまたは反時計回りに９０度回転させたときに第１領域２が占めることとなる領域が、第２領域３となる場合である。この場合、第１領域２のｎ次元の各軸方向の幅のうち、最長の幅の軸方向に、ラテン超方格を複数積み重ね、積み重ねられたラテン超方格それぞれ内の記号を、第１領域２内の複数の第１ノードに対応付けることができる。このとき、例えば、第１領域２内のｎ次元の各軸方向の幅のうち、２番目に長い幅の軸方向に並べられた第１ノード数が、ラテン超方格の各軸方向の記号数となる。これにより、小さいラテン方格を用いて、効率的なデータ転送が可能となる。
【００２８】
ラテン超方格の生成では、複数のラテン超方格を生成し、通信経路上の通信状況に基づいて、最も効率的にデータ転送が可能なラテン超方格を用いることもできる。この場合、複数のラテン超方格から選択された１つのラテン超方格内の記号が、第１領域２内での複数の第１ノードそれぞれの位置に応じて、複数の第１ノードそれぞれに対応付けられる。このように複数のラテン超方格から効率的なデータ転送が可能なラテン超方格を選択することで、データ転送効率を向上させることができる。
【００２９】
さらに、データ転送の指示を、複数の第１ノードと複数の第２ノードとのそれぞれに対して行うこともできる。この場合、制御部１２は、例えば、複数の第１ノードそれぞれに対して、転送するデータの半分のデータを第１の経路で送信するように指示する。また制御部１２は、例えば複数の第２ノードそれぞれに対して、転送するデータの残りの半分のデータを、複数の第１ノードそれぞれから、第１の経路とは別の第２の経路で取得するように指示する。これにより、１つの第１ノードから対応する第２ノードへのデータ転送が２つの経路で並列で実行される。その結果、データ転送効率を向上する。
【００３０】
なお、制御部１２は、例えばデータ転送制御装置１０が有するプロセッサにより実現することができる。また、記憶部１３は、例えばデータ転送制御装置１０が有するメモリにより実現することができる。
【００３１】
また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、メッシュまたはトーラス接続による並列計算システムにおける、ジョブの効率的なマイグレーションを実現するものである。
【００３２】
図２は、並列計算システムの構成例を示す図である。制御ノード１００が、ネットワーク２０を介して計算ノード群２００内の計算ノード２１０−１，２１０−２，２１０−３，・・・に接続されている。制御ノード１００は、計算ノード群２００で構成されたＨＰＣシステムを制御するコンピュータである。計算ノード群２００に含まれる各計算ノード２１０−１，２１０−２，２１０−３，・・・は、制御ノード１００からの指示に従ってジョブを実行するコンピュータである。
【００３３】
制御ノード１００は、計算ノード群２００内の１以上の計算ノードをジョブに割り当て、そのジョブの実行指示を、割り当てた計算ノードに送信する。また制御ノード１００は、ジョブの実行途中で、そのジョブを割り当てる計算ノードを変更できる。その場合、制御ノード１００は、ジョブを実行するタスクを、マイグレーションにより移動させる。ジョブのマイグレーションを行う場合、そのジョブのデータが、移行元の計算ノードから移行先の計算ノードに転送される。
【００３４】
計算ノード群２００内の各計算ノード２１０−１，２１０−２，２１０−３，・・・は、メッシュまたはトーラス接続でネットワークが組まれている。メッシュ接続の場合、計算ノード２１０−１，２１０−２，２１０−３，・・・が、ｎ次元（ｎは２以上の整数）の各軸方向に、並べられている。各計算ノード２１０−１，２１０−２，２１０−３，・・・は、各軸方向に隣接する他の計算ノードと高速のインターコネクトで接続されている。トーラス接続の場合、各軸方向の両端の計算ノード同士も、インターコネクトで接続されている。
【００３５】
図３は、制御ノードのハードウェアの一構成例を示す図である。制御ノード１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３６】
メモリ１０２は、制御ノード１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に利用する各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３７】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３８】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、制御ノード１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置（ＳＳＤ：Solid State Drive）を使用することもできる。
【００３９】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４０】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４１】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４２】
機器接続インタフェース１０７は、制御ノード１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００４３】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４４】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。第１の実施の形態に示した装置も、図３に示した制御ノード１００と同様のハードウェアにより実現できる。
【００４５】
制御ノード１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。制御ノード１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、制御ノード１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また制御ノード１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４６】
図４は、計算ノードのハードウェア構成の一例を示す図である。計算ノード２１０−１は、ＣＰＵ／メモリ部２０１とルータ２０２とを有している。ＣＰＵ／メモリ部２０１とルータ２０２とは、複数の通信インタフェース（ＮＩＣ）２０３で接続されている。他の計算ノード２１０−２，２１０−４，２１０−５も同様のハードウェア構成である。
【００４７】
直接網のネットワークでは、図４に示すように、各計算ノードは複数のＮＩＣ２０３を持つことが多い。図４の例では、４つのＮＩＣ２０３により、ＣＰＵ／メモリ部２０１とルータ２０２とが接続されている。これにより、ＣＰＵ／メモリ部２０１から送出可能な転送幅は、１つのＮＩＣ２０３の転送幅の４倍となる。一方、ルータ２０２から先は隣接する他の計算ノード２１０−２，２１０−４が複数存在することから、１対のルータ間の通信速度は、ＣＰＵ／メモリ部２０１から送出可能な転送幅より小さいことが普通である。つまり、特定の２つの計算ノード間の通信は、通信方向・通信手順が同じであれば、その通信速度はルータ間の通信速度に律速される。そこで、ルータ間の通信を伴うデータ転送を効率的に行うことが重要となる。
【００４８】
図５は、並列計算システム内の各装置の機能を示すブロック図である。制御ノード１００は、ジョブマネージャ１１０を有している。ジョブマネージャ１１０は、計算ノード２１０−１，２１０−２，２１０−３，・・・を用いたジョブの実行を制御する。例えばジョブマネージャ１１０は、投入されたジョブに対する計算ノードの割り当てや、ジョブを実行している計算ノードへのマイグレーション指示を行う。
【００４９】
ジョブマネージャ１１０は、マイグレーションの管理のために、マイグレーション情報記憶部１１１、移行先決定部１１２、ラテン方格生成部１１３、およびデータ転送管理部１１４を有する。
【００５０】
マイグレーション情報記憶部１１１は、マイグレーションに利用する情報を記憶する。例えばマイグレーション情報記憶部１１１は、マイグレーションさせるジョブの移行元の計算ノード集合、移行先の計算ノード集合、マイグレーションの実行順を表すラテン方格などを記憶する。例えばメモリ１０２の記憶領域の一部が、マイグレーション情報記憶部１１１として使用される。
【００５１】
移行先決定部１１２は、マイグレーションさせるジョブの移行先の計算ノードを決定する。例えば移行先決定部１１２は、メッシュまたはトーラス接続のネットワーク内から、ジョブの実行に利用する計算ノード数以上の、空きの計算ノードを包含するサブメッシュを検出する。サブメッシュは、２次元のメッシュまたはトーラス接続のネットワークであれば、長方形領域であり、３次元のメッシュまたはトーラス接続のネットワークであれば、直方体領域である。空きの計算ノードとは、現在ジョブを実行していない計算ノードである。そして移行先決定部１１２は、検出したサブメッシュ内の計算ノードを、移行先の計算ノード集合に決定する。移行先決定部１１２は、ジョブを現在実行している移行元の計算ノード集合を示す情報と、決定した移行先の計算ノード集合を示す情報とを、マイグレーション情報記憶部１１１に格納する。
【００５２】
ラテン方格生成部１１３は、マイグレーションの効率的な実行手順を表すラテン方格を生成する。ラテン方格生成部１１３は、生成したラテン方格を、マイグレーション情報記憶部１１１に格納する。
【００５３】
データ転送管理部１１４は、マイグレーションデータの転送を管理する。例えばデータ転送管理部１１４は、生成されたラテン方格の数値を、移行元の計算ノード集合の、サブメッシュ内での計算ノードに対応付けている。データ転送管理部１１４は、ラテン方格の数値を、その数値に対応付けられた計算ノードのマイグレーションデータの転送順に決定する。そして、データ転送管理部１１４は、移行元の各計算ノードのマイグレーションデータを、その計算ノードの転送順に従って順番に転送するように、移行元の各計算ノードに対してマイグレーションデータの転送指示を行う。
【００５４】
計算ノード２１０−１は、マイグレーション部２１１とジョブデータ記憶部２１２とを有している。マイグレーション部２１１は、制御ノード１００からの指示に応じて、ジョブのマイグレーションを行う。例えばマイグレーション部２１１は、実行しているジョブのマイグレーションの指示を受けると、そのジョブのデータをジョブデータ記憶部２１２から取得し、マイグレーションによる移行先の計算ノードに送信する。ジョブデータ記憶部２１２は、ジョブの実行に使用するデータを記憶する。ジョブデータ記憶部２１２は、例えば、計算ノード２１０−１のメモリである。計算ノード２１０−１以外の計算ノード２１０−２，２１０−３，・・・も、計算ノード２１０−１と同様の要素を有している。
【００５５】
なお、図５に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図５に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００５６】
このような並列計算システムにおいて、並列処理を行うジョブを実行する際には、そのジョブに対して、サブメッシュ内の計算ノード集合が割り当てられる。このジョブのマイグレーションでは、移行元の計算ノード集合内の各計算ノードから、移行先の計算ノード集合内の各計算ノードへ、データが送信される。その際、ジョブマネージャ１１０は、マイグレーション中の輻輳を抑制できるように、移行元の各計算ノードがデータを送信する順番を制御する。
【００５７】
ここで、マイグレーション中に輻輳が発生する原因について説明する。
図６は、輻輳の発生状況を示す第１の例を示す図である。図６では、２次元メッシュを持つインターコネクトにおいて、４×４のサブメッシュ３１内の計算ノード集合で実行されているジョブを、サブメッシュ３１をｘ軸方向に平行に移動させた位置の４×４のサブメッシュ３２内の計算ノード集合に移行する。
【００５８】
この例では、計算ノード３１ａのマイグレーションデータは、計算ノード３２ａに送信される。計算ノード３１ｂのマイグレーションデータは、計算ノード３２ｂに送信される。計算ノード３１ｃのマイグレーションデータは、計算ノード３２ｃに送信される。計算ノード３１ｄのマイグレーションデータは、計算ノード３２ｄに送信される。
【００５９】
図６の例では、移動元の計算ノード３１ａ〜３１ｄから移動先の計算ノード３２ａ〜３２ｄへ、一斉にマイグレーションデータの送信が開始されている。このようにｘ軸方向のみにマイグレーションデータを転送する場合において、移動元の計算ノード３１ａ〜３１ｄが一斉にマイグレーションデータの送信を開始すると、通信経路の途中で最大４多重の輻輳が生じる。
【００６０】
図７は、輻輳の発生状況を示す第２の例を示す図である。図７では、４×４のサブメッシュ３３内の計算ノード集合で実行されているジョブを、サブメッシュ３３をｘ軸方向とｙ軸方向とに平行に移動させた位置の４×４のサブメッシュ３４内の計算ノード集合に移行させる。この際のマイグレーションデータのルーディングは、ｘ軸方向、ｙ軸方向の順で行われるものとする。
【００６１】
この例では、計算ノード３３ａのマイグレーションデータは、計算ノード３４ａに送信される。計算ノード３３ｂのマイグレーションデータは、計算ノード３４ｂに送信される。計算ノード３３ｃのマイグレーションデータは、計算ノード３４ｃに送信される。計算ノード３３ｄのマイグレーションデータは、計算ノード３４ｄに送信される。計算ノード３３ｅのマイグレーションデータは、計算ノード３４ｅに送信される。計算ノード３３ｆのマイグレーションデータは、計算ノード３４ｆに送信される。計算ノード３３ｇのマイグレーションデータは、計算ノード３４ｇに送信される。
【００６２】
図７の例では、移動元の計算ノード３３ａ〜３３ｇから移動先の計算ノード３４ａ〜３４ｇへ、一斉にマイグレーションデータの送信が開始されている。このようにｘ軸方向とｙ軸方向とにマイグレーションデータを転送する場合において、各計算ノード３３ａ〜３３ｇが一斉にマイグレーションデータの送信を開始すると、ｘ軸方向の通信において最大４多重、ｙ軸方向の通信において最大４多重の輻輳が生じる。
【００６３】
通信経路の輻輳はネットワーク遅延やパケットロスを引き起こす主原因であり、結果として通信性能の大幅な劣化をまねく。
図６，図７に示したような通信経路の輻輳の発生を抑止するためには、通信を複数のステップに分けて、計画的に行う方法が考えられる。例えば図６においては、サブメッシュ３１内のｙ軸方向の列ごとに、順番にマイグレーションデータを送信すれば、輻輳の発生を抑止できる。すなわち、最初に、計算ノード３１ａと同じ列に属する４つの計算ノードが一斉にマイグレーションデータの転送を行い、その後、計算ノード３１ｂと同じ列に属する４つの計算ノードが一斉にマイグレーションデータの転送を行う。その後、同様に、計算ノード３１ｃと同じ列に属する４つの計算ノード、計算ノード３１ｄと同じ列に属する４つの計算ノードの順で、マイグレーションデータの転送を行う。これにより、輻輳なくデータ通信が可能となる。
【００６４】
しかし、図７のようにｘ軸方向とｙ軸方向とのデータ転送がある場合には、図６の場合と同じ方法ではｘ軸方向の通信では輻輳は発生しないが、ｙ軸方向の通信において輻輳が発生してしまう。
【００６５】
第２の実施の形態では、輻輳の発生を抑制するために、マイグレーション対象のジョブに割り当てられた計算ノード集合を、複数の計算ノード群に分け、計算ノード群ごとに、複数のステップで順番にデータ転送を行う。このとき、各通信ステップにおいて同時通信する計算ノード群において、ｘ軸座標値とｙ軸座標値とがすべて異なるようにする。また、ジョブに割り当てられた計算ノード集合内の各ノードは、いずれかのステップの一つに属するようにする。このような条件を満たすように、通信順を決定する方法として、ラテン方格を利用することができる。
【００６６】
図８は、ラテン方格の例を示す図である。ラテン方格４１〜４３は、ｋ行，ｋ列の表にｋ個の異なる記号を、各記号が各行、各列に１回だけ現れるように並べたものである（ｋは１以上の整数）。ラテン方格４１〜４３は、ラテン方陣とも呼ばれる。図８の例では、ラテン方格４１〜４３の記号として、１からｎまでの数値を用いている。
【００６７】
特に１行・１列が自然な順序で並んでいる場合を「標準形」という。例えばラテン方格４１，４２は、数値が０，１，２，３の順で並んでいるため、標準形である。
ｋ×ｋのラテン方格の組み合わせ数は、計算式「ｋ！（ｋ−１）！×ｉk」で求められる。ここで、ｉkは、ｉ1＝ｉ2＝ｉ3＝１，ｉ4＝４，ｉ5＝５６，ｉ6＝９４０８…である。４×４のラテン方格であれば、５７６通り生成できる。
【００６８】
このようなラテン方格を用いて、マイグレーションデータの転送順を決定すれば、通信の輻輳を抑止できる。すなわち、ラテン方格では、ｋ行，ｋ列の表にｋ種の記号が設定され、各種別の記号が各行、各列に１回だけしか現れない。その記号を、マイグレーションを行う計算ノード集合内の各計算ノードに対応付けると、同種の記号が対応付けられた計算ノード同士は、行と列が重なることがない。すると、同種の記号が対応付けられた計算ノード群を、同時通信する計算ノードとすることで、同時通信する計算ノード群において、ｘ軸座標値とｙ軸座標値とがすべて異なるようにすることができる。そして、マイグレーション対象の計算ノード群のすべてを包含できる最小限のサイズのラテン方格を生成すれば、通信の輻輳を発生させずに、最小限のステップ数でマイグレーションデータの転送が可能となる。
【００６９】
図９は、ラテン方格を用いたマイグレーションデータの転送例を示す第１の図である。図９の例では、４×４のサブメッシュ５１内の計算ノードで実行されているジョブを、４×４の別のサブメッシュ５２にマイグレーションによって移動させる。サブメッシュ５１，５２に含まれる計算ノードには、サブメッシュ５１，５２内での識別番号が付与されている。図９中、丸い図形が計算ノードを表し、その図形内の数値が、サブメッシュ５１，５２内での識別番号である。
【００７０】
このようなマイグレーションにおけるマイグレーションデータの転送を、ラテン方格４１を用いて行うものとする。その場合、ラテン方格４１内での各数値の位置が、移行元の各計算ノードのサブメッシュ５１内での位置に対応する。そして、ラテン方格４１の数値が、対応する計算ノードがマイグレーションデータを送信する順番を表す。
【００７１】
例えば最初のステップ（ｓｔｅｐ０）において、ラテン方格４１の「０」に対応する計算ノード（識別子「１」、「６」、「１１」、「１６」）が、マイグレーションデータを、サブメッシュ５２内の同じ識別子の計算ノードへ送信する。次のステップ（ｓｔｅｐ１）において、ラテン方格４１の「１」に対応する計算ノード（識別子「２」、「７」、「１２」、「１３」）が、マイグレーションデータを、サブメッシュ５２内の同じ識別子の計算ノードへ送信する。
【００７２】
図１０は、ラテン方格を用いたマイグレーションデータの転送例を示す第２の図である。さらに次のステップ（ｓｔｅｐ２）において、ラテン方格４１の「２」に対応する計算ノード（識別子「３」、「８」、「９」、「１４」）が、マイグレーションデータを、サブメッシュ５２内の同じ識別子の計算ノードへ送信する。最後のステップ（ｓｔｅｐ３）において、ラテン方格４１の「３」に対応する計算ノード（識別子「４」、「５」、「１０」、「１５」）が、マイグレーションデータを、サブメッシュ５２内の同じ識別子の計算ノードへ送信する。
【００７３】
このように、ラテン方格を用いることで、ｘ，ｙ座標の異なる複数の計算ノード（図９，図１０の例では対角線状）を同時通信単位としてマイグレーションデータを転送することができる。そして、ラテン方格の数値の数の分だけ、通信ステップを繰り返すことで、経路輻輳がなくかつ最小ステップ数で、マイグレーションデータの転送を実現することができる。
【００７４】
なお、図９に示したラテン方格４１は、標準形である。そのためｓｔｅｐ０で対角線方向の計算ノードがデータ転送を行った後、ステップを進めるごとに、通信する計算ノードを右（ｘ軸の正の方向）にシフトしていくことで、図９、図１０に示したような順番でのデータ転送を行うことができる。なお、右にシフトするとサブメッシュ５１の範囲を超える場合、逆側の最小位置の計算ノードが通信の対象となる。
【００７５】
通信を行う計算ノード群をシフトすることでｓｔｅｐ０〜３すべてにおいて、同時通信するすべてのノード群のｘ，ｙ座標が異なる。結果的に、図９、図１０に示す４×４のノード集合のマイグレーションデータの転送は、同時通信ノード数：４ノード、ステップ数：４で完了することができる。
【００７６】
１対の移動元・移動先ノード間の通信速度を１とした場合、各ステップにおける通信速度は経路輻輳を排除したため、維持される。一方、４回のステップに分けて転送するため、全ノードのマイグレーションデータ転送時間は、１対のノード間通信時間の４倍となる。このとき、通信の輻輳が発生しないことで、それ以上の大きな通信時間の劣化はなく、通信時間を短縮することができる。
【００７７】
なお、図９、図１０の例では、標準形のラテン方格４１を用いたため、ｓｔｅｐ０の同時通信を行う計算ノード群が対角線方向に並んでおり、その後の各ステップでも、その座標をシフトした位置の計算ノード群となっている。
【００７８】
次に、サブメッシュのｘ軸方向の幅とｙ軸方向の幅とが異なる場合について説明する。なお第２の実施の形態では、計算ノード間のｘ軸方向およびｙ軸方向の間隔は「１」であるものとする。この場合、サブメッシュのｘ軸方向の幅とｙ軸方向の幅とは、サブメッシュ内のｘ軸方向の計算ノード数と、ｙ軸方向の計算ノード数で表される。
【００７９】
図１１は、サブメッシュの軸長が異なる場合のマイグレーションデータ転送例を示す図である。図１１には、ｘ軸方向に幅「４」（計算ノード４つ分）、ｙ軸方向に幅「５」（計算ノード５つ分）のサブメッシュ５３内の計算ノードが割り当てられたジョブを、同様に４×５のサブメッシュ５４内の計算ノードにマイグレーションする場合の例が示されている。このように軸長が異なる場合、ラテン方格生成部１１３は、最も長い軸（最長軸）の長さに合わせたラテン方格を生成する。図１１の例では、５×５のラテン方格４４が生成される。
【００８０】
この場合、サブメッシュ５３，５４を含む５×５の領域の計算ノードに対して、ラテン方格４４の各数値が対応付けられる。その際、ラテン方格４４の最も右側の列は使用されない。すなわち、その列の数値は、サブメッシュ５３，５４内の計算ノードに対応付けられない。サブメッシュ５３内の計算ノードは、ラテン方格４４内の対応する数値に応じた順番で、マイグレーションデータを転送する。例えば最初のステップ（ｓｔｅｐ０）では、サブメッシュ５３内の識別子「１」、「６」、「１１」、「１６」の計算ノードが、一斉にマイグレーションデータを送信する。
【００８１】
図１１の例では、５×５のラテン方格４４を用いているため、すべてのマイグレーションデータを転送するのに、５ステップを要する。サブメッシュの軸長が異なる場合において、所定の条件を満たす場合には、より少ないステップ数でマイグレーションデータの転送を完了させることもできる。例えば、移動元の計算ノード集合を表すサブメッシュと、移動先の計算ノード集合を表すサブメッシュとの間で、サブメッシュの長い方の軸において重複する範囲がある場合、複数のラテン方格を積み重ねることで、ステップ数を減らすことが可能である。
【００８２】
図１２は、複数のラテン方格を積み重ねた場合の第１の例を示す図である。移動元の計算ノード集合と、移動先の計算ノード集合との間で、いずれか１軸方向で座標の重なりがある場合、２つのラテン方格を積み上げて、マイグレーションデータの転送に要するステップ数を削減できる。
【００８３】
積み上げるラテン方格は、重なりがある軸方向のサブメッシュ５５，５６のずれ幅と、重なりがない軸方向の、サブメッシュ５５，５６の幅との大きい方の幅（Ｍａｘ（ｘ，ｙ））に応じたサイズとなる。図１２には、４×１０のサブメッシュ５５内の計算ノードから、同じサイズの４×１０のサブメッシュ５６内の計算ノードへのマイグレーションを行う場合の例を示している。移行元のサブメッシュ５５と移行先のサブメッシュ５６は、ｙ軸方向の範囲が重複する。ｙ軸方向のずれ幅は、「３」（３ノード分）である。この場合、各サブメッシュ５５，５６のｘ軸方向の幅「４」と、ｙ軸方向のずれ幅「３」と、の大きい方の値（Ｍａｘ（４，３）＝４）に応じた、４×４のラテン方格４１が生成される。そして、ラテン方格４１が３つ積み重ねられ、サブメッシュ５５，５６内の各計算ノードと対応付けられる。これにより、サブメッシュ５５，５６内のすべての計算ノードを、ラテン方格４１内のいずれかの数値と対応付けることができる。
【００８４】
そして、ラテン方格の数値の順番に、各数値に対応する計算ノードが、マイグレーションデータを送信する。例えば最初のステップ（ｓｔｅｐ０）では、識別子「２」、「７」、「１２」、「１３」、「１８」、「２３」、「２８」、「２９」、「３４」、「３９」の各計算ノードが、一斉にマイグレーションデータを送信する。その後、ラテン方格４１の数値に従って、その数値に対応する計算ノードがデータ送信を行うことで、４ステップでマイグレーションデータの転送を完了することができる。
【００８５】
図１３は、複数のラテン方格を積み重ねた場合の第２の例を示す図である。図１３には、４×１１のサブメッシュ５７内の計算ノードから、同じサイズの４×１１サブメッシュ５８内の計算ノードへのマイグレーションを行う場合の例を示していている。移行元のサブメッシュ５７と移行先のサブメッシュ５８は、ｙ軸方向の範囲が重複する。ｙ軸方向のずれ幅は、「５」（５ノード分）である。この場合、各サブメッシュ５７，５８のｘ軸方向の幅「４」と、ｙ軸方向のずれ幅「５」と、の大きい方の値（Ｍａｘ（４，５）＝５）に応じた、５×５のラテン方格４４が生成される。そして、ラテン方格４４が３つ積み重ねられ、サブメッシュ５７，５８内の各計算ノードと対応付けられる。これにより、サブメッシュ５７，５８内のすべての計算ノードを、ラテン方格４４内のいずれかの数値と対応付けることができる。
【００８６】
そして、ラテン方格の数値の順番に、各数値に対応する計算ノードが、マイグレーションデータを送信する。例えば最初のステップ（ｓｔｅｐ０）では、識別子「１」、「６」、「１１」、「１６」、「２１」、「２６」、「３１」、「３６」、「４１」の各計算ノードが、一斉にマイグレーションデータを送信する。その後、ラテン方格４４の数値に従って、その数値に対応する計算ノードがデータ送信を行うことで、５ステップでマイグレーションデータの転送を完了することができる。
【００８７】
次に、マイグレーションの際に、計算ノードの配置を回転させる場合について説明する。
図１４は、計算ノードの配置の回転を伴うマイグレーションの例を示す図である。図１４の例は、ジョブに割り当てる計算ノード集合の配置を、マイグレーション時に時計回りに９０度回転させている。この場合、移行元のサブメッシュ５９におけるマイグレーションのデータの送信順を示すラテン方格４１に対し、数値の配置を時計周りに９０度回転させたラテン方格４５が生成される。このラテン方格４５が、移行先のサブメッシュ６０内の計算ノードのデータ受信順を表している。このように、ラテン方格４１，４５を用いれば、計算ノードの配置が回転していても、輻輳の発生を抑止して、マイグレーションを行うことができる。
【００８８】
なお、計算ノードの配置の回転は、移行元のサブメッシュのｘ軸方向とｙ軸方向との軸長が異なる場合に、特に有効である。すなわち回転が共用されることで、マイグレーションをする際の移行先のサブメッシュの探索において、移行元のサブメッシュの平行移動と回転とを組み合わせて得られる、空き計算ノードの集合を包含するサブメッシュが探索される。これにより、移行元のサブメッシュを平行移動することで得られるサブメッシュだけを探索対象とする場合に比べて、移行先のサブメッシュを検出できる可能性が高くなる。
【００８９】
これまでに説明したように、ラテン方格を用いたマイグレーションデータの転送方式には、複数の方法が考えられる。ラテン方格を生成する際には、最もデータ転送を効率的に行うことができるラテン方格が生成される。どのようなラテン方格が適切なのかは、回転の有無と、移行元と移行先とのサブメッシュ同士の長軸座標の重複の有無とに基づいて判断される。
【００９０】
図１５は、生成するラテン方格のタイプを示す図である。タイプ１は、計算ノードの配置の回転がなく、移行元のサブメッシュと移行先のサブメッシュとの長軸方向の範囲の重複がない場合である。この場合、移行元のサブメッシュの長軸方向の計算ノード数を、行および列の記号数とするラテン方格が生成される。
【００９１】
タイプ２は、計算ノードの配置の回転がなく、移行元のサブメッシュと移行先のサブメッシュとの長軸方向の範囲の重複がある場合である。この場合、移行元のサブメッシュと移行先のサブメッシュとの長軸方向のずれ幅と、移行元のサブメッシュの短軸方向の幅との大きい方の値が求められ、その値を行および列の記号数とするラテン方格が生成される。そして生成されたラテン方格が積み重ねられる。
【００９２】
タイプ３は、計算ノードの配置の回転がある場合である。この場合、移行元のサブメッシュの短軸方向の計算ノード数を、行および列の記号数とするラテン方格が生成される。そして生成されたラテン方格が積み重ねられる。
【００９３】
次に、ラテン方格を用いた効率的なマイグレーション処理の手順について説明する。
図１６は、マイグレーション処理の手順の一例を示すフローチャートである。マイグレーション処理は、例えば、ジョブのマイグレーション指示が入力されたときに実行される。
【００９４】
［ステップＳ１０１］移行先決定部１１２は、マイグレーションするジョブの移行先とする計算ノード集合を検索する。例えば移行先決定部１１２は、ジョブの並列度に応じ、そのジョブに割り当てる計算ノード数を判断する。次に移行先決定部１１２は、割り当てる計算ノード数分の空き計算ノードを包含するサブメッシュ（矩形の領域）を検索する。該当するサブメッシュが複数検出できた場合、移行先決定部１１２は、例えば、ジョブに現在割り当てられている計算ノード集合と、位置が近いサブメッシュを選択する。そして移行先決定部１１２は、選択したサブメッシュに含まれる計算ノード集合を、マイグレーションによるジョブの移行先に決定する。移行先決定部１１２は、決定した移行先の計算ノード集合を示す情報を、マイグレーション情報記憶部１１１に格納する。例えば移行先決定部１１２は、計算ノード集合を包含するサブメッシュの各軸方向の範囲（下限と上限）を示す情報を、マイグレーション情報記憶部１１１に格納する。
【００９５】
［ステップＳ１０２］ラテン方格生成部１１３は、マイグレーションデータの転送順を表すラテン方格を生成する。ラテン方格生成処理の詳細は後述する（図１７参照）。
［ステップＳ１０３］データ転送管理部１１４は、生成されたラテン方格を用いて、移行元の計算ノード集合から移行先の計算ノード集合へ、マイグレーションデータの転送処理を行う。マイグレーションデータ転送処理の詳細は後述する（図１９参照）。
【００９６】
次に、ラテン方格生成処理の手順について詳細に説明する。
図１７は、ラテン方格生成処理の手順の一例を示すフローチャートである。
［ステップＳ１１１］ラテン方格生成部１１３は、移行元の計算ノード集合と移行先の計算ノード集合とを比較し、マイグレーション時に計算ノードの配置を回転させるか否かを判断する。例えばラテン方格生成部１１３は、移行元と移行先とのサブメッシュの各軸方向の長さが異なっており、移行元のサブメッシュの最長軸と移行先のサブメッシュの最長軸とが異なる場合、回転をするものと判断する。計算ノードの配列を回転させる場合、処理がステップＳ１１２に進められる。計算ノードの配列を回転させない場合、処理がステップＳ１１３に進められる。
【００９７】
［ステップＳ１１２］ラテン方格生成部１１３は、最も短い軸方向の幅（Ｍｉｎ（ｘ，ｙ））を行と列の記号数とするラテン方格を生成する。そして、ラテン方格生成部１１３は、生成したラテン方格と同一の複数のラテン方格を積み重ねる。その後、ラテン方格生成部１１３は、生成したラテン方格をマイグレーション情報記憶部１１１に格納し、ラテン方格生成処理を終了する。
【００９８】
［ステップＳ１１３］ラテン方格生成部１１３は、回転させない場合、移行元のサブメッシュと移行先のサブメッシュとで、長軸方向の範囲に重複があるか否かを判断する。重複がある場合、処理がステップＳ１１５に進められる。重複がない場合、処理がステップＳ１１４に進められる。
【００９９】
［ステップＳ１１４］ラテン方格生成部１１３は、最も長い軸方向の幅（Ｍａｘ（ｘ，ｙ））を行と列の記号数とするラテン方格を生成する。その後、ラテン方格生成部１１３は、生成したラテン方格をマイグレーション情報記憶部１１１に格納し、ラテン方格生成処理を終了する。
【０１００】
［ステップＳ１１５］ラテン方格生成部１１３は、移行元と移行先とのサブメッシュ間の長軸方向のずれ幅と短軸の幅との長い方の幅を、行と列の記号数とするラテン方格を生成する。そして、ラテン方格生成部１１３は、生成したラテン方格と同一の複数のラテン方格を積み重ねる。その後、ラテン方格生成部１１３は、生成したラテン方格をマイグレーション情報記憶部１１１に格納し、ラテン方格生成処理を終了する。
【０１０１】
次に、マイグレーションデータ転送処理について詳細に説明する。
図１８は、マイグレーションデータ転送処理に用いる変数を示す図である。マイグレーションデータを転送する場合、データ転送管理部１１４は、マイグレーション情報記憶部１１１から、移行元のサブメッシュ６１を示す情報と、移行先のサブメッシュ６２を示す情報とを取得する。
【０１０２】
移行元のサブメッシュ６１を示す情報には、例えば、サブメッシュ６１内の、ｘ座標値とｙ座標値とが最小である計算ノード６１ａの座標（ｘs0，ｙs0）と、ｘ座標値とｙ座標値とが最大である計算ノード６１ｂの座標（ｘsm，ｙsm）とが含まれる。計算ノード６１ａの座標（ｘs0，ｙs0）と計算ノード６１ｂの座標（ｘsm，ｙsm）とにより、サブメッシュ６１のｘ軸方向の範囲が「ｘs0」から「ｘsm」であり、ｙ軸方向の範囲が「ｙs0」から「ｙsm」であることが分かる。サブメッシュ６１のｘ軸方向の幅ｘszは、「ｘsz＝ｘsm−ｘs0＋１」で求められる。サブメッシュ６１のｙ軸方向の幅ｙszは、「ｙsz＝ｙsm−ｙs0＋１」で求められる。
【０１０３】
同様に、移行先のサブメッシュ６２を示す情報には、例えば、サブメッシュ６２内の、ｘ座標値とｙ座標値とが最小である計算ノード６２ａの座標（ｘr0，ｙr0）と、ｘ座標値とｙ座標値とが最大である計算ノード６２ｂの座標（ｘrm，ｙrm）とが含まれる。計算ノード６２ａの座標（ｘr0，ｙr0）と計算ノード６２ｂの座標（ｘrm，ｙrm）とにより、サブメッシュ６２の領域が特定できると共に、サブメッシュ６２のｘ軸・ｙ軸方向の幅を算出できる。
【０１０４】
図１８には、計算ノードの配置の回転がなく、サブメッシュ６１，６２間の長軸方向の重なりがない例が示されている。この場合、サブメッシュ６１のｘ軸方向の幅とｙ軸方向の幅とのうちの小さい方の値「Ｍｉｎ（ｘsz，ｙsz）」が、１ステップ当たりの同時送信計算ノード数（同時通信数）となる。また、サブメッシュ６１のｘ軸方向の幅とｙ軸方向の幅とのうちの大きい方の値「Ｍａｘ（ｘsz，ｙsz）」が、ステップ数となる。例えば、最初のステップ（ｓｔｅｐ０）では、識別子「１」、「６」、「１１」、「１６」の計算ノードが、一斉にデータを送信する。２番目のステップ（ｓｔｅｐ１）では、識別子「２」、「７」、「１２」、「１７」の計算ノードが、一斉にデータを送信する。３番目のステップ（ｓｔｅｐ２）では、識別子「３」、「８」、「１３」、「１８」の計算ノードが、一斉にデータを送信する。４番目のステップ（ｓｔｅｐ３）では、識別子「４」、「９」、「１４」、「１９」の計算ノードが、一斉にデータを送信する。５番目のステップ（ｓｔｅｐ４）では、識別子「５」、「１０」、「１５」、「２０」の計算ノードが、一斉にデータを送信する。
【０１０５】
このような処理を、フローチャートで表すと、図１９のようになる。
図１９は、マイグレーションデータ転送処理の手順の一例を示すフローチャートである。
【０１０６】
［ステップＳ１２１］データ転送管理部１１４は、実行するステップ番号ｍ（ｍは０以上の整数）を０から１ずつ増加させながら、ステップ数分Ｍ（＝Ｍａｘ（ｘsz，ｙsz））だけ、ステップＳ１２２〜Ｓ１２５の処理を繰り返す。
【０１０７】
［ステップＳ１２２］データ転送管理部１１４は、同時通信数分Ｎ（＝Ｍｉｎ（ｘsz，ｙsz）だけ、ステップＳ１２３の処理を繰り返す。
［ステップＳ１２３］データ転送管理部１１４は、ｍ番目のステップにおけるノード間のデータ転送を行う。例えばデータ転送管理部１１４は、ｍ番目のステップでマイグレーションデータを送信する計算ノードに対して、マイグレーションデータの送信を指示する。マイグレーションデータの送信指示には、例えば、マイグレーションデータの送信先の計算ノードの識別子（例えばネットワーク上の位置を示す座標値）が含まれる。このような送信指示が、ｎ番目のステップにいてマイグレーションデータの送信を行う計算ノードそれぞれに対して行われる。
【０１０８】
［ステップＳ１２４］データ転送管理部１１４は、ｍ番目のステップにおけるノード間のデータ転送を行うすべての計算ノードがデータ送信を開始すると、処理をステップＳ１２５に進める。
【０１０９】
［ステップＳ１２５］データ転送管理部１１４は、ｍ番目のステップにおけるノード間のデータ転送（同時通信）が完了したか否かを判断する。例えばデータ転送管理部１１４は、マイグレーションデータを送信したすべての計算ノードから、データ転送完了の通知を受信すると、同時通信が完了したものと判断する。同時通信が完了した場合、処理がステップＳ１２６に進められる。同時通信が完了していなければ、完了するまでステップＳ１２５の処理が繰り返される。
【０１１０】
［ステップＳ１２６］データ転送管理部１１４は、ステップ数分の処理が完了したら、マイグレーションデータ転送処理を終了する。
以上のようにして、ジョブのマイグレーション時に、通信の輻輳の発生を抑止することができ、効率的なマイグレーションが可能となる。
【０１１１】
なお、上記の例は、ネットワークが２次元のメッシュまたはトーラス接続の例であるが、３次元のメッシュまたはトーラス接続のネットワークにも同様に適用できる。
図２０は、３次元のメッシュまたはトーラス接続のネットワークの例を示す図である。３次元接続のネットワークでは、ジョブに、直方体状のサブメッシュ６３内の計算ノード集合が割り当てられる。そのジョブのマイグレーションを行う場合、移行先として、同様に直方体状のサブメッシュ６４内の計算ノード集合が決定される。３次元接続の場合であっても２次元と同様、同一ステップでデータ通信をする計算ノードのｘ軸、ｙ軸、ｚ軸の座標値が重複しないようにすれば、輻輳の発生を抑止できる。
【０１１２】
図２０の例では、４×４×４の３次元のサブメッシュ６３内の計算ノード集合から、サブメッシュ６４内の計算ノード集合へジョブのマイグレーションを行うものである。この例では、平面６３ａ，６３ｂ上の計算ノードであれば、ｘ軸、ｙ軸、ｚ軸の座標値が重複せず、同時に通信を行っても、輻輳は発生しない。
【０１１３】
４×４×４の３次元のサブメッシュ６３内の計算ノード集合で実行されているジョブのマイグレーションでは、同時通信可能な計算ノード数は１６ノードで、必要な通信ステップ数は４である。各ノードの通信ステップ番号を割り当てると、ｎ次元座標の任意の２軸の組み合わせ面（ｘｙ面、ｘｚ面、ｙｚ面）でラテン方格の関係がある。このような関係をラテン超方格という。つまり、ｎ次元においてもラテン超方格の同一記号のノード群の通信を繰り返すことによって、各ステップにおける通信経路の重複・輻輳なくマイグレーションデータを移動元ノード群から移動先ノード群へ移動することができる。
【０１１４】
図２１は、ラテン超方格の一例を示す図である。図２１に示すように、ラテン超方格は、ｘｙ面、ｘｚ面、ｙｚ面のいずれかに平行な任意の面上の数値が、ラテン方格となっている。なお、図２１に示したのは４×４×４のラテン超方格の一例であり、ラテン超方格となる記号の組み合わせは複数存在する。
【０１１５】
このように、ラテン超方格を用いることで、ｎ次元のメッシュまたはトーラス接続のネットワークにおいて、ジョブのマイグレーションを効率的に行うことができる。例えばＴｏｆｕ（Torus Fusion）インターコネクトと呼ばれる６次元のメッシュ／トーラス接続のネットワークにも適用できる。すなわち、ｎ次元の直接網（メッシュ接続またはトーラス接続など）を持つＨＰＣにおいて、直方体ノード群で並列実行されるジョブのディスクレスマイグレーション時に、移動元・先間のマイグレーションデータを効率的に転送・移動することが可能となる。
【０１１６】
〔第３の実施の形態〕
次に第３の実施の形態について説明する。第３の実施の形態は、ジョブマネージャが通信順を確定し、そのデータ転送の実行のコントロールについては、マイグレーションデータを転送する計算ノード集合自らが行うものである。以下、第３の実施の形態における、第２の実施の形態との相違点について説明する。
【０１１７】
図２２は、第３の実施の形態におけるマイグレーションデータ転送手順を示すシーケンス図である。
［ステップＳ２１０］制御ノード１００のジョブマネージャ１１０は、ラテン方格を用いて、マイグレーションの移行元の計算ノードのデータ送信順を決定する。例えばジョブマネージャ１１０は、移動元と移動先とのサブメッシュの形状、位置情報、回転の有無から、適切なラテン方格を作成し、各ステップにおける同時通信ノード群を決定する。ラテン方格の作成処理は、図１７に示した第２の実施の形態の処理と同様である。
【０１１８】
図２２の例では、（ｓｔｅｐ０）で同時通信を行う計算ノード群３１０，（ｓｔｅｐ１）で同時通信を行う計算ノード群３２０，・・・，（ｓｔｅｐＮ）で同時通信を行う計算ノード群３３０が決定されている。
【０１１９】
［ステップＳ２１１］ジョブマネージャ１１０は、送信元のすべての計算ノードに対して、通信順情報を通知する。通信順情報には、例えば、送信先の計算ノード、属する通信ステップ番号、および全体の通信ステップ数が含まれる。
【０１２０】
［ステップＳ２１２〜Ｓ２１４］各計算ノードは、通信順情報を受信後、バリア同期待ち状態に遷移する。
［ステップＳ２１５］全計算ノードにおいてバリア同期の完了後、通信ステップ番号（ｓｔｅｐ０）の計算ノード群３１０内の各計算ノードが、マイグレーションデータの送信信処理を行う。
【０１２１】
［ステップＳ２１６］計算ノード群３１０内の各計算ノードは、マイグレーションデータを送信後、バリア同期待ち状態に遷移する。
［ステップＳ２１７，Ｓ２１８］通信ステップ番号（ｓｔｅｐ０）に属さない計算ノードは、再度バリア同期待ち状態に遷移する。
【０１２２】
［ステップＳ２１９］通信ステップ番号（ｓｔｅｐ０）の通信が完了し、全計算ノードのバリア同期が再度完了すると、通信ステップ番号（ｓｔｅｐ１）の計算ノード群３２０内の各計算ノードが、マイグレーションデータの送信処理を行う。その後、同様に、バリア同期とステップごとのデータ送信とが繰り返される。
【０１２３】
［ステップＳ２２０］通信ステップ番号（ｓｔｅｐＮ−１）の通信が完了し、全計算ノードのバリア同期が再度完了すると、通信ステップ番号（ｓｔｅｐＮ）の計算ノード群３３０内の各計算ノードが、マイグレーションデータの送信処理を行う。
【０１２４】
［ステップＳ２２１］通信ステップ番号（ｓｔｅｐＮ）の通信が完了すると、計算ノード群３３０内のいずれかの計算ノードが、制御ノード１００に対して、マイグレーションデータ転送処理の完了を通知する。
【０１２５】
このようにして、計算ノードに、効率的なマイグレーションデータの転送を、自律的に実行させることができる。
〔第４の実施の形態〕
次に、第４の実施の形態について説明する。第４の実施の形態は、マイグレーションデータ転送時の経路上の通信状況に応じて、複数のラテン方格の中から、効率的に通信可能なラテン方格を選択し、データ転送に適用するものである。以下、第４の実施の形態における、第２の実施の形態との相違点について説明する。
【０１２６】
直接網（トーラスやメッシュ）接続において、ジョブは必要最小限の直方体に割り当てるが、ジョブマイグレーションにおいては、他のジョブが実行している領域を通過する必要がある。第２または第３の実施の形態では、マイグレーションデータの転送において、通過ノードで行われている通信の影響を考慮していない。
【０１２７】
そこで第４の実施の形態では、制御ノード１００はマイグレーションデータの転送を行う前に、マイグレーションデータを通信する経路上に存在するマイグレーションジョブ以外の通信状況を取得する。そして、制御ノード１００は、通信衝突が最も小さくなるラテン方格を選択する。つまり制御ノード１００のラテン方格生成部１１３は、複数のラテン方格から適切なラテン方格を選択する最適化処理を行う。例えばラテン方格生成部１１３が次の２つの処理を行うことで、マイグレーションのデータ転送順序が最適化される。
（１）複数の「ラテン方格」の選び方で性能差がありうる場合を検出する処理。
（２）複数の「ラテン方格」から、最適なものを選ぶ処理。
【０１２８】
マイグレーションデータの転送量は１ノード当たり数ＧＢから数十、数百ＧＢに達することが想定される。そのため、通信経路の通信帯域をほぼ使い切るものと想定する。つまり通信経路上に別の通信が存在する場合にはマイグレーションデータの転送速度に影響する。ラテン方格の各記号（番号）に従った通信を順に行っている最中に、経路上の通信状況が変化する場合には、適切な順序を選択することによって最適化の余地がある。
【０１２９】
第４の実施の形態では、経路上の通信状況の変化要因となる情報をジョブマネージャ１１０で管理する。経路上の通信状況の変化要因としては、例えば以下の（要因ａ）、（要因ｂ）の要因がある。
【０１３０】
（要因ａ）通信予定経路上でジョブに割り当てられるノード配置が変化する。
ジョブに割り当てられるノード配置が、マイグレーションにより変化する場合、ジョブマネージャ１１０は単位時間ごとに各ノードにどのジョブを割り当てるかを定めた予定表（ノード割り当て管理表）を保持する。
【０１３１】
図２３は、ノード割り当て管理表の一例を示す図である。ジョブマネージャ１１０は各ジョブに対して割り当てる計算ノード集合を示すサブメッシュ（３次元であれば直方体領域）を決定する。そしてジョブマネージャ１１０は、割り当てる計算ノード集合の各軸の座標の最小値と最大値を保持したノード割り当て管理表７１ａ，・・・，７１ｎを、割り当ての単位となる時間帯ごとに生成し、メモリ１０２に格納する。
【０１３２】
（要因ｂ）通信予定経路上で、通信予定時間帯内に他のマイグレーションやメモリダンプの転送などの通信リンクのバンド幅を限界近くまで使う転送（以下「広帯域転送」と呼ぶ）が並列に行われる。
【０１３３】
「広帯域転送」の通信についても予定表（広帯域転送管理表）が、メモリ１０２に保持されているものとする。広帯域転送管理表には、例えばシステムによって生じるジョブ外の転送についても保持されるものとする。
【０１３４】
図２４は、広帯域転送管理表の一例を示す図である。Ｎ次元のメッシュ／トーラスネットワークで、所定の軸順でルーティングを行っている場合（例えばｘ軸、ｙ軸、ｚ軸の順）、２つの計算ノード対の間での通信経路は、最大Ｎ−１回の方向転換を含む。そのため、通信経路が、軸ごとのＮ個の直線経路に分解して管理される。図２４の例では、広帯域転送管理表７２には、予定されている通信の識別子（通信ＩＤ）ごとに、通信の開始時刻、通信量、および第１軸から第Ｎ軸までの軸ごとの通信経路が設定されている。
【０１３５】
第４の実施の形態では、以上の（要因ａ）と（要因ｂ）とがあることを前提とし、ジョブ外（ジョブに割り当てられた計算ノード集合以外）の通信が、広帯域転送管理表で管理されているものとする。すなわち、ジョブマネージャ１１０内に、「広帯域転送」の通信管理を行うコンポーネントが用意されている。例えば、広帯域転送を行う各々のジョブは、ジョブマネージャ１１０に対し、通信で使用する経路を通信開始前に通知する。ジョブマネージャ１１０は、通知内容に応じて、広帯域転送の通信内容を、広帯域転送管理表７２に登録する。
【０１３６】
次に、マイグレーションで使用するラテン方格の選択処理手順について説明する。
図２５は、ラテン方格選択処理の手順の一例を示す図である。
［ステップＳ３０１］ジョブマネージャ１１０は、通信干渉がない場合のマイグレーション終了予定時刻を求める。例えば、ジョブマネージャ１１０は、マイグレーション開始予定時刻Ｓ0に対し、他のジョブや「広帯域転送」との通信干渉がない場合のマイグレーション終了予定時刻Ｔ0を以下の式で求める。
Ｔ0＝Ｓ0＋Σマイグレーションデータ転送の経路ごとの通信データ量／転送バンド幅
マイグレーションデータ転送の経路は、例えばｘ軸方向の経路、ｙ軸方向の経路、ｚ軸方向の経路である。転送バンド幅は、予め設定された値（例えば５ＧＢ）である。経路ごとの通信時間（通信データ量／転送バンド幅）の合計（Σ）を、マイグレーション開始予定時刻Ｓ0に加算することで、マイグレーション終了予定時刻Ｔ0となる。
【０１３７】
［ステップＳ３０２］ジョブマネージャ１１０は、他のジョブや「広帯域転送」との干渉可能性を判定する。例えばジョブマネージャ１１０は、以下の２つの要件が満たされるかどうかを判定する。
・要件１：Ｓ0からＴ0までの期間内に、マイグレーションデータ転送路上の計算ノードにジョブが存在する。
・要件２：Ｓ0からＴ0までの期間内に、マイグレーションデータ転送路上に、予想終了時刻（＝ｓ（ｉ）＋ｄ（ｉ）／バンド幅）が含まれる「広帯域転送」がある。
【０１３８】
ｓ（ｉ）は、通信ＩＤが「ｉ」（ｉは１以上の整数）の通信の開始時刻である。ｄ（ｉ）は、通信ＩＤが「ｉ」の通信の通信量である。各通信のｓ（ｉ）とｄ（ｉ）とは、広帯域転送管理表７２から取得できる。
【０１３９】
ジョブマネージャ１１０は、２つの要件の一方でも成立すれば、干渉可能性ありと判定する。干渉可能性がある場合、処理がステップＳ３０４に進められる。干渉可能性がなければ、処理がステップＳ３０３に進められる。
【０１４０】
［ステップＳ３０３］ジョブマネージャ１１０は、予め決められたラテン方格を使用することを決定する。その後、ラテン方格決定処理が終了する。
［ステップＳ３０４］ジョブマネージャ１１０は、事前に用意した複数のラテン方格の各々に対し、一斉に転送を行う計算ノード群（ラテン方格の同一記号に対応する複数の計算ノード）ごとに、通信干渉の度合いを評価する。そして通信の干渉度合いに基づいて、各ラテン方格の終了予定時刻が算出される。通信干渉度合いの評価処理の詳細は後述する（図２６参照）。
【０１４１】
［ステップＳ３０５］ジョブマネージャ１１０は、複数のラテン方格のうち、マイグレーションの終了予定時刻が最も早いラテン方格を、マイグレーションデータの転送に使用するラテン方格に決定する。
【０１４２】
図２６は、通信干渉度合い評価処理の手順の一例を示すフローチャートである。
［ステップＳ３１１］ジョブマネージャ１１０は、予め用意された複数のラテン方格のち、未処理のラテン方格を１つ選択する。
【０１４３】
［ステップＳ３１２］ジョブマネージャ１１０は、選択したラテン方格の記号ごとに、マイグレーション開始予定時刻Ｓ0からマイグレーション終了予定時刻Ｔ0までの時間帯内に、マイグレーションで使用する経路上で実行されるジョブ数ｎ1を求める。例えばジョブマネージャ１１０は、時間帯［Ｓ0，Ｔ0］と重なる部分の時間帯のノード割り当て管理表を選択する。そしてジョブマネージャ１１０は、選択したノード割り当て管理表から、ジョブに割り当てた計算ノード集合が属するサブメッシュの範囲が、マイグレーションで使用する経路と少なくとも一部で重なるジョブを、選択したラテン方格の記号ごとに抽出する。すなわち、マイグレーションで使用する経路は、記号ごとに異なるため、経路上で実行されるジョブも記号ごとに異なる。サブメッシュの範囲は、ノード割り当て管理表における各座標軸の上限と下限とで表されている。
【０１４４】
［ステップＳ３１３］ジョブマネージャ１１０は、選択したラテン方格の記号ごとに、Ｓ0からＴ0までの時間帯内に、マイグレーションで使用する経路が交差する「広帯域転送」の数ｎ2を求める。例えばジョブマネージャ１１０は、時間帯［Ｓ0，Ｔ0］と重なる部分の時間帯の「広帯域転送」の管理表から、通信経路の直方体の座標範囲がマイグレーションで使用する経路と重なる部分を持つ通信経路を抽出し、抽出した経路数を求める。
【０１４５】
［ステップＳ３１４］ジョブマネージャ１１０は、ｎ1とｎ2に対し、各々の重み付け係数を掛けて、合計した値を「記号ごとの通信干渉度」とする。「記号ごとの通信干渉度」を式で表すと、以下の通りである。
記号ごとの通信干渉度＝Ａ１×ｎ1＋Ａ２×ｎ2
ここでは、Ａ１は「ジョブ内通信が使用する平均バンド幅／リンクのバンド幅」である。Ａ２は、「１」とする。
【０１４６】
［ステップＳ３１５］ジョブマネージャ１１０は、選択したラテン方格を用いたマイグレーションデータ転送における終了予定時刻を求める。例えばジョブマネージャ１１０は、「実効バンド幅＝リンクの最大バンド幅／通信干渉度」として各転送の所要時間を見積もり、次の記号のデータ転送の開始予定時刻を順次求める。そして、ジョブマネージャ１１０は、最後の記号のデータ転送の終了予定時刻を、選択したラテン方格を用いたマイグレーションデータ転送の終了予定時刻とする。
【０１４７】
［ステップＳ３１６］ジョブマネージャ１１０は、未処理のラテン方格があるか否かを判断する。未処理のラテン方格があれば、処理がステップＳ３１１に進められる。未処理のラテン方格がなければ、干渉度合い評価処理が終了する。
【０１４８】
以上のようにして、終了予定時刻が最も早いラテン方格を用いて、マイグレーションデータ転送を行うことができる。その結果、マイグレーションデータの転送経路上で実行されるジョブ、および転送経路上での広帯域通信を考慮して、効率的なデータ転送を行うことができる。
【０１４９】
なお、上記の説明では、予定されている広帯域転送の情報に基づいて、適切なラテン方格を選択しているが、現在の通信量の統計情報を、計算ノード内のルータから取得し、その統計情報に基づいて適切なラテン方格を選択することもできる。ルータからの通信量の統計情報から、ラテン方格を適切に選択することによって、より正確な通信量に基づく適切なラテン方格の選択が可能となる。これにより、マイグレーションデータ転送と、そのデータ転送時の通過計算ノードで実行されるジョブ間通信との相互影響を最小化することができる。
【０１５０】
〔第５の実施の形態〕
次に第５の実施の形態について説明する。第５の実施の形態は、１対の計算ノード間のデータ転送経路を２つ用いることで、データ転送の効率化を図るものである。
【０１５１】
計算ノード間での通信手段としては、自ノードから相手ノードにデータを送る手順（ｐｕｔ，ｗｒｉｔｅ）と、相手ノードから自ノードにデータを持ってくる手順（ｇｅｔ，ｒｅａｄ）とがある。通信のルーティングルールに依存するが、２ノード間でデータ通信を行う場合には、移動元・先ノード間のｘ，ｙ座標が共に異なる場合には、移動元から移動先へｐｕｔ通信するケースと、移動先から移動元へｇｅｔ通信するケースで通信経路が異なる場合がある。これらの特性を利用することによって、マイグレーションデータを２分割し、移動元からのｐｕｔ通信，移動先からのｇｅｔ通信を同時に利用することによってマイグレーションデータの通信に要する時間を１／２に短縮することができる。
【０１５２】
図２７は、第５の実施の形態におけるデータ通信経路の一例を示す図である。図２７に示すように移動元から移動先へのｐｕｔ通信によるマイグレーションデータの転送では、ｘ軸、ｙ軸の順にデータが転送（反時計回り）される。一方、移動先から移動元へｇｅｔ通信によってマイグレーションデータを転送する場合には、移動先の計算ノードが、ｘ軸、ｙ軸の順の経路を辿りデータを取りに行く。そのためｇｅｔ通信では、結果としてマイグレーションデータは送信元からｙ軸、ｘ軸の順に転送（時計回り）される。つまり、ｐｕｔ，ｇｅｔによる通信では異なる通信経路を使用することになる。
【０１５３】
なお、図２７のような通信を実現するためには、制御ノード１００のジョブマネージャ１１０は、各計算ノードがデータ通信を行う順番を、移行元の計算ノードと移行先の計算ノードとの両方に通知することとなる。例えばジョブマネージャ１１０は、生成したラテン方格を、移行元のすべての計算ノードと、移行先のすべての計算ノードとに送信する。
【０１５４】
このように、互いに通信を行う計算ノード対間の通信を、２つの経路を用いて実行することで、通信時間を短縮することができる。その結果、マイグレーションデータ転送全体に要する時間も短縮される。
【０１５５】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１５６】
１  ネットワーク
１ａ  ノード
２  第１領域
３  第２領域
１０  データ転送制御装置
１１  通信インタフェース
１２  制御部
１３  記憶部
１３ａ  ラテン方格
【図１】
0006459630.tif 000002
【図２】
0006459630.tif 000003
【図３】
0006459630.tif 000004
【図４】
0006459630.tif 000005
【図５】
0006459630.tif 000006
【図６】
0006459630.tif 000007
【図７】
0006459630.tif 000008
【図８】
0006459630.tif 000009
【図９】
0006459630.tif 000010
【図１０】
0006459630.tif 000011
【図１１】
0006459630.tif 000012
【図１２】
0006459630.tif 000013
【図１３】
0006459630.tif 000014
【図１４】
0006459630.tif 000015
【図１５】
0006459630.tif 000016
【図１６】
0006459630.tif 000017
【図１７】
0006459630.tif 000018
【図１８】
0006459630.tif 000019
【図１９】
0006459630.tif 000020
【図２０】
0006459630.tif 000021
【図２１】
0006459630.tif 000022
【図２２】
0006459630.tif 000023
【図２３】
0006459630.tif 000024
【図２４】
0006459630.tif 000025
【図２５】
0006459630.tif 000026
【図２６】
0006459630.tif 000027
【図２７】
0006459630.tif 000028