(57)【要約】【課題】分散メモリ型マルチプロセッサシステムにおいて、データに対する作業負荷が不均等であるようなプログラムを実行する際に動的な作業負荷の均等化を少ないオーバヘッドにより効率的に行う。【解決手段】負荷測定手段１１１は自計算ノード１０１の負荷を測定し、負荷情報計算手段１１２は全負荷，単位データ当りの負荷および平均負荷を計算する。負荷均等化区分決定手段１１３は負荷均等化を行う区分を決定し、区分負荷情報計算手段１１４は区分全負荷および区分均等負荷を計算する。データ移動方式決定手段１１５は各計算ノード１０１のどのデータをどの計算ノード１０１に移動させる必要があるかを決定し、計算ノード間データ移動手段１１６は計算ノード１０１間のデータの移動を行う。【選択図】　　　　図１
2004013567.tif 000002
【特許請求の範囲】
【請求項１】
分散メモリ型マルチプロセッサシステムにおいて、
高負荷の計算ノード周辺毎に動的に区分化して局所的に計算ノード間の計算データの移動を行うことにより、負荷均等化のためのオーバヘッドを削減することを特徴とする動的負荷均等化方法。
【請求項２】
分散メモリ型マルチプロセッサシステムにおいて、
負荷均等化を行う計算ノードを少数の一定の計算ノード数で区分化して局所的に計算ノード間の計算データの移動を行うことにより、負荷均等化のためのオーバヘッドを削減し、さらに区分化の範囲を動的に変更することを特徴とする動的負荷均等化方法。
【請求項３】
計算手段および記憶手段を有する複数の計算ノードが計算ノード間通信手段を介して接続されてなる分散メモリ型マルチプロセッサシステムの動的負荷均等化方法において、
各計算ノードの負荷を測定する負荷測定ステップと、
全計算ノードの負荷の合計である全負荷，各計算ノードにおける単位データ当りの負荷，および計算ノード当りの負荷である平均負荷を計算する負荷情報計算ステップと、
計算ノード全体の区分を分割して負荷均等化を行う区分を決定する負荷均等化区分決定ステップと、
負荷均等化を行う各区分に対して、その区分内部における負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する区分負荷情報計算ステップと、
負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかを決定するデータ移動方式決定ステップと、
前記データ移動方式決定ステップの決定結果に基づき、計算ノード間通信手段を利用して、実際に計算ノード間のデータの移動を行う計算ノード間データ移動ステップと
を含むことを特徴とする動的負荷均等化方法。
【請求項４】
計算手段および記憶手段を有する複数の計算ノードが計算ノード間通信手段を介して接続されてなる分散メモリ型マルチプロセッサシステムの動的負荷均等化方法において、
各計算ノード内の計算手段の負荷を測定する負荷測定ステップと、
計算ノード全体の区分を分割して負荷均等化を行う区分を決定する負荷均等化区分決定ステップと、
負荷均等化を行う各区分に対して、その区分に属する各計算ノードの単位データ当りの負荷，その区分内部における負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する区分負荷情報計算ステップと、
負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかを決定するデータ移動方式決定ステップと、
前記データ移動方式決定ステップの決定結果に基づき、計算ノード間通信手段を利用して、実際に計算ノード間のデータの移動を行う計算ノード間データ移動ステップと
を含むことを特徴とする動的負荷均等化方法。
【請求項５】
計算手段および記憶手段を有する複数の計算ノードが計算ノード間通信手段を介して接続されてなる分散メモリ型マルチプロセッサシステムの動的負荷均等化装置において、
各計算ノードの負荷を測定する負荷測定手段と、
全計算ノードの負荷の合計である全負荷，各計算ノードにおける単位データ当りの負荷，および計算ノード当りの負荷である平均負荷を計算する負荷情報計算手段と、
計算ノード全体の区分を分割して負荷均等化を行う区分を決定する負荷均等化区分決定手段と、
負荷均等化を行う各区分に対して、その区分内部における負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する区分負荷情報計算手段と、
負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかを決定するデータ移動方式決定手段と、
前記データ移動方式決定手段による決定結果に基づき、計算ノード間通信手段を利用して、実際に計算ノード間のデータの移動を行う計算ノード間データ移動手段と
を含むことを特徴とする動的負荷均等化装置。
【請求項６】
計算手段および記憶手段を有する複数の計算ノードが計算ノード間通信手段を介して接続されてなる分散メモリ型マルチプロセッサシステムの動的負荷均等化装置において、
各計算ノード内の計算手段の負荷を測定する負荷測定手段と、
計算ノード全体の区分を分割して負荷均等化を行う区分を決定する負荷均等化区分決定手段と、
負荷均等化を行う各区分に対して、その区分に属する各計算ノードの単位データ当りの負荷，その区分内部における負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する区分負荷情報計算手段と、
負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかを決定する動的負荷均等化手段と、
前記データ移動方式決定手段による決定結果に基づき、計算ノード間通信手段を利用して、実際に計算ノード間のデータの移動を行う計算ノード間データ移動手段と
を含むことを特徴とする動的負荷均等化装置。
【請求項７】
コンピュータに、各計算ノードの負荷を測定する負荷測定ステップと、全計算ノードの負荷の合計である全負荷，各計算ノードにおける単位データ当りの負荷，および計算ノード当りの負荷である平均負荷を計算する負荷情報計算ステップと、計算ノード全体の区分を分割して負荷均等化を行う区分を決定する負荷均等化区分決定ステップと、負荷均等化を行う各区分に対して、その区分内部における負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する区分負荷情報計算ステップと、負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかを決定するデータ移動方式決定ステップと、前記データ移動方式決定ステップの決定結果に基づき、計算ノード間通信手段を利用して、実際に計算ノード間のデータの移動を行う計算ノード間データ移動ステップとを実行させるためのプログラム。
【請求項８】
コンピュータに、各計算ノード内の計算手段の負荷を測定する負荷測定ステップと、計算ノード全体の区分を分割して負荷均等化を行う区分を決定する負荷均等化区分決定ステップと、負荷均等化を行う各区分に対して、その区分に属する各計算ノードの単位データ当りの負荷，その区分内部における負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する区分負荷情報計算ステップと、負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかを決定するデータ移動方式決定ステップと、前記データ移動方式決定ステップの決定結果に基づき、計算ノード間通信手段を利用して、実際に計算ノード間のデータの移動を行う計算ノード間データ移動ステップとを実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は動的負荷均等化方法および動的負荷均等化装置に関し、特に分散メモリ型マルチプロセッサシステムにおける動的負荷均等化方法および動的負荷均等化装置に関する。
【０００２】
【従来の技術】
分散メモリ型マルチプロセッサシステムは、例えば、マルチノードシステムやクラスタシステムのように、ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）とメモリとから構成される複数の計算ノードが、ノード間結合網により接続されて構成されている。
【０００３】
従来、分散メモリ型マルチプロセッサシステムにおいて、動的に負荷均等化を図るためには、作業負荷が均等になるように、データの再分散を行うのが常であった（特開昭６０−０１０３８３，特開昭６３−０１９０５９，特開平０１−１９１２５２，特開平０７−２９５９４２等参照）。
【０００４】
例えば、図２に示すような計算手段１０２および記憶手段１０３を含む計算ノード１０１が計算ノード間通信手段１０４によって複数接続されている分散メモリ型マルチプロセッサシステム１００では、実行中のあるプログラムに関して、複数の計算ノード１０１の間で作業負荷が不均等になった場合、高負荷の計算ノード１０１の記憶手段１０３上に割り付けられているデータをより負荷の軽い他の計算ノード１０１の記憶手段１０３上に移動させるようにデータの再分散を行っていたが、この際、単純に負荷を均等化しようとすると、大域的に計算データが移動することにより、多大なオーバヘッドが発生しがちであった。すなわち、負荷の大きな計算ノードから負荷の小さな計算ノードにデータを移動するとき、移動するデータ総量，およびデータ移動に参加しなければならない計算ノード数が大きくなりがちであり、オーバヘッドが非常に大きくなってしまうというおそれがあった。
【０００５】
そこで、例えば、特開平０６−０６８０５１に開示された「並列計算機」では、複数のプロセッサを複数のグループに分け、グループ内のプロセッサ間で優先的に負荷分散を行い、グループ内のプロセッサ間で負荷分散を行えない場合に初めて他のグループのプロセッサとの間で負荷分散を行うようにして、効率のよい負荷の動的な平均化を実現するようにしていた。
【０００６】
【発明が解決しようとする課題】
しかし、この従来の技術では、十分に動的に効率のよい負荷分散が実現されるとは限らないという問題点があった。その理由は、グループを構成するプロセッサが事前に固定的に決められていたので、グループ内のプロセッサ間では効率のよい動的な負荷分散が実現されたとしても、グループ間での効率のよい動的な負荷分散が行われるようには考慮されていなかったからである。
【０００７】
本発明の目的は、分散メモリ型マルチプロセッサシステムにおいて、データに対する作業負荷が不均等であるようなプログラムを実行する際に、高負荷の計算ノード周辺毎に動的に区分化（グループ化）して局所的に計算ノード間の計算データの移動を行うことにより、動的な作業負荷の均等化を少ないオーバヘッドにより効率的に行う動的負荷均等化方法および動的負荷均等化装置を提供することにある。
【０００８】
また、本発明の他の目的は、分散メモリ型マルチプロセッサシステムにおいて、データに対する作業負荷が不均等であるようなプログラムを実行する際に、負荷均等化を行う計算ノードを少数の一定の計算ノード数で区分化して局所的に計算ノード間の計算データの移動を行い、さらに区分化の範囲を動的に変更することにより、動的な作業負荷の均等化を少ないオーバヘッドにより効率的に行う動的負荷均等化方法および動的負荷均等化装置を提供することにある。
【０００９】
【課題を解決するための手段】
本発明の動的負荷均等化方法は、分散メモリ型マルチプロセッサシステムにおいて、高負荷の計算ノード周辺毎に動的に区分化して局所的に計算ノード間の計算データの移動を行うことにより、負荷均等化のためのオーバヘッドを削減することを特徴とする。
【００１０】
また、本発明の動的負荷均等化方法は、分散メモリ型マルチプロセッサシステムにおいて、負荷均等化を行う計算ノードを少数の一定の計算ノード数で区分化して局所的に計算ノード間の計算データの移動を行うことにより、負荷均等化のためのオーバヘッドを削減し、さらに区分化の範囲を動的に変更することを特徴とする。
【００１１】
さらに、本発明の動的負荷均等化方法は、計算手段および記憶手段を有する複数の計算ノードが計算ノード間通信手段を介して接続されてなる分散メモリ型マルチプロセッサシステムの動的負荷均等化方法において、各計算ノードの負荷を測定する負荷測定ステップと、全計算ノードの負荷の合計である全負荷，各計算ノードにおける単位データ当りの負荷，および計算ノード当りの負荷である平均負荷を計算する負荷情報計算ステップと、計算ノード全体の区分を分割して負荷均等化を行う区分を決定する負荷均等化区分決定ステップと、負荷均等化を行う各区分に対して、その区分内部における負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する区分負荷情報計算ステップと、負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかを決定するデータ移動方式決定ステップと、前記データ移動方式決定ステップの決定結果に基づき、計算ノード間通信手段を利用して、実際に計算ノード間のデータの移動を行う計算ノード間データ移動ステップとを含むことを特徴とする。
【００１２】
さらにまた、本発明の動的負荷均等化方法は、計算手段および記憶手段を有する複数の計算ノードが計算ノード間通信手段を介して接続されてなる分散メモリ型マルチプロセッサシステムの動的負荷均等化方法において、各計算ノード内の計算手段の負荷を測定する負荷測定ステップと、計算ノード全体の区分を分割して負荷均等化を行う区分を決定する負荷均等化区分決定ステップと、負荷均等化を行う各区分に対して、その区分に属する各計算ノードの単位データ当りの負荷，その区分内部における負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する区分負荷情報計算ステップと、負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかを決定するデータ移動方式決定ステップと、前記データ移動方式決定ステップの決定結果に基づき、計算ノード間通信手段を利用して、実際に計算ノード間のデータの移動を行う計算ノード間データ移動ステップとを含むことを特徴とする。
【００１３】
一方、本発明の動的負荷均等化装置は、計算手段および記憶手段を有する複数の計算ノードが計算ノード間通信手段を介して接続されてなる分散メモリ型マルチプロセッサシステムの動的負荷均等化装置において、各計算ノードの負荷を測定する負荷測定手段と、全計算ノードの負荷の合計である全負荷，各計算ノードにおける単位データ当りの負荷，および計算ノード当りの負荷である平均負荷を計算する負荷情報計算手段と、計算ノード全体の区分を分割して負荷均等化を行う区分を決定する負荷均等化区分決定手段と、負荷均等化を行う各区分に対して、その区分内部における負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する区分負荷情報計算手段と、負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかを決定するデータ移動方式決定手段と、前記データ移動方式決定手段による決定結果に基づき、計算ノード間通信手段を利用して、実際に計算ノード間のデータの移動を行う計算ノード間データ移動手段とを含むことを特徴とする。
【００１４】
また、本発明の動的負荷均等化装置は、計算手段および記憶手段を有する複数の計算ノードが計算ノード間通信手段を介して接続されてなる分散メモリ型マルチプロセッサシステムの動的負荷均等化装置において、各計算ノード内の計算手段の負荷を測定する負荷測定手段と、計算ノード全体の区分を分割して負荷均等化を行う区分を決定する負荷均等化区分決定手段と、負荷均等化を行う各区分に対して、その区分に属する各計算ノードの単位データ当りの負荷，その区分内部における負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する区分負荷情報計算手段と、負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかを決定する動的負荷均等化手段と、前記データ移動方式決定手段による決定結果に基づき、計算ノード間通信手段を利用して、実際に計算ノード間のデータの移動を行う計算ノード間データ移動手段とを含むことを特徴とする。
【００１５】
他方、本発明のプログラムは、コンピュータに、各計算ノードの負荷を測定する負荷測定ステップと、全計算ノードの負荷の合計である全負荷，各計算ノードにおける単位データ当りの負荷，および計算ノード当りの負荷である平均負荷を計算する負荷情報計算ステップと、計算ノード全体の区分を分割して負荷均等化を行う区分を決定する負荷均等化区分決定ステップと、負荷均等化を行う各区分に対して、その区分内部における負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する区分負荷情報計算ステップと、負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかを決定するデータ移動方式決定ステップと、前記データ移動方式決定ステップの決定結果に基づき、計算ノード間通信手段を利用して、実際に計算ノード間のデータの移動を行う計算ノード間データ移動ステップとを実行させることを特徴とする。
【００１６】
また、本発明のプログラムは、コンピュータに、各計算ノード内の計算手段の負荷を測定する負荷測定ステップと、計算ノード全体の区分を分割して負荷均等化を行う区分を決定する負荷均等化区分決定ステップと、負荷均等化を行う各区分に対して、その区分に属する各計算ノードの単位データ当りの負荷，その区分内部における負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する区分負荷情報計算ステップと、負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかを決定するデータ移動方式決定ステップと、前記データ移動方式決定ステップの決定結果に基づき、計算ノード間通信手段を利用して、実際に計算ノード間のデータの移動を行う計算ノード間データ移動ステップとを実行させることを特徴とする。
【００１７】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００１８】
［第１の実施の形態］
図２は、本発明の第１の実施の形態に係る動的負荷均等化方法が適用される分散メモリ型マルチプロセッサシステム１００の構成を示すブロック図である。この分散メモリ型マルチプロセッサシステム１００は、各々が計算手段１０２および記憶手段１０３を有する複数の計算ノード１０１と、各計算ノード１０１間を接続する計算ノード間通信手段１０４とを含んで構成されている。
【００１９】
分散メモリ型マルチプロセッサシステム１００上で、あるプログラムが実行されている場合、各々の計算ノード１０１内で、計算手段１０２は、自計算ノード１０１内で接続されている記憶手段１０３上に割り付けられているデータをアクセスしながらプログラムの処理を非同期的に実行する。
【００２０】
計算ノード間通信手段１０４は、ある計算ノード１０１内の計算手段１０２が、他の計算ノード１０１内の記憶手段１０３上に割り付けられているデータにアクセスする際や、データをある計算ノード１０１内の記憶手段１０３上から他の計算ノード１０１内の記憶手段１０３上に移動させる際の経路となる。計算ノード間通信手段１０４は、バス，インターフェース，ネットワークといったハードウェアと、ドライバや通信ライブラリ手続といったソフトウェアとを含む。
【００２１】
図１を参照すると、分散メモリ型マルチプロセッサシステム１００の各計算ノード１０１上で動作する動的負荷均等化処理部１１０は、負荷測定手段１１１と、負荷情報計算手段１１２と、負荷均等化区分決定手段１１３と、区分負荷情報計算手段１１４と、データ移動方式決定手段１１５と、計算ノード間データ移動手段１１６とから構成されている。なお、動的負荷均等化処理部１１０は、各計算ノード１０１上にアプリケーションプログラムの一部としてそれぞれ実装される。
【００２２】
負荷測定手段１１１は、自計算ノード１０１の負荷を測定する。
【００２３】
負荷情報計算手段１１２は、自計算ノード１０１の単位データ当りの負荷の計算を行い、他の全ての計算ノード１０１の負荷情報を計算ノード間通信手段１０４を利用して収集し、全計算ノード１０１の負荷の合計である全負荷，各計算ノード１０１における単位データ当りの負荷，および計算ノード当りの負荷である平均負荷を計算する。
【００２４】
負荷均等化区分決定手段１１３は、計算ノード１０１全体の区分を分割して負荷均等化を行う区分を決定する。
【００２５】
区分負荷情報計算手段１１４は、負荷均等化を行う各区分に対して、その区分内部における各計算ノード１０１の負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する。
【００２６】
データ移動方式決定手段１１５は、負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノード１０１のどのデータをどの計算ノード１０１に移動させる必要があるかを決定する。
【００２７】
計算ノード間データ移動手段１１６は、負荷均等化を行う各区分に対し、計算ノード間通信手段１０４を利用して、計算ノード１０１間のデータの移動を行う。計算ノード間データ移動手段１１６は、一番上位のモジュールである通信ライブラリ手続をインターフェースとして、計算ノード間通信手段１０４を利用する。
【００２８】
図３を参照すると、動的負荷均等化処理部１１０の処理手順は、自計算ノード負荷測定ステップＡ１と、他全計算ノード負荷情報収集ステップＡ２と、各計算ノード単位データ当りの負荷計算ステップＡ３と、全負荷および平均負荷計算ステップＡ４と、負荷均等化区分決定ステップＡ５と、区分全負荷および区分均等負荷計算ステップＡ６と、各計算ノード割り付けデータ決定ステップＡ７と、データ移動方式決定ステップＡ８と、計算ノード間データ移動ステップＡ９とからなる。
【００２９】
次に、このような第１の実施の形態に係る動的負荷均等化方法が適用された分散メモリ型マルチプロセッサシステム１００の動作について、図１ないし図３を参照しながら説明する。
【００３０】
いま、計算ノード１０１の総数をｎ（正整数）とし、ｉ（１＜＝ｉ＜＝ｎ）番目の計算ノードＮｉ内の記憶手段１０３上に割り付けられているデータ量をＤｉとする。
【００３１】
データは、計算ノードＮ１内の記憶手段１０３上に割り付けられているものから、計算ノードＮｎ内の記憶手段１０３上に割り付けられているものまで、昇順に番号づけられており、負荷均等化後も、その順番は変えられないものとする。
【００３２】
各計算ノード１０１上で動的負荷均等化処理部１１０が起動されると、計算手段１０２は、以下のような動作を行う。
【００３３】
計算手段１０２は、負荷測定手段１１１により、自計算ノードＮ１，Ｎ２，…，Ｎｎの負荷Ｌ１，Ｌ２，…，Ｌｎをそれぞれ測定する（ステップＡ１）。
【００３４】
次に、計算手段１０２は、負荷情報計算手段１１２により、他の全ての計算ノード１０１の負荷情報を計算ノード間通信手段１０４を利用して収集し（ステップＡ２）、各計算ノードＮ１，Ｎ２，…，Ｎｎの負荷Ｌ１，Ｌ２，…，Ｌｎに基づき、各計算ノードＮｉ上の単位データ当りの負荷Ｌｉ／Ｄｉ（１＜＝ｉ＜＝ｎ）を計算し（ステップＡ３）、さらに全負荷ＡＬ＝Ｌ１＋Ｌ２＋…＋Ｌｎ，および計算ノード当りの平均負荷ＢＬ＝ＡＬ／ｎを計算する（ステップＡ４）。
【００３５】
続いて、計算手段１０２は、負荷均等化区分決定手段１１３により、負荷情報計算手段１１２による計算結果に基づき、平均負荷ＢＬを越える負荷がかかっている高負荷の計算ノードＮｉを中心として、２つの高負荷の計算ノード間の計算ノードを等分するように負荷均等化を行う区分を動的に決定する（ステップＡ５）。例えば、高負荷の計算ノードが、ａ番目，ｂ番目，ｃ番目の計算ノードＮａ，Ｎｂ，Ｎｃ（ａ＜ｂ＜ｃ）だけならば、１番目の計算ノードＮａから（ｂ−ａ）／２番目の計算ノードＮ（ｂ−ａ）／２までを最初の負荷均等化を行う区分Ｓ１、（ｂ−ａ）／２＋１番目の計算ノードＮ（ｂ−ａ）／２＋１から（ｃ−ｂ）／２番目の計算ノードＮ（ｃ−ｂ）／２までを２番目の負荷均等化を行う区分Ｓ２、（ｃ−ｂ）／２＋１番目の計算ノードＮ（ｃ−ｂ）／２＋１からｎ番目の計算ノードＮｎまでを３番目の負荷均等化を行う区分Ｓ３とする。ここでは、負荷均等化区分決定手段１１３によって、計算ノードＮ１，Ｎ２，…，Ｎｎがｍ（正整数）個の区分Ｓ１，Ｓ２，…，Ｓｍに区切られたとし、ｊ（１＜＝ｊ＜＝ｍ）番目の区分Ｓｊには、ｌｊ個の計算ノードＮｊ１，Ｎｊ２，…，Ｎｊｌｊが含まれるとする。
【００３６】
次に、計算手段１０２は、区分負荷情報計算手段１１４により、各区分Ｓｊに対して、その区分内部における区分全負荷ＳＡＬｊ＝Ｌｊ１＋…＋Ｌｊｌｊ，および負荷均等化後の目標となる負荷である区分均等負荷ＳＢＬｊ＝ＳＡＬｊ／ｌｊを計算する（ステップＡ６）。
【００３７】
続いて、計算手段１０２は、データ移動方式決定手段１１５により、区分負荷情報計算手段１１４による計算結果に基づいて、各区分Ｓｊに関して、そこに含まれる各計算ノードの負荷が、負荷均等化後に区分均等負荷ＳＢＬｊに近い値になるように、各計算ノード内の記憶手段１０３上に割り付けるデータを決定し（ステップＡ７）、それを実現するために各計算ノード内のどのデータをどの計算ノードに移動させる必要があるかを決定する（ステップＡ８）。
【００３８】
最後に、計算手段１０２は、計算ノード間データ移動手段１１６により、データ移動方式決定手段１１５による決定結果に基づいて、計算ノード間通信手段１０４を利用して、実際に計算ノード間のデータの移動を行う（ステップＡ９）。
【００３９】
次に、具体例を用いてより詳しく説明する。
【００４０】
図４に示すように、分散メモリ型マルチプロセッサシステム１００は、計算ノード１０１がＮ１，Ｎ２，…，Ｎ１２までの１２個あるものとし、各計算ノードＮ１，Ｎ２，…，Ｎ１２内の記憶手段１０３上に割り付けられているデータ量が全て１０であるものとする。
【００４１】
まず、計算手段１０２は、負荷測定手段１１１により、各計算ノードＮ１，Ｎ２，…，Ｎ１２内の計算手段１０２の負荷が、図４の各計算手段１０２上の数字のようにそれぞれ測定されたものとする（ステップＡ１）。
【００４２】
次に、計算手段１０２は、負荷情報計算手段１１２により、他の全ての計算ノード１０１の負荷情報を計算ノード間通信手段１０４を利用して収集し（ステップＡ２）、各計算ノードＮ１，Ｎ２，…，Ｎ１２の負荷Ｌ１，Ｌ２，…，Ｌ１２に基づき各計算ノードＮｉ上の単位データ当りの負荷Ｌｉ／Ｄｉ（１＜＝ｉ＜＝ｎ）を表１のように計算し（ステップＡ３）、さらに全負荷ＡＬ＝１＋３＋２＋６＋４＋１＋４＋２＋１＋２＋１＋３＝３０，および平均負荷ＢＬ＝ＡＬ／ｎ＝３０／１２＝２．５を計算する（ステップＡ４）。
【００４３】
【表１】
2004013567.tif 000003
【００４４】
続いて、計算手段１０２は、負荷均等化区分決定手段１１３により、負荷情報計算手段１１２による計算結果に基づき、平均負荷ＢＬ＝２．５を越える負荷がかかっている高負荷の計算ノードＮ２，Ｎ４，Ｎ５，Ｎ７，Ｎ１２を中心として、２つの高負荷の計算ノード間の計算ノードを等分するように計算ノードを分割して負荷均等化を行う区分を動的に決定する（ステップＡ５）。この際、各区分のちょうど境界にある計算ノードを、計算ノード数が少ない方の区分に所属させると、表２のように５つの区分Ｓ１，Ｓ２，…，Ｓ５が決定される。
【００４５】
【表２】
2004013567.tif 000004
【００４６】
続いて、計算手段１０２は、区分負荷情報計算手段１１４により、負荷均等化区分決定手段１１３による決定結果に基づき、表３に示すように、各区分Ｓｊに対して、その区分内部における区分全負荷ＳＡＬｊ＝Ｌｊ１＋…＋Ｌｊｌｊ，および負荷均等化後の目標となる負荷である区分均等負荷ＳＢＬｊ＝ＳＡＬｊ／ｌｊを計算する（ステップＡ６）。
【００４７】
【表３】
2004013567.tif 000005
【００４８】
次に、計算手段１０２は、データ移動方式決定手段１１５により、区分負荷情報計算手段１１４の計算結果に基づき、各区分Ｓｊに対して、負荷均等化後に各計算ノード上の負荷が区分均等負荷ＳＢＬｊに近い値になるように、その区分に属する各計算ノード内の記憶手段１０３上に割り付けるデータを決定する（ステップＡ７）。その際、区分均等負荷ＳＢＬｊを正確に同じ値にすることができない場合には、奇数番号の計算ノードでは１データ分負荷を多めに、偶数番号の計算ノードでは１データ分負荷を少なめにすると、表４のようになる。
【００４９】
【表４】
2004013567.tif 000006
【００５０】
さらに、計算手段１０２は、データ移動方式決定手段１１５により、表４のようなデータ配置を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかの情報（データ移動方式）を表５のように生成する（ステップＡ８）。
【００５１】
【表５】
2004013567.tif 000007
【００５２】
最後に、計算手段１０２は、計算ノード間データ移動手段１１６により、データ移動方式決定手段１１５による決定結果に基づき、計算ノード間通信手段１０４を利用して、実際に計算ノード間のデータの移動を行う（ステップＡ９）。
【００５３】
この結果、負荷の最も少ない計算ノードと負荷の最も多い計算ノードとの負荷比は、最初の６倍から２．４倍に縮小され、そのために発生するデータ転送の総量は２６、１つの計算ノードが転送しなければならない転送相手の計算ノード数の最大値は２である。
【００５４】
ところが、従来のように、単純に負荷均等化を図った場合、負荷均等化後の各計算ノードの大域負荷均等化後負荷および大域負荷均等化後データ量，ならびに必要な計算ノード間通信のパタンは、それぞれ、表６および表７のようになる。
【００５５】
【表６】
2004013567.tif 000008
【００５６】
【表７】
2004013567.tif 000009
【００５７】
この結果、負荷の最も少ない計算ノードと負荷の最も多い計算ノードとの負荷比は、最初の６倍から１．３倍程度に縮小されるが、そのために発生するデータ転送の総量は６９、１つの計算ノードが転送しなければならない転送相手の計算ノード数の最大値は４となり、区分的に負荷分散を図る場合と比べて多大なコストが発生していることが分かる。
【００５８】
［第２の実施の形態］
図５を参照すると、本発明の第２の実施の形態に係る動的負荷均等化方法が適用された動的負荷均等化処理部１２０は、負荷測定手段１２１と、負荷均等化区分決定手段１２２と、区分負荷情報計算手段１２３と、データ移動方式決定手段１２４と、計算ノード間データ移動手段１２５とから構成されている。
【００５９】
なお、分散メモリ型マルチプロセッサシステム１００は、すでに図２で示したように構成されている。
【００６０】
負荷測定手段１２１は、自計算ノード１０１の負荷を測定する。
【００６１】
負荷均等化区分決定手段１２２は、計算ノード１０１全体の区分を分割して負荷均等化を行う区分を決定する。
【００６２】
区分負荷情報計算手段１２３は、負荷均等化を行う各区分に対して、その区分に属する各計算ノード１０１の単位データ当りの負荷，その区分内部における負荷の合計である区分全負荷，および負荷均等化後の目標となる負荷である区分均等負荷を計算する。
【００６３】
データ移動方式決定手段１２４は、負荷均等化を行う各区分に対して、負荷均等化を実現するために、各計算ノード１０１のどのデータをどの計算ノード１０１に移動させる必要があるかを決定する。
【００６４】
計算ノード間データ移動手段１２５は、負荷均等化を行う各区分に対し、計算ノード間通信手段１０４を利用して、計算ノード１０１間のデータの移動を行う。
【００６５】
図６を参照すると、動的負荷均等化処理部１２０の処理手順は、自計算ノード負荷測定ステップＢ１と、他全計算ノード負荷情報収集ステップＢ２と、各計算ノード単位データ当りの負荷計算ステップＢ３と、負荷均等化区分決定ステップＢ４と、区分全負荷および区分均等負荷計算ステップＢ５と、各計算ノード割り付けデータ決定ステップＢ６と、データ移動方式決定ステップＢ７と、計算ノード間データ移動ステップＢ８とからなる。
【００６６】
次に、このような第２の実施の形態に係る動的負荷均等化方法が適用された分散メモリ型マルチプロセッサシステム１００の動作について、図５および図６を参照しながら説明する。
【００６７】
いま、計算ノード１０１の総数をｎとし、ｉ（１＜＝ｉ＜＝ｎ）番目の計算ノードＮｉ内の記憶手段１０２上に割り付けられているデータ量をＤｉとする。
【００６８】
データは、計算ノードＮ１内の記憶手段１０３上に割り付けられているものから、計算ノードＮｎ内の記憶手段１０３上に割り付けられているものまで、昇順に番号づけられており、負荷均等化後も、その順番は変えられないものとする。
【００６９】
各計算ノード１０１上で動的負荷均等化処理部１２０が起動されると、計算手段１０２は、以下のような動作を行う。
【００７０】
まず、計算手段１０２は、負荷測定手段１２１により、自計算ノードＮ１，Ｎ２，…，Ｎｎの負荷Ｌ１，Ｌ２，…，Ｌｎをそれぞれ測定する（ステップＢ１）。
【００７１】
次に、計算手段１０２は、負荷情報計算手段１１２により、他の全ての計算ノード１０１の負荷情報を計算ノード間通信手段１０４を利用して収集し（ステップＢ２）、各計算ノードＮ１，Ｎ２，…，Ｎｎの負荷Ｌ１，Ｌ２，…，Ｌｎに基づき、各計算ノードＮｉ上の単位データ当りの負荷Ｌｉ／Ｄｉ（１＜＝ｉ＜＝ｎ）を計算する（ステップＢ３）。
【００７２】
次に、計算手段１０２は、負荷均等化区分決定手段１２２により、一定数の計算ノード毎に負荷均等化を行う区分を決定する（ステップＢ４）。
【００７３】
例えば、１区分を４計算ノードとするときは、以下のような区分となる。
【００７４】
｛Ｌ１，Ｌ２，Ｌ３，Ｌ４｝，
｛Ｌ５，Ｌ６，Ｌ７，Ｌ８｝，
…，
｛Ｌｎ−３，Ｌｎ−２，Ｌｎ−１，Ｌｎ｝
【００７５】
この区分は、繰り返し負荷均等化を行う場合には、異なる計算ノードが負荷均等化を行う区分に含まれるように、例えば、以下のように負荷均等化を行うごとに変更される。
【００７６】
｛Ｌ１，Ｌ２｝，
｛Ｌ３，Ｌ４，Ｌ５，Ｌ６｝，
｛Ｌ７，Ｌ８，Ｌ９，Ｌ１０｝，
…，
｛Ｌｎ−１，Ｌｎ｝
【００７７】
負荷均等化区分決定手段１２２によって、計算ノードＮ１，Ｎ２，…，Ｎｎがｍ（ｍ＜ｎの正整数）個の区分Ｓ１，Ｓ２，…，Ｓｍに区切られたとし、ｊ（１＜＝ｊ＜＝ｍ）番目の区分Ｓｊには、ｌｊ個の計算ノードＮｊ１，Ｎｊ２，…，Ｎｊｌｊが含まれるとする。
【００７８】
続いて、計算手段１０２は、区分負荷情報計算手段１２３により、負荷測定手段１２１による測定結果および負荷均等化区分決定手段１２２による決定結果に基づいて、各区分Ｓｊに対して、その区分に属する各計算ノードＮｉの単位データ当りの負荷Ｌｉ／Ｄｉ，その区分内部における区分全負荷ＳＡＬｊ＝Ｌｊ１＋…＋Ｌｊｌｊ，および負荷均等化後の目標となる負荷である区分均等負荷ＳＢＫ＝ＳＡＬｊ／ｌｊを計算する（ステップＢ５）。なお、この計算は、区分毎に閉じて可能であるためにオーバヘッドが少ない。
【００７９】
次に、計算手段１０２は、データ移動方式決定手段１２４により、区分負荷情報計算手段１２３による計算結果に基づいて、各区分Ｓｊに関して、そこに含まれる各計算ノードの負荷が、負荷均等化後に区分均等負荷ＳＢＬｊに近い値になるように、各計算ノード内の記憶手段１０３上に割り付けるデータを決定し（ステップＢ６）、それを実現するために、各計算ノード内のどのデータをどの計算ノードに移動させる必要があるかを決定する（ステップＢ７）。
【００８０】
最後に、計算手段１０２は、計算ノード間データ移動手段１１６により、データ移動方式決定手段１２４による決定結果に基づいて、計算ノード間通信手段１０４を利用して、実際に計算ノード間のデータの移動を行う（ステップＢ８）。
【００８１】
次に、具体例を用いてより詳しく説明する。
【００８２】
図４に示すように、分散メモリ型マルチプロセッサシステム１００は、計算ノード１０１がＮ１，Ｎ２，…，Ｎ１２までの１２個あるものとし、各計算ノードＮ１，Ｎ２，…，Ｎ１２内の記憶手段１０３上に割り付けられているデータ量が全て１０であるものとする。
【００８３】
計算手段１０２は、負荷測定手段１２１により、自計算ノードＮ１，Ｎ２，…，Ｎ１２内の計算手段１０２の負荷Ｌ１，Ｌ２，…，Ｌ１２を、図４の各計算手段１０２上の数字のように測定したとする（ステップＢ１）。
【００８４】
次に、計算手段１０２は、負荷情報計算手段１１２により、他の全ての計算ノード１０１の負荷情報を計算ノード間通信手段１０４を利用して収集し（ステップＢ２）、各計算ノードＮ１，Ｎ２，…，Ｎｎの負荷Ｌ１，Ｌ２，…，Ｌｎに基づき、各計算ノードＮｉ上の単位データ当りの負荷Ｌｉ／Ｄｉ（１＜＝ｉ＜＝ｎ）を計算する（ステップＢ３）。
【００８５】
次に、計算手段１０２は、負荷均等化区分決定手段１２２により、例えば、４つの計算ノードを１つの区分として、以下のように３つの負荷均等化を行う区分Ｓ１，Ｓ２，Ｓ３を決定する（ステップＢ４）。
【００８６】
区分Ｓ１｛Ｎ１，Ｎ２，Ｎ３，Ｎ４｝
区分Ｓ２｛Ｎ５，Ｎ６，Ｎ７，Ｎ８｝
区分Ｓ３｛Ｎ９，Ｎ１０，Ｎ１１，Ｎ１２｝
【００８７】
続いて、計算手段１０２は、区分負荷情報計算手段１２３により、負荷測定手段１２１による測定結果および負荷均等化区分決定手段１１２の決定結果に基づき、各区分Ｓｊに対して、その区分に属する各計算ノードＮｉの単位データ当りの負荷Ｌｉ／Ｄｉを表８のように、また、その区分内部における区分全負荷ＳＡＬｊ＝Ｌｊ１＋…＋Ｌｊｌｊ，および負荷均等化後の目標となる負荷である区分均等負荷ＳＢＬｊ＝ＳＡＬｊ／ｌｊを、表９のように計算する（ステップＢ５）。なお、この計算は、各区分Ｓ１，Ｓ２，Ｓ３に閉じて可能であるためにオーバヘッドが少ない。
【００８８】
【表８】
2004013567.tif 000010
【００８９】
【表９】
2004013567.tif 000011
【００９０】
次に、計算手段１０２は、データ移動方式決定手段１２４により、区分負荷情報計算手段１２３による計算結果に基づき、各区分Ｓｊに関して、そこに含まれる各計算ノードの負荷が、負荷均等化後に区分均等負荷ＳＢＬｊに近い値になるように、その区分に属する各計算ノード内の記憶手段１０３上に割り付けるデータを決定する（ステップＢ６）。その際、区分均等負荷ＳＢＬｊと正確に同じ値にすることができない場合には、奇数番号の計算ノードでは１データ分負荷を多めに、偶数番号の計算ノードでは１データ分負荷を少なめにすると、表１０のようになる。
【００９１】
【表１０】
2004013567.tif 000012
【００９２】
さらに、計算手段１０２は、データ移動方式決定手段１２４により、表１０のようなデータ配置を実現するために、各計算ノードのどのデータをどの計算ノードに移動させる必要があるかの情報（データ移動方式）を、表１１のように生成する（ステップＢ７）。
【００９３】
【表１１】
2004013567.tif 000013
【００９４】
最後に、計算手段１０２は、計算ノード間データ移動手段１２５により、データ移動方式決定手段１２４による決定結果に基づき、計算ノード間通信手段１０４を利用して、実際に計算ノード間のデータの移動を行う（ステップＢ８）。
【００９５】
この結果、負荷の最も少ない計算ノードと負荷の最も多い計算ノードとの負荷比は、最初の６倍から２．１倍程度に縮小され、そのために発生するデータ転送の総量は４３、１つの計算ノードが転送しなければならない転送相手の計算ノード数の最大値は２となる。
【００９６】
これは、従来のように、単純に負荷均等化を図った場合の表６および表７と比べて、やはりコストが大幅に削減されている。
【００９７】
また、負荷均等化を行う毎に、各区分に含まれる計算ノードを変更することにより、長期的には大域的にも負荷の均等化を図ることができる。
【００９８】
【発明の効果】
第１の効果は、負荷均等化のためのオーバヘッドの削減を図れることにある。その理由は、負荷均等化の際に、計算対象を計算ノード間で移動させるときに移動範囲を局所的な範囲に抑えることにより、データの移動量，およびデータ移動の際の各計算ノードがデータを移動しなければならない他の計算ノード数が削減されるため、データの移動時間やデータの移動の際の計算ノード間の待ち合わせ時間を削減できるためである。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係る動的負荷均等化方法が適用された動的負荷均等化処理部の構成を示すブロック図である。
【図２】分散メモリ型マルチプロセッサシステムの構成を示すブロック図である。
【図３】図１の動的負荷均等化処理部の処理手順を表すフローチャートである。
【図４】第１の実施の形態に係る動的負荷均等化方法が適用される分散メモリ型マルチプロセッサシステムの具体例を示すブロック図である。
【図５】本発明の第２の実施の形態に係る動的負荷均等化方法が適用された動的負荷均等化処理部の構成を示すブロック図である。
【図６】図５の動的負荷均等化処理部の処理手順を表すフローチャートである。
【符号の説明】
１００　分散メモリ型マルチプロセッサシステム
１０１　計算ノード
１０２　計算手段
１０３　記憶手段
１０４　計算ノード間通信手段
１１０　動的負荷均等化処理部
１１１　負荷測定手段
１１２　負荷情報計算手段
１１３　負荷均等化区分決定手段
１１４　区分負荷情報計算手段
１１５　データ移動方式決定手段
１１６　計算ノード間データ移動手段
１２０　動的負荷均等化処理部
１２１　負荷測定手段
１２２　負荷均等化区分決定手段
１２３　区分負荷情報計算手段
１２４　データ移動方式決定手段
１２５　計算ノード間データ移動手段
Ａ１　自計算ノード負荷測定ステップ
Ａ２　他全計算ノード負荷情報収集ステップ
Ａ３　各計算ノード単位データ当りの負荷計算ステップ
Ａ４　全負荷および平均負荷計算ステップ
Ａ５　負荷均等化区分決定ステップ
Ａ６　区分全負荷および区分均等負荷計算ステップ
Ａ７　各計算ノード割り付けデータ決定ステップ
Ａ８　データ移動方式決定ステップ
Ａ９　計算ノード間データ移動ステップ
Ｂ１　自計算ノード負荷測定ステップ
Ｂ２　他全計算ノード負荷情報収集ステップ
Ｂ３　各計算ノード単位データ当りの負荷計算ステップ
Ｂ４　負荷均等化区分決定ステップ
Ｂ５　区分全負荷および区分均等負荷計算ステップ
Ｂ６　各計算ノード割り付けデータ決定ステップ
Ｂ７　データ移動方式決定ステップ
Ｂ８　計算ノード間データ移動ステップ
【図１】
2004013567.tif 000014
【図２】
2004013567.tif 000015
【図３】
2004013567.tif 000016
【図４】
2004013567.tif 000017
【図５】
2004013567.tif 000018
【図６】
2004013567.tif 000019