(57)【要約】  本発明は、プロセス移動に伴う計算プロセッサ間の通信負荷の増減の影響を含めた処理負荷量を適正に分散可能な並列計算機システムへの処理負荷配置方法を提供することを課題とする。  本発明では、複数の処理ノードに対して複数の処理負荷を分散配置して実行する並列計算機システムで、各処理負荷間の通信量の情報を取得し、取得した情報に基づいて、複数の処理ノードの内で配置の変更の対象となる処理ノードの対を選択し、選択した対の処理ノード間で処理負荷の移動を行った場合の該対の処理ノード間の通信負荷量の変化の予測を行い、予測結果に基づいて、前記複数の処理負荷の再配置を行うことで、上述の課題を解決する。
2014016950.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理ノードに対して複数の処理負荷を分散配置して実行する並列計算機システムへの処理負荷配置方法であって、
各処理負荷間の通信量の情報を取得し、
取得した情報に基づいて、前記複数の処理ノードの内で配置の変更の対象となる処理ノードの対を選択し、
選択した対の処理ノード間で処理負荷の移動を行った場合の該対の処理ノード間の通信負荷量の変化の予測を行い、
予測結果に基づいて、前記複数の処理負荷の再配置を行うことを特徴とする処理負荷配置方法。
【請求項２】
請求項１に記載の処理負荷配置方法において、
前記予測を行う際に、
さらに、該対の処理ノード間以外の各処理ノード間の通信負荷量の変化の予測も行うことを特徴とする処理負荷配置方法。
【請求項３】
請求項１に記載の処理負荷配置方法において、
前記並列計算機システムは複数回の処理を繰り返し、
前記複数回の処理の内の第１の処理の後に前記再配置を行うことを特徴とする処理負荷配置方法。
【請求項４】
請求項３に記載の処理負荷配置方法において、
前記第１の処理は、前記複数回の処理の内の最初の処理であることを特徴とする処理負荷配置方法。
【請求項５】
請求項１に記載の処理負荷配置方法において、
各処理負荷は、エージェントベースシミュレーションの各エージェントに対応していることを特徴とする処理負荷配置方法。
【請求項６】
請求項１に記載の処理負荷配置方法において、
各処理負荷は、グラフの各ノードに対応していることを特徴とする処理負荷配置方法。
【請求項７】
複数の処理ノードに対して複数の処理負荷を分散配置して実行する並列計算機システムであって、
各処理負荷間の通信量の情報を取得する手段と、
前記取得する手段が取得した情報に基づいて、前記複数の処理ノードの内で配置の変更の対象となる処理ノードの対を選択し、
選択した対の処理ノード間で処理負荷の移動を行った場合の該対の処理ノード間の通信負荷量の変化の予測を行い、
予測結果に基づいて、前記複数の処理負荷の再配置を行う手段とを有することを特徴とする並列計算機システム。
【請求項８】
請求項７に記載の並列計算機システムにおいて、
前記再配置を行う手段は、
前記予測を行う際に、
さらに、該対の処理ノード間以外の各処理ノード間の通信負荷量の変化の予測も行うことを特徴とする並列計算機システム。
【請求項９】
請求項７に記載の並列計算機システムにおいて、
前記並列計算機システムは複数回の処理を繰り返し、
前記再配置を行う手段は、
前記複数回の処理の内の第１の処理の後に前記再配置を行うことを特徴とする並列計算機システム。
【請求項１０】
請求項９に記載の並列計算機システムにおいて、
前記第１の処理は、前記複数回の処理の内の最初の処理であることを特徴とする並列計算機システム。
【請求項１１】
請求項７に記載の並列計算機システムにおいて、
各処理負荷は、エージェントベースシミュレーションの各エージェントに対応していることを特徴とする並列計算機システム。
【請求項１２】
複数の処理ノードに対して複数の処理負荷を分散配置して実行する並列計算機システムへの処理負荷配置方法であって、
各処理負荷間の通信量の情報を取得し、
前記分散配置の変更に伴う、
前記複数の処理ノードの内の第１処理ノードと前記複数の処理ノードの内の第２処理ノードの間の通信負荷量の変化、
前記第２処理ノードと前記複数の処理ノードの内の第３処理ノードの間の通信負荷量の変化、および
前記第３処理ノードと前記第１処理ノードの間の通信負荷量の変化の予測を行い、
取得した情報と予測結果とに基づいて、前記複数の処理負荷の再配置を行うことを特徴とする処理負荷配置方法。
【請求項１３】
請求項１２に記載の処理負荷配置方法において、
前記再配置を行う際に、
前記取得した情報に基づいて、
前記複数の処理ノードの内で配置の変更の対象となる処理ノードの対を選択し、
選択した対の処理ノード間で処理負荷の移動を行うことで前記分散配置の変更を行うことを特徴とする処理負荷配置方法。
【請求項１４】
請求項１２に記載の処理負荷配置方法において、
前記並列計算機システムは複数回の処理を繰り返し、
前記複数回の処理の内の第１の処理の後に前記再配置を行うことを特徴とする処理負荷配置方法。
【請求項１５】
請求項１４に記載の処理負荷配置方法において、
前記第１の処理は、前記複数回の処理の内の最初の処理であることを特徴とする処理負荷配置方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算機システムに関し、特に並列計算機システムへの処理負荷配置に関する。
【背景技術】
【０００２】
本技術分野の背景技術として特許文献１に記載の技術がある。この公報には、複数の計算機の負荷を適正に分散する負荷分散方法が記載されている。具体的には、あるプロセス（特許文献１ではプログラムと記載）を自己の計算プロセッサ（特許文献１では実行器と記載）で実行した場合の各計算プロセッサとの間の移動前通信時間と、その処理を他の計算プロセッサに移動させた場合の各プロセッサとの間の移動後通信時間とを求め、移動後通信時間が移動前通信時間より短くなるようにプロセスを他の計算プロセッサに移動させる方法が記載されている。また、本技術分野の背景技術として特許文献２に記載の技術がある。この公報には、並列計算機システムにおいて、システム全体の通信効率が最適になるように実行中のプロセスを別プロセスで実行させる方法が記載されている。具体的には、動作中のプロセスからの他の計算プロセッサへ送信を行う際、通信使用量が通信量のしきい値を超える場合には、受信側の近傍の計算プロセッサの中で最少の通信使用量である計算プロセッサを選択し、該当プロセッサへ実行中のプロセスのものを移動する方法が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平８−３０５５８号公報
【特許文献２】特開平１１−１５４１４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、複雑な経済システムや社会の動きの解析や予測を行うため、エージェントベースシミュレーション（ＡＢＳ：Ａｇｅｎｔ−ｂａｓｅｄ  Ｓｉｍｕｌａｔｉｏｎ）と呼ばれる手法の需要が高まりつつある。ＡＢＳにおいては、自律的な意思決定を行う複数のエージェントから構成され、エージェント同士の相互作用も加味してシステムの振る舞いを考察することが一般的である。並列計算を用いてＡＢＳを実行する場合、エージェントをグループピングして各計算プロセッサに割り振り、エージェント同士の相互作用はネットワークを介して伝播させることになる。【０００５】
ここで、前述した特許文献１の計算機システムにおいては、プロセスを他の計算プロセッサに移動させるか否かの判断は、プロセス実行時間とプロセス移動に伴う通信時間の和に基づいており、プロセス実行中に発生する計算ノード間の通信については考慮されていない。したがって、ＡＢＳのように計算プロセッサ間の通信が多数発生するプロセスにおいては、通信分を含めた処理負荷量を適正に分散することが困難であった。【０００６】
一方、前述した特許文献２の計算機システムは、プロセス実行中における計算プロセッサ間の通信負荷をプロセス移動の判断基準にしているものの、プロセス移動に伴い別の通信経路で発生する通信負荷の増減については考慮されていない。したがって、ＡＢＳのように計算プロセッサ間の通信が多数発生するプロセスにおいては、プロセス移動に伴い別の通信経路の通信が増大する可能性が高く、通信分を含めた処理負荷量を適正に分散することが困難であった。【０００７】
本発明は、上記の課題を鑑みてなされたものであり、その目的は、プロセス移動に伴う計算プロセッサ間の通信負荷の増減の影響を含めた処理負荷量を適正に分散可能な、並列計算機システムへの処理負荷配置方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明では、複数の処理ノードに対して複数の処理負荷を分散配置して実行する並列計算機システムで、各処理負荷間の通信量の情報を取得し、取得した情報に基づいて、複数の処理ノードの内で配置の変更の対象となる処理ノードの対を選択し、選択した対の処理ノード間で処理負荷の移動を行った場合の該対の処理ノード間の通信負荷量の変化の予測を行い、予測結果に基づいて、前記複数の処理負荷の再配置を行うことで、上述の課題を解決する。
【発明の効果】
【０００９】
本発明によれば、ＡＢＳのように計算プロセッサ間の通信が多数発生するプロセスにおいても、通信分を含めた処理負荷量を適正に分散することが可能となり、並列計算機システムでの処理の高速化を図ることが可能となる。
【図面の簡単な説明】
【００１０】
【図１】並列計算機システムの機能を説明するブロック図である。
【図２】並列計算機システムのハードウエアイメージを説明するブロック図である。
【図３】並列計算機システムの動作を説明するフローチャートである。
【図４】処理負荷配置手段の動作を説明するためのリストである。
【図５】処理負荷配置手段の動作イメージを説明するための図である。
【図６】負荷監視手段の動作を説明するためのリストである。
【図７（ａ）】処理負荷配置手段の動作を説明するためのリストである。
【図７（ｂ）】処理負荷配置手段の動作を説明するためのリストである。
【図８】処理負荷配置手段の動作イメージを説明するための図である。
【図９】負荷監視手段の動作を説明するためのリストである。
【図１０（ａ）】処理負荷配置手段の動作を説明するためのリストである。
【図１０（ｂ）】処理負荷配置手段の動作を説明するためのリストである。
【図１１】処理負荷配置手段の動作イメージを説明するための図である。
【図１２】負荷監視手段の動作を説明するためのリストである。
【図１３】負荷監視手段の動作を説明するためのリストである。
【図１４】負荷監視手段の動作を説明するためのリストである。
【発明を実施するための形態】
【００１１】
以下、実施例を図面を用いて説明する。
【実施例１】
【００１２】
本実施例では、ＡＢＳ等の並列処理を伴う計算を実行する際に、通信分を含めた処理負荷量を適正に分散可能な並列計算機システムの例について説明する。【００１３】
図１は、本実施例の並列計算機システム１００の機能ブロック図である。並列計算機システム１００は、複数の情報処理装置を備える。並列計算機システム１００の複数の情報処理装置には、１台の管理ノード１０１と３台の処理ノード１０２〜１０４とが含まれる。管理ノード１０１と処理ノード１０２〜１０４は、それぞれ例えばサーバ装置である。以下の説明では、特定の処理ノードを指して説明する際に、処理ノード１０２を処理ノード１と、処理ノード１０３を処理ノード２と、処理ノード１０４を処理ノード３と呼ぶ。管理ノード１０１には、プログラム情報１０５、処理負荷配置情報１０６、監視結果情報１０７、処理負荷配置手段１０８、通信制御手段１０９、および演算結果集計手段１１０が配置される。各処理ノードには、処理情報１１１、演算必要情報１１２、演算処理手段１１３、通信制御手段１１４、および負荷監視手段１１５が配置される。並列計算機システム１００は、ストレージ装置１１７を備える。管理ノード１０１、ストレージ装置１１７、および処理ノード１０２〜１０４は、通信経路制御手段１１６を介して接続される。【００１４】
図２は、図１の機能ブロックをハードウエアイメージで示したものである。管理ノード１０１、および処理ノード１０２〜１０４のそれぞれは、中央処理装置（ＣＰＵ）２０１、メモリ２０２、および通信手段２０３を有する。通信経路制御手段１１６には、各種のネットワーク装置を用いることが可能である。本実施例では、通信経路制御手段１１６にネットワークスイッチを用いる。【００１５】
次に、本実施例の並列計算機システム１００の動作について説明する。図３は、並列計算機システム１００の動作を示すフローチャートである。【００１６】
まず、管理ノード１０１のメモリ２０２にストレージ装置１１７からプログラムがロードされ、プログラム情報１０５として格納される。格納されたプログラム情報１０５は、ＡＢＳの各エージェントが実施する演算情報、およびエージェント同士が実施する通信に関する情報などを含む。本実施例ではＡ〜Ｒの１８個のエージェントから構成されるＡＢＳで説明する。また、本実施例のＡＢＳにおいては、エージェントの演算係数を変更しながら処理を２０回繰り返すものとする。【００１７】
次に、処理負荷配置３０１以降での並列計算機システム１００の動作について説明する。図３において、処理負荷配置３０１以降には、処理実行３０２、負荷解析３０３、処理負荷再配置３０４、設定変更３０５、処理実行３０６、負荷解析３０７、および結果出力３０８の各ステップがある。【００１８】
まず、処理負荷配置３０１は、管理ノード１０１の処理負荷配置手段１０８および通信制御手段１０９により実行される。まず、処理負荷配置手段１０８は、格納されたプログラム情報１０５を読み出し、例えばエージェントＡからＲを、処理ノード１、処理ノード２、処理ノード３に対してサイクリックに割り当てる。そして、各処理ノード内の各エージェントが実施する演算情報や、エージェント同士が実施する通信に関する情報などを、通信制御手段１０８を用いて送信し、これらは処理情報１１１として各処理ノードのメモリ２０２に格納される。図４は、各エージェントの処理ノードへの配置先、および通信するエージェントの関係を示すリストであり、この情報は処理負荷配置情報１０６として格納される。また、図５は、図４のリストをイメージ化したものであり、各エージェントを丸印、通信が必要なエージェント同士を実線の結線、点線を各処理ノードの担当領域として表現したものである。【００１９】
次に、第１回目の処理実行３０２での並列計算機システム１００の動作について説明する。処理実行３０２は、各処理ノードの演算処理手段１１３によって実行される。演算処理手段１１３は、処理情報１１１および演算必要情報１１２を読み出し、これらの情報から各処理ノード内の各エージェントの演算を実行してその結果を出力する。ここで、演算必要情報１１２とは、各処理ノード内のエージェントが演算を行うために必要な情報であり、例えば他のエージェントで実行された演算の結果である。また、演算処理手段１１３における演算の順番や並列度、他の処理ノードとの同期などは、演算必要情報１１２に基づいて定められており、これらは処理情報１１１に含まれている。さらに、演算処理手段１１３における演算結果は、通信制御手段１１４を用いて送信され、管理ノード１０１の演算集計手段１１０に格納されると共に、その情報を必要とする処理ノードの演算必要情報１１２にも格納される。【００２０】
次に、負荷解析３０３の動作について説明する。負荷解析３０３は、各処理ノードの負荷監視手段１１５により実行される。負荷監視手段１１５は、通信制御手段１１４の通信負荷を監視し、監視結果は、通信制御手段１１４を用いて管理ノード１０１に送信され、監視結果情報１０７として格納される。ここで、監視する通信負荷とは、第１回目の処理実行３０２において、処理ノード間の通信時間を測定したものであり、例えば各処理装置の通信手段２０３または通信経路制御手段１１６で測定される。この指標を選定した理由は、処理ノード間を跨ぐエージェント同士の通信速度が処理ノード内のそれと比べてはるかに遅く、処理のボトルネックになり易いと考えたためである。図６は、各処理ノードから送信された監視結果情報１０７の例である。なお、図６において、通信時間は図５のイメージ図における各処理ノード間の結線本数に比例しているが、これは、説明の便宜上、エージェント同士の通信量が全て等しいと仮定したためである。すなわち、本実施例では、各処理ノード間の通信量を、結線本数で評価する。【００２１】
次に、処理負荷再配置３０４の動作について説明する。処理負荷再配置３０４は、管理ノード１０８の処理負荷配置手段１０８により実行される。処理負荷配置手段１０８は、監視結果情報１０７を読み出し、最も通信負荷の高いボトルネック経路を判定する。例えば図６においては、処理ノード１と処理ノード２との間の平均使用率が１００％と最も高いので、この経路をボトルネック経路と判定する。次に、処理負荷配置手段１０８は、ボトルネック緩和のために移動すべきエージェントの選定を行う。この選定に対する考え方を、図５のイメージ図を用いて説明する。【００２２】
先に述べたように、通信時間が各処理ノード間の結線本数に比例していると仮定していることから、処理ノード１と処理ノード２との間の結線本数を削減することで、通信負荷分を含めた処理負荷の適正な分散を図る。そこで、管理ノード１０１の処理負荷配置手段１０８は、平均使用率が最も高い処理ノード１と処理ノード２の対を選択して、対の間で処理対象であるエージェントの移動を試みる。【００２３】
例えば、図５において、エージェントＤを処理ノード１から処理ノード２に移動させる場合、エージェントＢとの結線が処理ノード２内に移動するため、処理ノード１と処理ノード２との間の結線本数を１本削減可能である。しかしながら、エージェントＡ、Ｍ、Ｊとの３本の結線が、新たに処理ノード１と処理ノード２との間に発生する。したがって、処理ノード１と処理ノード２の結線本数は、移動前に比べて２本増加する。これに対し、エージェントＧを処理ノード１から処理ノード２に移動させる場合、エージェントＥ，Ｋ，Ｑとの結線が処理ノード２内に移動するため、処理ノード１と処理ノード２との間の結線本数を３本削減可能である。一方、エージェントＪとの１本の結線が、新たに処理ノード１と処理ノード２との間に発生する。したがって、処理ノード１と処理ノード２の結線本数は、移動前に比べて２本削減される。このように、自処理ノード内にあるエージェントとの結線本数から、移動対象の処理ノード内にあるエージェントとの結線本数を減算し、その結果がマイナスであれば、移動前に比べて処理ノード間の結線本数を削減させることが可能である。【００２４】
そこで、管理ノード１０１の処理負荷配置手段１０８は、図４で示した処理負荷配置情報１０６に基づき、選択した対の間で処理負荷を移動させた際の、処理ノード間の結線本数の変化を計算する。図７（ａ）は、処理ノード１を対象とした処理ノード間の結線本数の変化の計算結果の一例であり、処理ノード１内の各エージェントが通信するエージェントの数、および、各エージェントが処理ノード２に移動した場合の処理ノード間の結線本数の変化（増減）の情報が含まれる。ここで、処理ノード１と処理ノード２との間の結線本数の変化は、各エージェントが処理ノード１内で通信するエージェントの数から、各エージェントが通信する処理ノード２に配置されているエージェントの数を減算することで求めることができる。また、処理ノード２と処理ノード３との間の結線本数は、各処理ノードが通信する処理ノード３に配置されているエージェントの数だけ増える。さらに、処理ノード３と処理ノード１との間の結線本数の変化は、各エージェントが通信する処理ノード３に配置されているエージェントの数を０から減算することで求めることができる。なお、処理ノード２と処理ノード３との間の結線本数の増加の大きさと、処理ノード３と処理ノード１との間の結線本数の減少の大きさは一致する。【００２５】
ここで、処理ノード１と処理ノード２との間の結線本数の増減の列に着目すると、エージェントＧのみがマイナスの値を有しており、また、エージェントＧでは、処理ノード２と処理ノード３との間の結線本数、および処理ノード３と処理ノード１との間の結線本数の増減は０である。したがって、処理負荷配置手段１０８は、エージェントＧを処理ノード２に移動させることで、処理ノード１と処理ノード２との間の結線本数を２本減らすことができ、かつそれ以外の処理ノード間の結線本数は増減しないという判定を得ることができる。同様に、図７（ｂ）は処理ノード２を対象とした場合のリストの例であり、各エージェントが処理ノード１に移動した場合の処理ノード間の結線本数の増減が含まれている。図７（ｂ）において、処理ノード１と処理ノード２との間の結線本数の増減の列に着目すると、マイナスの値を有するエージェントが無いことが分かる。以上のことから、処理負荷配置手段１０８は、ボトルネック緩和のためには、処理ノード１内にあるエージェントＧを、処理ノード２に移動すれば良いと判定する。なお、ボトルネック解消のための処理対象の移動の候補が複数有る場合には、最も結線本数を減少させる候補、すなわち最も全体の通信負荷を減少させる候補を選択することで、より通信負荷を効率よく下げることが可能である。また、ボトルネック解消のための処理対象の移動の候補が複数有る場合は、処理負荷の移動が行われる処理ノードの対以外の処理ノード間に結線本数の増加を伴わない候補を選ぶことで、処理負荷の移動に伴う新たなボトルネックの発生を防ぐことができる。上述のエージェントＧの移動は、最も通信負荷量を減少させる候補であり、かつ、新たなボトルネックの発生を防ぐ理想的な移動である。【００２６】
以上の解析結果に基づき、処理負荷配置手段１０８は、エージェントＧが処理ノード２に配置されるように図４のリストを更新し、処理負荷配置情報１０６として再度格納する。【００２７】
次に、設定変更３０５での並列計算機システム１００の動作について説明する。設定変更３０５の内容はプログラム情報１０５に含まれており、管理ノード１０１は、処理実行の回数に応じて、通信制御手段１０８を用いて各処理ノードの処理情報１１１の内容を更新する。設定変更３０５は、本実施例においては、各エージェントの演算係数の変更とする。【００２８】
以上の動作により、第１回目の処理手順が完了し、第２回目の処理実行３０２に移行する。第２回目の処理実行３０２は、第１回目の処理手順により更新された処理負荷配置情報１０６および処理情報１１１に基づいて行われる。【００２９】
処理実行３０２および負荷解析３０３は、各エージェントの演算係数が変更されている点、およびエージェントＧが処理ノード２に配置されている点の違いはあるものの、並列計算機システム１００は、機能的には第１回目の処理実行３０２および負荷解析３０３と同様の動作を行う。具体的には、並列計算機システム１００は、図８のイメージ図で示す処理負荷配置に基づき処理実行３０２を行い、負荷解析３０３により図９に示す監視結果情報１０７を得る。【００３０】
次に、負荷再配置３０４では、処理負荷配置手段１０８は、図９に示した監視結果情報１０７から、ボトルネック経路が最も通信時間が長い処理ノード２と処理ノード３との間であると判定する。【００３１】
次に、処理ノード間の結線本数の増減の計算を行い、処理負荷配置手段１０８は、図１０に示す計算結果に基づき、処理ノード２と処理ノード３との間の結線本数を削減するには、エージェントＮを処理ノード３から処理ノード２へ移動すれば良いという判定を行う。さらに、処理負荷配置手段１０８は、エージェントＮが処理ノード２に配置されるように図４のリストを更新し、更新したリストを処理負荷配置情報１０６として再度格納する。【００３２】
図１１は更新された処理負荷配置情報１０６のイメージ図である。その後、並列計算機システム１００の動作は設定変更３０５に移行し、第一回目の処理手順と同様に処理情報１１１の内容が更新される。【００３３】
以上の動作により、第２回目の処理手順が完了し、第３回目の処理手順に移行する。第３回目以降の処理手順では、処理負荷再配置３０４は実行されず、処理実行３０６、負荷解析３０７、および設定変更３０５を実施し、第２０回目の処理手順が完了するまで同様の動作を繰り返す。なお、処理実行３０６、負荷解析３０７、および設定変更３０５の動作は、機能的には第１回目や第２回目の処理手順と同様である。なお、第３回目以降の処理手順において、負荷解析３０７の結果は図１２に示す監視結果情報１０７となり、図９に示した監視結果情報１０７と比べて、さらに通信時間が減少していることが分かる。このように、並列処理の初期の段階で処理負荷の再配置を行うことで、再配置後の通信時間を減少の恩恵を多く受けることが可能となる。【００３４】
最後に、結果出力３０８での並列計算機システム１００の動作について説明する。第１回目から第２０回目までの演算結果は、演算集計手段１１０に格納されており、並列計算機システム１００はこれらの結果をプログラム情報１０５に基づき出力する。なお、本実施例では演算結果の出力先については明示していないが、出力先として、例えば画像表示装置やプリンタ、外部ストレージなどを用いることができる。【００３５】
以上説明した本発明第１の実施例によれば、第１回目よりも第２回目の処理手順の方が通信ボトルネックを緩和でき、さらに第２回目よりも第３回目の処理手順の方が通信ボトルネックを緩和できる。つまり、計算プロセッサ間の通信が多数発生するＡＢＳのような並列処理を実行する際において、通信分の処理負荷量を適正に分散可能な並列計算機システムを提供することが可能である。【００３６】
なお、本発明の実施例においては処理負荷再配置を２回としているが、これに限られる訳ではなく、１回または３回以上に設定ことも可能である。ただし、処理負荷再配置の処理自体にも処理時間が発生するため、ある程度ボトルネックが解消した後に処理負荷再配置を繰り返すことは効率的ではない。したがって、一回の処理手順を実行するための時間とその繰り返し回数、および処理負荷再配置を実行するための時間とのバランスを考えて、処理負荷再配置の繰り返し回数を決定することが望ましい。ボトルネックの解消は早い段階で行われる方が望ましいので、上述の第１回目の処理手順で処理負荷再配置を行うのが望ましい。【００３７】
本実施例では、処理負荷再配置の動作を通信時間の比較により判断したが、これに限られる訳ではなく、例えば通信時間のしきい値を設けて、しきい値を超えた場合のみ処理負荷再配置を実行することも可能である。【００３８】
また、処理手順を実行する前に処理負荷再配置を繰り返しておき、処理ノード間の結線本数を均一化しておくことも可能である。しかし、実際の処理ノード間の通信時間は、各種要因により、必ずしも結線本数に依存しないことが考えられる。したがって、上記の処理手順を行う場合にも、通信負荷の監視機能および再配置機能を設けておくことが望ましい。なお、各種要因により、処理負荷再配置後の通信時間が明らかに増大した場合は、次候補の処理負荷配置を実行することや、元の処理負荷配置処理に戻すことも可能である。【００３９】
また、ネットワークのトポロジに依存して、処理ノード間の通信帯域が異なることが考えられ、この場合には同じ情報量の通信を実行しても、処理ノード間で通信時間が異なることが考えられる。この場合には、各処理ノード間における単位情報量あたりの通信時間を予め測定または装置の仕様から算出しておき、この情報を加味して処理負荷再配置を実行することで、通信時間の均一化が可能である。【００４０】
さらに、本実施例においては、並列計算の例としてＡＢＳを取り上げたが、これに限られる訳ではなく、例えば最短経路探索などのグラフ処理と呼ばれる解析にも応用することが可能である。グラフ処理の場合には、グラフ頂点毎の処理が各処理負荷に対応する。さらに、本実施例においては、説明の便宜上、管理ノードを１台、処理ノードを３台としたが、これに限られる訳ではないことは言うまでもない。
【実施例２】
【００４１】
本実施例では、通信負荷の監視だけでなく演算負荷の監視も行い、双方の負荷量を加味して処理負荷量を適正に分散可能な並列計算システムの例について説明する。【００４２】
本実施例において、基本的な構成や動作は、本発明第１の実施例で示した並列計算機システム１００と同様である。本発明第１の実施例と異なる点は、負荷監視手段１１５の実行内容とその結果である監視結果情報１０７の内容、および処理負荷配置手段１０８の実行内容とその結果である処理負荷配置情報１０６の内容である。以下、これらの相違点について詳しく説明する。【００４３】
まず、負荷監視手段１１５は、本発明第１の実施例と同様に通信制御手段１１４の通信負荷を監視するが、新たに演算処理手段１１３の演算負荷についても監視する。ここで、監視する演算負荷とは、例えば処理実行３０２の動作時における、各処理ノードのＣＰＵ２０１の平均負荷率とメモリ２０２の平均使用率である。図１３は、各処理ノードから送信された監視結果情報１０７の例であり、図５で示した処理負荷配置イメージの場合を想定している。なお、図１３において、各処理ノードのＣＰＵ負荷率およびメモリ使用率は、図５のイメージ図におけるエージェントの数に比例しているが、これは、説明の便宜上、各エージェントで実行する演算量が全て等しいことを仮定したためである。【００４４】
次に、処理負荷配置手段１０８は、本発明第１の実施例と同様の動作を行うが、本発明第１の実施例との相違点は、ＣＰＵ負荷率またはメモリ使用率が、あるしきい値を超えた場合、エージェントの移動を実行しない点である。例えば、本実施における上記のしきい値を６５％とすると、図１３の監視結果情報１０７において、ＣＰＵ負荷率とメモリ使用率は共に６０％であることから、エージェントを移動しても良いと判断し、本発明第１の実施例と同様に、エージェントＧの移動を行う。【００４５】
次に第２回目の処理手順の実行に入り、同様に負荷の監視した結果が、図１４の監視結果情報１０７である。図１４において、ＣＰＵ負荷率とメモリ使用率は共に７０％としきい値の６５％を超えているため、候補となるエージェントＮの移動は行わず、図８に示す第２回目の配置イメージを変更せずに、第３回目以降の処理手順を実行する。【００４６】
以上説明した本発明第２の実施例によれば、第１回目よりも第２回目の処理手順の方が通信ボトルネックを緩和できる。しかし、さらなる通信ボトルネック緩和に向けたエージェントの移動を行おうとすると、演算処理に影響が生じるため、この時点での処理負荷配置を最適と判断する。つまり、計算プロセッサ間の通信が多数発生するＡＢＳのような処理を実行する際において、通信分を含めた処理負荷量を適正に分散可能な並列計算機システムを提供することが可能である。【００４７】
なお、本実施例においては、負荷の再配置を実行するか否かの判断基準として、ＣＰＵ負荷率またはメモリ使用率が６５％をしきい値としたが、これに限られる訳ではなく、通信時間と演算時間とのバランスを加味して、しきい値を決定することが望ましい。
【符号の説明】
【００４８】
１００：並列計算システム１００、１０１：管理ノード、１０２〜１０４：処理ノード１、１０５：プログラム情報、１０６：処理負荷配置情報、１０７：監視結果情報、１０８：処理負荷配置手段、１０９：通信制御手段、１１０：演算結果集計手段、１１１：処理情報、１１２：演算必要情報、１１３：演算処理手段、１１４：通信制御手段、１１５：負荷監視手段、１１６：通信経路制御手段、１１７：ストレージ装置、２０１：ＣＰＵ、２０２：メモリ、２０３：通信手段、３０１：処理負荷配置、３０２：処理実行、３０３：負荷解析、３０４：処理負荷再配置、３０５：設定変更、３０６：処理実行、３０７：負荷解析、３０８：結果出力。
【図１】
2014016950.tif 000003
【図２】
2014016950.tif 000004
【図３】
2014016950.tif 000005
【図４】
2014016950.tif 000006
【図５】
2014016950.tif 000007
【図６】
2014016950.tif 000008
【図７（ａ）】
2014016950.tif 000009
【図７（ｂ）】
2014016950.tif 000010
【図８】
2014016950.tif 000011
【図９】
2014016950.tif 000012
【図１０（ａ）】
2014016950.tif 000013
【図１０（ｂ）】
2014016950.tif 000014
【図１１】
2014016950.tif 000015
【図１２】
2014016950.tif 000016
【図１３】
2014016950.tif 000017
【図１４】
2014016950.tif 000018
【国際調査報告】
2014016950.tif 000019
2014016950.tif 000020
2014016950.tif 000021
2014016950.tif 000022