(57)【要約】  管理装置は、複数のコンピュータそれぞれの処理能力を含む管理情報を記憶する手段と、複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータからプログラムを実行するために要求される処理能力を含む要求値を取得する手段と、複数のコンピュータの中から、要求値に適合する処理能力のコンピュータを選択する選択手段と、プログラム実行コンピュータに割り当てられているプログラムを選択されたコンピュータへ割り当てる切替制御手段と、を備える。
2013038566.tif 000002
【特許請求の範囲】
【請求項１】
処理能力の異なる複数のコンピュータへの処理の割り当てを管理する管理装置であって、
前記複数のコンピュータそれぞれの処理能力を含む管理情報を記憶する手段と、
前記複数のコンピュータのうちのプログラムの実行が割り当てられているプログラム実行コンピュータから、前記プログラムを実行するために要求される処理能力を含む要求値を取得する手段と、
前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択手段と、
前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てる切替制御手段と、を備える管理装置。
【請求項２】
前記選択手段は、前記処理能力の要求値を満たすコンピュータが存在する場合には、前記処理能力の要求値を満たすコンピュータ中で最も処理能力の低い第１コンピュータを選択し、前記処理能力の要求値を満たすコンピュータが存在しない場合には、前記複数のコンピュータ中で最も処理能力の高い第２コンピュータを選択する請求項１に記載の管理装置。
【請求項３】
前記要求値は、前記プログラムを割り当てられるコンピュータに要求される、前記プログラムの実行の優先度を含み、
前記第１コンピュータの処理能力が前記プログラム実行コンピュータの処理能力より低く、かつ、前記要求値で指定される、前記第１コンピュータへ割り当てられるプログラムの優先度よりも高い優先度のプログラムが前記プログラム実行コンピュータに割り当てられていない場合に、前記選択された第１コンピュータへの割り当てに切り替えることを抑止する切替抑止手段をさらに備える請求項２に記載の管理装置。
【請求項４】
前記選択手段は、前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられた、前記処理能力の要求値を満たすコンピュータと、当該コンピュータよりも処理能力が高く、且つ前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられていないコンピュータとが存在する場合、前記選択手段は、前記第１コンピュータとして当該処理能力の高いコンピュータを選択する請求項２または３に記載の管理装置。
【請求項５】
処理能力の異なる複数のコンピュータと、前記複数のコンピュータへの処理の割り当てを管理する管理装置と、を有するコンピュータシステムであって、
前記管理装置は、
前記複数のコンピュータそれぞれの処理能力を含む管理情報を記憶する手段と、
前記複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータから前記プログラムを実行するために要求される処理能力を含む要求値を取得する手段と、
前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択手段と、
前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てる切替制御手段と、を備えるコンピュータシステム。
【請求項６】
前記選択手段は、前記処理能力の要求値を満たすコンピュータが存在する場合には、前記処理能力の要求値を満たすコンピュータ中で最も処理能力の低い第１コンピュータを選択し、前記処理能力の要求値を満たすコンピュータが存在しない場合には、前記複数のコンピュータ中で最も処理能力の高い第２コンピュータを選択する請求項５に記載のコンピュータシステム。
【請求項７】
前記要求値は、前記プログラムを割り当てられるコンピュータに要求される、前記プログラムの実行の優先度を含み、
前記第１コンピュータの処理能力が前記プログラム実行コンピュータの処理能力より低く、かつ、前記要求値で指定される、前記第１コンピュータへ割り当てられるプログラムの優先度よりも高い優先度のプログラムが前記プログラム実行コンピュータに割り当てられていない場合に、前記選択された第１コンピュータへの割り当てに切り替えることを抑止する切替抑止手段をさらに備える請求項６に記載のコンピュータシステム。
【請求項８】
前記選択手段は、前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられた、前記処理能力の要求値を満たすコンピュータと、当該コンピュータよりも処理能力が高く、且つ前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられていないコンピュータとが存在する場合、前記選択手段は、前記第１コンピュータとして当該処理能力の高いコンピュータを選択する請求項６または７に記載のコンピュータシステム。
【請求項９】
処理能力の異なる複数のコンピュータへの処理の割り当てを管理する管理方法であって、管理装置が、
前記複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータから前記プログラムを実行するために要求される処理能力を含む要求値を取得するステップと、
前記複数のコンピュータそれぞれの処理能力を示す情報を参照し、前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択ステップと、
前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てる切替制御ステップと、を実行する管理方法。
【請求項１０】
前記選択ステップでは、前記管理装置は、前記処理能力の要求値を満たすコンピュータが存在する場合には、前記処理能力の要求値を満たすコンピュータ中で最も処理能力の低い第１コンピュータを選択し、前記処理能力の要求値を満たすコンピュータが存在しない場合には、前記複数のコンピュータ中で最も処理能力の高い第２コンピュータを選択する請求項９に記載の管理方法。
【請求項１１】
前記要求値は、前記プログラムを割り当てられるコンピュータに要求される、前記プログラムの実行の優先度を含み、
前記第１コンピュータの処理能力が前記プログラム実行コンピュータの処理能力より低く、かつ、前記要求値で指定される、前記第１コンピュータへ割り当てられるプログラムの優先度よりも高い優先度のプログラムが前記プログラム実行コンピュータに割り当てられていない場合に、前記選択された第１コンピュータへの割り当てに切り替えることを抑止する切替抑止ステップをさらに実行する請求項１０に記載の管理方法。
【請求項１２】
前記選択ステップでは、前記管理装置は、前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられた、前記処理能力の要求値を満たすコンピュータと、当該コンピュータよりも処理能力が高く、且つ前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられていないコンピュータとが存在する場合、前記選択手段は、前記第１コンピュータとして当該処理能力の高いコンピュータを選択する請求項１０または１１に記載の管理方法。
【請求項１３】
管理装置に、処理能力の異なる複数のコンピュータへの処理の割り当てを管理させるプログラムであって、
前記複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータから前記プログラムを実行するために要求される処理能力を含む要求値を取得するステップと、
前記複数のコンピュータそれぞれの処理能力を示す情報を参照し、前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択ステップと、
前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てるステップと、を実行させるためのプログラム。
【請求項１４】
前記選択ステップでは、前記管理装置に、前記処理能力の要求値を満たすコンピュータが存在する場合には、前記処理能力の要求値を満たすコンピュータ中で最も処理能力の低い第１コンピュータを選択させ、前記処理能力の要求値を満たすコンピュータが存在しない場合には、前記複数のコンピュータ中で最も処理能力の高い第２コンピュータを選択させるための請求項１３に記載のプログラム。
【請求項１５】
前記要求値は、前記プログラムを割り当てられるコンピュータに要求される、前記プログラムの実行の優先度を含み、
前記第１コンピュータの処理能力が前記プログラム実行コンピュータの処理能力より低く、かつ、前記要求値で指定される、前記第１コンピュータへ割り当てられるプログラムの優先度よりも高い優先度のプログラムが前記プログラム実行コンピュータに割り当てられていない場合に、前記選択された第１コンピュータへの割り当てに切り替えることを抑止する切替抑止ステップをさらに実行させる請求項１４に記載のプログラム。
【請求項１６】
前記選択ステップでは、前記管理装置に、前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられた、前記処理能力の要求値を満たすコンピュータと、当該コンピュータよりも処理能力が高く、且つ前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられていないコンピュータとが存在する場合、前記選択手段は、前記第１コンピュータとして当該処理能力の高いコンピュータを選択させる請求項１４または１５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関するものである。
【背景技術】
【０００２】
コンピュータは、用途あるいはシステムの目的に応じて、様々な構成を取り得る。そして、コンピュータの構成に応じて、処理能力あるいはハードウェア資源等が異なる。例えば、コンピュータの一例として、並列計算機を考える。並列計算機としては、計算ノードの数、あるいは計算ノード間を接続するネットワークの構成等によって、種々のシステム構成があり得る。さらに、種々の構成のコンピュータ、並列計算機を組み合わせたコンピュータシステムを構築することもできる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２１６０５８号公報
【特許文献２】特開２０１０−２０４９７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
様々な構成のコンピュータを組み合わせたコンピュータシステムを利用する場合に、コンピュータシステム全体の利用効率の点で、改善の余地がある場合がある。例えば、様々な構成のコンピュータを組み合わせたコンピュータシステム上で複数のプログラムを実行する場合を考える。ここでは、実行される複数のコンピュータプログラム（以下、単にプログラム）に、それぞれ適切なコンピュータを割り当ててプログラムを実行することを想定する。その場合に、実行されるそれぞれのプログラムでは、以下のケースが生じ得る。
（１）一のプログラムは、割り当てられたコンピュータのハードウェアリソースの一部を利用し、残りは未使用となる場合がある。例えば、並列計算機の複数の計算ノードのうち、一部の計算ノードが利用され、残りの計算ノードは未使用となる場合である。
（２）並列計算機のような複数の計算ノードを含むコンピュータの利用において、計算ノード間の通信が行われず、計算ノード間を接続するネットワークが利用されない場合がある。あるいは、特定の計算ノード間の通信が限定的に行われ、他の計算ノード間の通信が行われない場合がある。【０００５】
したがって、従来のコンピュータシステムでは、構成の異なる複数のコンピュータを含むコンピュータシステムにおいて複数のプログラムを実行する場合に、コンピュータシステムが効率的に利用されない場合があった。【０００６】
１つの側面では、本発明は、異なる構成のコンピュータを組み合わせたコンピュータシステムを利用する場合のコンピュータシステムの利用効率の向上を図ることを目的とする。
【課題を解決するための手段】
【０００７】
開示の技術の一側面は、処理能力の異なる複数のコンピュータへの処理の割り当てを管理する管理装置として例示できる。この管理装置は、複数のコンピュータそれぞれの処理能力を含む管理情報を記憶する手段と、複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータからプログラムを実行するために要求される処理能力を含む要求値を取得する手段と、複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択手段と、プログラム実行コンピュータに割り当てられているプログラムを選択されたコンピュータへ割り当てる切替制御手段と、を備える。
【発明の効果】
【０００８】
本コンピュータシステムによれば、コンピュータシステムの利用効率の向上を図ることができる。
【図面の簡単な説明】
【０００９】
【図１】比較例に係るコンピュータシステムの構成を例示する図である。
【図２】コンピュータの構成を例示する図である。
【図３】並列計算機上でのプログラムの実行状況を例示する図である。
【図４】実施例１のコンピュータシステムの構成図を例示する図である。
【図５】コンピュータシステムの機能を例示する図である。
【図６】並列計算機環境側の処理フローを例示する図である。
【図７】ジョブマネージャ側の処理フローを例示する図である。
【図８】プログラムの次の実行環境を決定する処理の詳細を例示する図である。
【図９】並列計算機環境テーブルのデータ例を示す図である。
【図１０】並列計算機環境Ｎ１６Ｃ１００を例示する図である。
【図１１】並列計算機環境Ｎ１６Ｃ５０を例示する図である。
【図１２】並列計算機環境Ｎ１６Ｃ０を例示する図である。
【図１３】並列計算機環境Ｎ９Ｃ１００を例示する図である。
【図１４】並列計算機環境Ｎ９Ｃ０を例示する図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して実施形態の一側面に係るコンピュータシステムについて説明する。以下の実施形態の構成は例示であり、本コンピュータシステムは実施形態の構成には限定されない。
＜比較例＞
図１に、比較例に係るコンピュータシステムの構成を例示する。比較例のコンピュータシステムは、Ｒ＝０からＲ＝Ｎで例示される複数の計算ノードと、計算ノードでのプログラムの実行を管理するフロントエンドノードとを相互結合ネットワークで接続している。
【００１１】
ここで、計算ノードおよびフロントエンドノードの構成に特に限定はない。したがって、計算ノードおよびフロントエンドノードは、例えば、ブレードサーバと呼ばれるものでもよく、一般的なパーソナルコンピュータでもよい。
【００１２】
図２に、計算ノードあるいはフロントエンドノードとして用いることができるコンピュータ１０の構成を例示する。計算ノードおよびフロントエンドノードは、Central Processing Unit（ＣＰＵ）１１、主記憶装置１２、インターフェース１８を通じて接続される外部機器を有し、プログラムにより情報処理を実行する。外部機器としては、外部記憶装置１３および通信インターフェース１４を例示できる。外部記憶装置１３としては、例えば、ハードディスク、Solid State Drive（ＳＳＤ）等を例示できる。計算ノードおよびフロントエンドノードは、通信インターフェース１４により相互結合ネットワークに接続される。
【００１３】
また、計算ノードおよびフロントエンドノードは、入力装置１５、表示装置１６等によるユーザインターフェースを有するようにしてもよい。入力装置１５は、例えば、キーボード、ポインティングデバイス等である。また、表示装置１６は、例えば、液晶ディスプレイ、エレクトロルミネッセンスパネル等である。さらに、計算ノードおよびフロントエンドノードは、着脱可能記憶媒体の駆動装置１７を設けてもよい。着脱可能記憶媒体は、例えば、ブルーレイディスク、Digital Versatile Disk（ＤＶＤ）、Compact Disc（ＣＤ）、フラッシュメモリカード等である。なお、図２の例では、単一のインターフェース１８が例示されているが、インターフェース１８として複数種類のものが複数設けられてもよい。
【００１４】
また、相互結合ネットワークについても、特に限定はない。相互結合ネットワークは、例えば、Network Interface Card(NIC)で接続されるLocal Area Network(ＬＡＮ)等でもよい。また、相互結合ネットワークは、Fibre Channel （ファイバーチャネル）、InfiniBand（インフィニバンド）等の通信インターフェースで接続されるネットワークでもよい。
【００１５】
ところで、図１に例示される並列計算機の特徴は、例えば、複数の計算ノードと、高速かつ大容量の計算ノード間のデータ通信処理機能である。並列計算機を利用するプログラムは、これらの特徴を利用することで処理速度を単一構成の計算機よりも高速化する。
【００１６】
しかしながら、プログラムの実行の開始時点から終了時点の全般に渡って、並列計算機の機能を使う訳ではない。例えば、プログラムの実行時には、一時的もしくはある時点以降、次の状態になることがある。例えば、１つのプログラムが図１のような並列計算機の複数の計算ノードを割り当てられた場合を想定する。
（１）プログラムは、割り当てられた計算ノードの一部を利用する場合がある。
（２）プログラムは、計算ノードを利用するけれども、計算ノード間で通信は行わない場合がある。
（３）プログラムは、計算ノード間で通信を行う。しかし、並列計算機全体としては、ある計算ノードのグループ間に限定した通信が行われ、他の計算ノード間では、通信が行われない場合がある。
【００１７】
すなわち、並列計算機を利用しているにもかかわらず、その特徴を十分には利用していないという状況が生じ得る。一般的に、並列計算機は複数のユーザが共有して利用するものであり、一時的であってもプログラムがその特徴を利用していない場合は、潜在的には利用に無駄があることになる。
【００１８】
図３に、並列計算機上でのプログラムの実行状況を例示する。図３は、Ｒ＝０からＲ＝Ｎで例示される計算ノード上でプログラムの実行の状態が時刻ｔを付された時間軸（縦軸）に対して示されている。プログラムは、各計算ノード上のプロセスとして実行される。それぞれのプロセス中で実行されるプログラムの処理が丸印で概念的に例示されている。また、計算ノード間の通信は、丸印と丸印を横方向、あるいは斜め方向に結ぶ線で例示されている。さらに、並列計算機の各計算ノードの状態がＳＴ１−ＳＴ４等の記号で、時間軸方向の期間を区切って示されている。
【００１９】
図３の例では、プログラムは、まず実行開始時にすべての計算ノード上のプロセスとして実行を開始する。一般にプログラムの実行の開始直後はプロセス間での通信は発生しない（状態ＳＴ１）。並列計算機の利点の１つは、計算ノード間の大規模な通信処理である。すなわち、状態ＳＴ２のように各計算ノードのプロセス間で大規模な通信処理を行う状態が、並列計算機の１つの利点を活用している状態といえる。並列計算機上のプログラムは常にこのように通信している訳ではなく、一時的に通信がない状態や、通信は行うけれども一部の計算ノード間で小規模に行われるという状態（例えば、状態ＳＴ３）があり得る。
【００２０】
さらに、最初に割り当てた計算ノードの利用を途中から止めて、一部の計算ノードを利用するという状態になる場合（例えば、状態ＳＴ４）もある。このようなプログラムの実行状態を考えると、図３でＳＴ２以外の状態は必ずしも並列計算機を有効利用しているとは言えない。したがって、時間帯によって計算ノードや通信用のハードウェアが有効に利用されないという問題が生じ得る。
【実施例１】
【００２１】
図４から図９の図面を参照して、実施例１に係るコンピュータシステムを説明する。実施例１のコンピュータシステムは、コンピュータシステム上で実行中のプログラムから、実行状況の報告を受け付け、それぞれのプログラムの実行状況に適した実行環境を選択する。そして、実施例１のコンピュータシステムは、それぞれのプログラムの実行を選択された実行環境に変更する。【００２２】
図４に、実施例１のコンピュータシステムの構成図を例示する。このコンピュータシステムは、Ｅ＝０からＥ＝ｅによって示される複数の並列計算機環境と、これら複数の並列計算機環境とネットワーク２によって接続されるジョブマネージャ１と呼ぶ管理用のコンピュータとを有する。複数の並列計算機環境が処理能力の異なる複数のコンピュータの一例である。また、ジョブマネージャ１が管理装置の一例である。【００２３】
ここで、Ｅ＝０からＥ＝ｅによって示される複数の並列計算機環境のそれぞれは、例えば、図１で例示されるような並列計算機である。Ｅ＝０からＥ＝ｅの並列計算機環境は、例えば、それぞれ、複数の計算ノードと、計算ノードでのプログラムの実行を管理するフロントエンドノードとを有する。また、複数の計算ノードと、フロントエンドノードとは、相互結合ネットワークで接続される。計算ノードおよびフロントエンドノードの構成は、図２に例示したものと同様である。【００２４】
図４のように、実施例１のコンピュータシステムは、さらに、それぞれの並列計算機環境とジョブマネージャ１とをネットワーク２で接続する。ネットワーク２は、例えば、図１と同様の相互結合ネットワーク、すなわち、ＬＡＮ、Fibre Channel、InfiniBand等によるネットワークでもよい。また、ジョブマネージャ１は、図１のフロントエンドノードと同様に、ブレードサーバ、パーソナルコンピュータ等でよい。したがって、ジョブマネージャ１の構成は、図２で例示したものと同様である。【００２５】
図５に、本コンピュータシステムの機能を例示する。本コンピュータシステムでは、複数のプログラムが並列で実行される。ジョブマネージャ１は、それぞれのプログラムの実行状況を基に、それぞれのプログラムに対して並列計算機環境（Ｅ＝０からＥ＝ｅ）を割り当てる。【００２６】
並列計算機環境（Ｅ＝０からＥ＝ｅ）に割り当てられたプログラムは、実行待ちキューに登録され、それぞれ割り当てられた優先順にしたがって、各並列計算機環境で実行される。そして、各並列計算機環境で実行されるプログラムは、自身の実行状況をジョブマネージャ１に報告する。例えば、各プログラム中には、実行のための計算機リソースの要求値をジョブマネージャに通知する状況記述と呼ぶコードが記述される。計算機リソースが処理能力の一例である。計算機リソースとしては、計算ノード数、主記憶装置容量、計算ノード間の通信速度、計算ノード間の通信帯域幅等を例示できる。また、実行のための計算機リソースの要求値は、プログラムを実行するために要求される処理能力を含む要求値の一例である。プログラムを実行するために要求される処理能力とは、プログラム実行依頼元が、プログラムが割り当てられる並列計算機環境に要求する要求値である。この要求値は、例えば、プログラム実行依頼元が、所望の時間で実行結果を得るために設定する要求値である。【００２７】
例えば、並列計算機環境（Ｅ＝ｅ）のある計算ノードにおいて実行中のプログラムが状況記述に到達すると、その計算ノードのメモリに常駐するライブラリ関数が呼び出される。ライブラリ関数内では、計算ノードは、プログラムの実行状況、あるいは実行状況に応じた適切な計算機リソースの要求値をジョブマネージャ１に送信する。以下、プログラムの実行状況、あるいは実行状況に応じた適切な計算機リソースの要求値を単に、送信情報という。また、計算ノードは、送信情報とともに、プログラムの実行環境の変更に関する問い合わせをジョブマネージャ１に送信する。計算ノードからジョブマネージャ１への通信方法に限定はない。例えば、図１に例示したような計算ノード間が接続される相互結合ネットワークおよび並列計算機環境が接続されるネットワーク２を介して、計算ノードからジョブマネージャ１に問い合わせを送信すればよい。【００２８】
計算ノードとジョブマネージャ間の通信方法としては、例えば、Fibre Channel、InfiniBand、ＬＡＮ等で利用などのようなプロトコルを使用してもよい。また、プロトコルの階層としても、どのような階層を利用してもよい。例えば、Media Access Control(ＭＡＣ)アドレスを用いて、通信する専用プログラムをライブラリ関数に組み込み、計算ノードとジョブマネージャ１とが通信するようにしてもよい。また、例えば、ＴＣＰ／ＩＰのアプリケーション層で、計算ノードとジョブマネージャ１とが通信するプログラムをライブラリ関数に組み込み、計算ノードとジョブマネージャ１とが通信するようにしてもよい。また、計算ノードとジョブマネージャ１に、Remote Procedure Call（遠隔手続き呼び出し、ＲＰＣ）の機能が実装されている場合には、ＲＰＣを利用してもよい。いずれにしても、それぞれの計算ノード内のパラメータとして、ジョブマネージャ１のＭＡＣアドレス、ＩＰアドレス、ノード名等を保持しておけばよい。例えば、ライブラリ関数内で、計算ノードのOperating System（ＯＳ）から、宛先アドレス等を取得するようにすればよい。【００２９】
ジョブマネージャ１は複数の並列計算機環境（Ｅ＝０からＥ＝ｅ）の複数の計算ノードから並列にプログラムの実行環境の変更に関する問い合わせをイベントとして受け取る。この場合、１つの並列計算機環境の複数の計算ノードで実行されるプログラムから、それぞれの実行状況に応じて問い合わせイベントがジョブマネージャ１に送信されることも生じ得る。個々の計算ノードごとに、プログラムの実行状況が異なるからである。ジョブマネージャ１は受信した問い合わせイベントを順序付けて処理するためのイベントキューをもつ。【００３０】
すなわち、それぞれのプログラムからジョブマネージャ１への問い合わせは、問い合わせイベントとして、イベントキューに取り込まれる。ジョブマネージャ１は、イベントキューの優先順にしたがって、それぞれのプログラム（すなわち、それぞれの計算ノード）からの問い合わせイベントを逐次処理し、それぞれのプログラムに対して、問い合わせイベントに含まれる計算機リソースの要求値に応じて並列計算機環境（Ｅ＝０からＥ＝ｅ）を割り当てる。【００３１】
以上のようにして、本コンピュータシステムは、並列計算機の利用効率を高めるために、それぞれのプログラムの各計算ノードでの実行状況が並列計算機の特徴を利用している状況か否かという情報を例えば刻々収集する。そして、第１のプログラムが並列計算機の特徴を利用していない状況になった場合は、本コンピュータシステムは、例えば、その第１のプログラムの実行をより機能の劣る並列計算機環境に移動する。逆に、第２のプログラムの実行がより高機能の並列計算機を必要とする状況になった場合は、本コンピュータシステムは、第２のプログラムの実行をより高機能の並列計算機へ移動する。より具体的には、ジョブマネージャ１は、問い合わせイベントに適合する並列計算機環境を選択し、問い合わせイベントを発したプログラムに、現在実行されている並列計算機環境から、選択された並列計算機環境への切替を指示する。【００３２】
実行時にプログラムが並列計算機の特徴を利用しない状況になったこと、あるいは再びより高い機能を利用する状況になったことは、次の方法でプログラムがジョブマネージャ１に自己申告する。ここで、自己申告とは、例えば、計算ノードで実行中のプログラムから情報をジョブマネージャ１に送信することをいう。計算ノードで実行中のプログラムからジョブマネージャ１へ送信された情報を受信することによって、ジョブマネージャ１は各並列計算機環境でのプログラムの実行状況を検出する。【００３３】
＜ジョブマネージャ１への送信；プログラム内での状況記述＞
プログラム中にプログラムの実行状況、実行のための計算機リソースの要求値等の送信情報をジョブマネージャに送信する処理が記述される。送信情報を送信する処理の記述は、プログラム開発時に行えばよい。計算ノードのＣＰＵは、プログラムを実行中に送信情報を送信する処理の記述箇所に到達すると、その記述にしたがって、計算ノードがその時点でのプログラムの実行状況、計算機リソースの要求値等の送信情報を送信する。プログラム中に、送信情報を送信する処理である状況記述を組み込む方法としては、以下のものが考えられる。
（１）プログラマが明示的にプログラム内に送信情報を送信する処理をコーディングする。
（２）コンパイラがプログラムをコンパイルするときにプログラムを解析し、送信情報に含まれるプログラムの実行状況、計算機リソースの要求値等を自動的に設定し、ジョブマネージャ１に送信する記述を追加する。【００３４】
例えば、コンパイラは、プログラム中で、ループを検出すると、ループの回数Ｎを複数の部分ループの回数ｐｎに分割する。コンパイラは、例えば、それぞれの部分ループを異なる計算ノードで実行される異なる子プロセスに分割して実行するための実行形式を生成する。このとき、計算ノード数の要求値は、ループ回数Ｎ／部分ループ数ｐｎで算出できる。また、部分ループ数ｐｎは、並列実行される子プロセスの実行時間から決定できる。例えば、ｐｎが極端に小さく、計算ノード数の要求値が大きすぎる場合には、各計算ノードで実行される部分ループの処理時間よりも、計算ノード間の通信時間の方が長くなり、効率が低下する。計算ノード間の通信時間は、例えば、部分ループの実行を各計算ノードに依頼するための通信時間、および、各計算ノードから部分ループの実行結果を取得する通信時間等である。そこで、部分ループの回数ｐｎは、計算ノード間の通信時間等、並列計算のための制御のための無駄時間に対して、適切な倍率となる時間に設定することができる。【００３５】
また、コンパイラは、計算ノード間の通信時間等、並列計算のための制御のための無駄時間と、計算ノード間で授受する情報量とから、計算ノード間の通信速度、帯域幅等を算出し、通信機能のレベルを確定すればよい。また、コンパイラは、計算ノード間の通信時間、計算ノード間で授受する情報量、関与する計算ノードの数等から、ネットワークのトポロジを選択するようにしてもよい。そして、コンパイラは、選択したネットワークのトポロジを通信機能のレベルに反映してもよい。例えば、５つの計算ノード間での通信頻度が高い場合には、単純にマトリクスの縦横方向の通信ができればよい。また、例えば、９つの計算ノード間での通信頻度が高い場合には、対角方向にもリンクで接続されるネットワークを選択すればよい。
（３）プログラムのプロファイル情報を利用してもよい。例えば、プロファイル情報の解析プログラムが、過去にそのプログラムを実行したときのプロファイル情報から、実行状況、好ましい計算機リソース等を指定する記述文を作成し、プログラムへ追加するようにしてもよい。ループの回数Ｎがプログラム中で固定されている場合には、（２）で説明したように、コンパイル時にコンパイラが適切な計算ノード数を設定することは可能である。しかしながら、ループの回数Ｎがプログラム中で実行中に付与される動的なパラメータとして定義されている場合には、プログラムの実行まではループの回数Ｎが特定されない。ループの回数Ｎが動的なパラメータとしてプログラム中に定義されている場合には、プログラムを実行したプロファイルを基に、ループの回数Ｎを経験値として特定すればよい。そして、ループ回数Ｎを経験値としてコンパイラに引き渡せばよい。また、例えば、ループが複数個ある場合、あるいは、ループの回数Ｎ以外にコンパイラに引き渡すパラメータが複数ある場合には、プロファイル情報を解析する解析プログラムがコンパイラに引き渡すためのパラメータ群を生成するようにすればよい。コンパイラは解析結果としてのパラメータ値を受け取り、（２）と同様のコンパイルを実行し、計算ノード数の要求値、通信機能のレベル等を確定すればよい。ただし、バイナリコード変換プログラムがプロファイル情報を解析した結果得られるパラメータ群を基に、実行形式のバイナリコードを組み替えて、複数の計算ノードで実行されるようににしてもよい。【００３６】
各プログラムは、それぞれの計算ノードで実行中に実行状況、あるいは、計算機リソースの要求値をジョブマネージャ１に送信する。ジョブマネージャ１は、それぞれの並列計算機実行環境から送信された情報を基に、それぞれのプログラムに対する望ましい並列計算機環境を決定する。ジョブマネージャ１は、例えば、どのプログラムをどの実行環境に割り当てるのが望ましいかを決定する。このようなジョブマネージャ１の処理は、ジョブ管理とも呼ばれる。ジョブマネージャ１は、ジョブ管理により、複数の並列計算機環境を含むコンピュータシステム全体として、複数のプログラムの実行中に適切な並列計算機環境の割り当てを実現する。ジョブマネージャ１は、各並列計算機環境で検出したプログラムの実行状況、あるいは計算機リソースの要求値と、その時点でプログラムが実行されている各並列計算機環境を考慮して、実行中のプログラムの実行環境を変更するかどうか判断する。【００３７】
プログラム中でプログラムの実行状況、あるいは計算機リソースの要求値等をジョブマネージャ１に送信する処理を記述するために，以下の関数を用意する。ただし、関数名は、一例であり、本コンピュータシステムの処理が以下の関数名に限定される訳ではない。【００３８】
parallel_run_level (N_PRIORITY, N_NODE, N_CONNECTION, ADJUST_P);
ここで，各パラメータの意味は次の通りである．
N_PRIORITY：N_PRIORITYは、この関数の実行以降のプログラムの実行の優先順位を指定する。この優先順位は、例えば、対象とする並列計算機環境全体で相対的な値とする。【００３９】
N_NODE：N_NODEは、上記関数の実行以降、プログラムの実行のために望ましい計算ノードの数を指定する。【００４０】
N_CONNECTION：N_CONNECTIONは、上記関数の実行以降、プログラムの実行のために望ましい計算ノード間の通信機能のレベルを表す。例えば、N_CONNECTIONの値が100の場合は、プログラムが可能な限り高機能の通信処理を必要とすることを意味する。また、N_CONNECTIONの値が０の場合は、プログラムはほとんど通信を行わないことを意味する。【００４１】
ADJUST_P：移動先の対象である並列計算機環境がハードウェアの故障などで一時的に利用できない場合の方針を表す。ADJUST_Pの値がTRUEである場合は、他の並列計算機環境を選択して実行することを指定する。ADJUST_Pの値がFALSE である場合は、対象の並列計算機環境が復旧することを待つことを指定する。【００４２】
これらのパラメータは定数であってもよい。また、これらのパラメータは定数ではなく、実行時にプログラムが計算した値でもよい。プログラムの実行が、この関数の呼び出し箇所へ到達した場合、上記パラメータで指定されるプログラムの実行状況が、プログラムからジョブマネージャ１に報告される。ジョブマネージャ１は、報告されたプログラムの実行状況から、プログラムが実行されている並列計算機環境を維持するか、変更するか、をコンピュータシステムの現在の状況と、報告されたこれらのパラメータの値から決定する。【００４３】
本コンピュータシステム上で、ジョブマネージャ１による並列計算機環境の割り当てを受けるプログラムは、プログラム中にparallel_run_levelの呼び出し文を含む。parallel_run_levelはライブラリ関数として実装し、プログラムをコンパイルして実行可能ファイルを作成するときに，プログラムにリンクすればよい。【００４４】
＜実行状況の報告を利用したプログラムプログラムの実行環境の変更処理＞
図５で説明したように、計算ノードからジョブマネージャ１へのプログラムの実行状況、あるいは計算機リソースの要求値の送信によって、ジョブマネージャ１は、プログラムの実行環境を変更する。実施例１では、プログラムを実行する並列計算機環境側と、ジョブマネージャ１とが並行に処理を実行する。以下、プログラムが最初に並列計算機実行環境E = e 上で動いているものとする。以下、並列計算機実行環境E = eを単に、並列計算機Ｅ＝ｅという。また、「並列計算機Ｅ＝ｅのいずれかの計算ノードがプログラムを実行する」ことを単に、「並列計算機Ｅ＝ｅがプログラムを実行する」という。【００４５】
図６に、並列計算機環境側の処理フローを例示する。並列計算機Ｅ＝ｅは、プログラムの実行を終了した場合は、処理を完了する（Ｓ１）。【００４６】
並列計算機Ｅ＝ｅは、プログラムの実行中にparallel_run_level の呼び出し箇所に到達したら、parallel_run_levelのライブラリ関数を実行する（Ｓ２）。【００４７】
並列計算機Ｅ＝ｅは、parallel_run_level のライブラリ関数において、プログラム実行時の各パラメータの値N_PRIORITY，N_NODE，N_CONNECTION，ADJUST_P を取得する（Ｓ３）。【００４８】
並列計算機Ｅ＝ｅは、parallel_run_level のライブラリ関数においてジョブマネージャ１にプログラムの実行環境を変更した方がよいか否かの判断を問い合わせるために、問い合わせイベントを作成する。そして、並列計算機Ｅ＝ｅは、作成した問い合わせイベントをジョブマネージャ１に送信する。すると、ジョブマネージャ１によって、送信された問い合わせイベントがジョブマネージャ１のイベントキュー４に追加される（Ｓ４）。より具体的には、関数parallel_run_levelの呼び出し箇所に到達した計算ノードは、ランタイムライブラリ中に用意された通信機能により、関数parallel_run_levelのパラメータで与えられる情報をジョブマネージャ１に送信する。【００４９】
問い合わせイベントには以下の情報を含める。すなわち、問い合わせイベントに含まれる情報は、現在の並列計算機環境の番号e、プログラムのパラメータ値（N_PRIORITY，N_NODE，N_CONNECTION，ADJUST_P）である。ジョブマネージャ１は、イベントキュー４に追加された各問い合わせイベントのN_PRIORITYの値によって、問い合わせイベントの処理に優先順位を付けて処理する。【００５０】
さらに、並列計算機Ｅ＝ｅは、parallel_run_level のライブラリ関数において、ジョブマネージャ１から問い合わせイベントに対する返信メッセージが来るまで、プログラム実行状態を一時休止状態にする処理を実行する（Ｓ５）。【００５１】
そして、ジョブマネージャ１から問い合わせイベントに対する返信メッセージが返信されると、並列計算機Ｅ＝ｅは、その返信内容によって以下のように処理を分ける（Ｓ６）。【００５２】
プログラムの実行環境を変更しないことを指示する返信メッセージを受信した場合には、並列計算機Ｅ＝ｅは、一時休止状態からプログラムの実行を再開し、制御をＳ１に戻す。【００５３】
プログラムの実行環境を変更することを指示する返信メッセージを受信した場合、並列計算機Ｅ＝ｅは、制御をＳ７に進める。そして、並列計算機Ｅ＝ｅは、プログラムの実行環境の変更を指示する返信メッセージの内容から、移動する先の実行環境番号ｅ０を取り出す（Ｓ７）。【００５４】
次に、並列計算機Ｅ＝ｅは、プログラムの現在の実行イメージを主記憶装置、あるいは外部記憶装置に保存する。この場合、プログラムの現在の実行イメージとは、実行可能なバイナリデータ（プログラムのバイナリコード）の他、レジスタセットの値を含む、コンテキストと呼ばれるものである。コンテキストには、例えば、プログラムがどこまで実行されたかを示すチェックポイントと呼ばれる情報を含めてもよい。【００５５】
プログラムの現在の実行イメージの保存先は、プログラムの現在の実行環境である並列計算機Ｅ＝ｅと、移動する先の実行環境である並列計算機Ｅ＝ｅ０の両方からデータの読み出しと書き込みが可能な領域が望ましい。なお、並列計算機Ｅ＝ｅと、移動する先の並列計算機Ｅ＝ｅ０の両方からデータの読み出しと書き込みが可能な領域は、例えば、コンピュータシステムの共有メモリ、共有ディスク、ネットワーク２上の共有可能な記憶装置領域、ジョブマネージャ１の主記憶装置、ジョブマネージャ１の外部記憶装置等である。【００５６】
ただし、プログラムの現在の実行イメージを一旦、プログラムの現在の実行環境である並列計算機Ｅ＝ｅの主記憶装置、あるいは外部記憶装置に保存し、移動する先の実行環境である並列計算機Ｅ＝ｅ０の主記憶装置、あるいは外部記憶装置に転送してもよい。例えば、並列計算機Ｅ＝ｅは、並列計算機Ｅ＝ｅのフロントエンドプロセッサの主記憶装置、あるいは外部記憶装置に、現在の実行イメージを一旦保存すればよい。そして、並列計算機Ｅ＝ｅは、保存した現在の実行イメージを並列計算機Ｅ＝ｅ０のフロントエンドプロセッサの主記憶装置、あるいは外部記憶装置に、転送すればよい。【００５７】
新しい実行環境である並列計算機Ｅ＝ｅ０でプログラムの実行を継続するために、並列計算機Ｅ＝ｅは、並列計算機実行環境ｅ０の実行待ちキューにプログラムの実行予約の登録を並列計算機Ｅ＝ｅ０に依頼する（Ｓ８）。並列計算機Ｅ＝ｅ０は、実行待ちキューをプログラムのN_PRIORITY の値によって、プログラムの実行に優先順位を付けて処理する。【００５８】
新しい実行環境である並列計算機Ｅ＝ｅ０でプログラムの実行の継続実行が開始すると、プログラムは、新しい実行環境Ｅ＝ｅ０でステップＳ１からの処理を繰り返す。このとき、プログラムの実行イメージに含まれるコンテキスト、レジスタセットの値、チェックポイント等を用いて、プログラムの実行が再開される。【００５９】
図７に、ジョブマネージャ１側の処理フローを例示する。ジョブマネージャ１は、イベントキュー４が空ならば、次の問い合わせイベントが到着するまで待つ（Ｔ１）。以下、問い合わせイベントを単にイベントともいう。イベントキュー４が空でなければ、ジョブマネージャ１は、イベントキュー４の先頭からイベントＺを取り出す。そして、ジョブマネージャ１は、制御をＴ２に進める。【００６０】
ジョブマネージャ１は、イベントＺから次の情報を取り出す。すなわち、ジョブマネージャ１は、イベントを発行した並列計算機環境の番号e、およびイベントを発行したプログラムのパラメータ値（N_PRIORITY，N_NODE，N_CONNECTION，ADJUST_P）を読み出す（Ｔ２）。ジョブマネージャ１のＣＰＵは、プログラムを実行するために要求される要求値を取得する手段の一例として、Ｔ２の処理を実行する。【００６１】
次に、ジョブマネージャ１は、イベントＺから取り出した情報から、プログラムの実行環境の変更先の候補となるプログラムの実行環境の集合Ｃを作成する（Ｔ３）。集合Ｃはイベントを発行した並列計算機環境の番号eを含む可能性がある。つまり移動しないという選択肢もあり得る。集合Ｃの作成方法は以下の通りである。【００６２】
ジョブマネージャ１は、パラメータN_NODEの値をnとし、N_CONNECTIONの値をcとする。また、各並列計算機環境eの計算ノード数をNe、通信機能のレベルをCe とする。以下を満たす並列計算機環境の集合Cを求める。なお、各並列計算機環境の計算ノード数、通信機能のレベル等は、例えば、図９に例示する並列計算機環境テーブルで管理しておけばよい。【００６３】
C = ｛e｜Ne ＞＝ｎ、かつ、Ce＞＝c｝；
すなわち、ジョブマネージャ１は、イベントＺから取り出したパラメータに指定された計算機リソース以上の資源をもつ並列計算機環境の集合を作成する。【００６４】
次に、ジョブマネージャ１は、集合Ｃから、イベントＺに対応するプログラムの次の実行環境ｅ０を決定する（Ｔ４）。ジョブマネージャ１のＣＰＵは、選択手段の一例として、Ｔ４の処理を実行する。【００６５】
集合Ｃ= 空集合; である場合、すなわち、どの並列計算機環境を選択しても、パラメータに指定された計算機リソースが満足できない場合には、ジョブマネージャ１は、選択可能な並列計算機環境Ｅ＝０からＥ＝ｅの中で、最も高機能の並列計算機環境を選択する。どの並列計算機環境を選択しても、パラメータに指定された計算機リソースが満足できない場合には、最も高機能の並列計算機環境を選択するという点で、ジョブマネージャ１は、可能な範囲で要求値に適合する処理能力の並列計算機環境を選択すると言える。【００６６】
集合Ｃが複数の並列計算機環境の候補を含む場合には、ジョブマネージャ１は、集合Ｃに含まれる候補の中から最も機能の劣る並列計算機環境を選択する。移動先の計算機環境を決定する場合には、ジョブマネージャ１は、以下の追加の状況判断も実行する。集合Ｃに含まれる候補の中から最も機能の劣る並列計算機環境を選択するという点においても、ジョブマネージャ１は、可能な範囲で要求値に適合する処理能力の並列計算機環境を選択すると言える。【００６７】
パラメータ値から現在の計算機環境eよりも劣るレベルの計算機環境へ移動すると判断した場合で、かつeにN_PRIORITYよりも高い優先度をもつプログラムが実行待ちキューに存在しない場合；この場合には、ジョブマネージャ１は、現在の計算機環境eに余裕があると考えて、プログラムの実行環境を移動しないと判定する。【００６８】
移動先の計算機環境でN_PRIORITY よりも高い優先順位をもつプログラムが動作している場合で、かつ、それよりも高機能の計算機環境の候補により高い優先順位をもつプログラムが存在しない場合；この場合には、ジョブマネージャ１は移動先の計算機環境よりも、余裕のある、より高機能の計算機環境へ移動すると判定する。【００６９】
計算機環境の機能の優劣の順序を一意に決定できない場合、例えば、n = 100; c = 100 について、Nx = 100;Cx = 200 である並列計算機環境gと，Ny = 200;Cy = 100 である環境並列計算機hがある場合は、事前に、環境並列計算機ｇとhのうちどちらを優先的に使うか決めておけばよい。【００７０】
ジョブマネージャ１は、決定した変更先の計算機環境をｅ０とする。ADJUST_PがTRUEで、かつ移動先の計算機環境ｅ０がハードウェアの故障などで一時的に利用できない場合は、ジョブマネージャ１は、ｅ０を選択候補から外して、再びＴ４の処理を実行する。【００７１】
ジョブマネージャ１は、イベントを発行した並列計算機環境ｅへ向けて、実行一時休止中のプログラムを変更先の計算機環境へｅ０移動するようにメッセージを返信する（Ｔ５）。ジョブマネージャ１のＣＰＵは、切替制御手段の一例として、Ｔ５の処理を実行する。【００７２】
このとき，もしｅ＝ｅ０であれば、ジョブマネージャ１は、計算機環境は変更しないように並列計算機環境にメッセージを送信する。そして、イベントマネージャ１は、次のイベントを処理するために制御をＴ１に戻す（Ｔ６）。【００７３】
図８に、集合Ｃから、問い合わせイベントの情報に応じてプログラムの次の実行環境ｅ０を決定する処理（図７のＴ４）の詳細を例示する。この処理では、イベントマネージャ１は、処理Ｔ３で作成した集合Ｃ、すなわち、プログラムの実行環境の変更先の候補となるプログラムの実行環境の集合Ｃが空集合か否かを判定する（Ｔ４１）。集合Ｃが空集合の場合、イベントマネージャ１は、コンピュータシステム中で最も高機能の並列計算機環境を変更先の並列計算機環境として選択する（Ｔ４２）。そして、イベントマネージャ１は、処理を終了する。【００７４】
一方、集合Ｃが空集合でない場合、イベントマネージャ１は、集合Ｃ中の最も低機能の並列計算機環境を変更先の並列計算機環境Ｘとして選択する（Ｔ４３）。そして、イベントマネージャ１は、変更先の並列計算機環境Ｘが現並列計算機環境より低機能であって、かつ、現並列計算機環境でN_PRIORITYよりも優先度の高いプロセスが実行されていない条件が満たされるか否かを判定する（Ｔ４４）。Ｔ４４の条件が満たされた場合、ジョブマネージャ１は、並列計算機環境を変更しない決定をする。現環境に空きがある場合で、より低機能の並列計算機環境に余裕が少ない場合には、並列計算機環境を変更しない方がよいからである。すなわち、現並列計算機環境を次の並列計算機環境として選択する（Ｔ４５）。そして、イベントマネージャ１は、処理を終了する。なお、それぞれの並列計算機環境で実行中の優先度については、例えば、図９に例示する並列計算機環境テーブルで管理しておけばよい。ジョブマネージャ１のＣＰＵは、切替抑止手段の一例として、Ｔ４５の処理を実行する。【００７５】
また、Ｔ４４の条件が満たされない場合、イベントマネージャ１は、変更先の並列計算機環境ＸでN_PRIORITYよりも優先度の高いプロセスが実行されており、かつ、並列計算機環境Ｘよりも高機能の並列計算機環境Ｙに空きがある条件が満たされるか否かを判定する（Ｔ４６）。ここで、並列計算機環境Ｙに空きがあるとは、並列計算機環境ＹでN_PRIORITYよりも優先度の高いプロセスが実行されていないことを例示できる。【００７６】
Ｔ４６の条件が満たされた場合、ジョブマネージャ１は、並列計算機環境Ｘよりも高機能の並列計算機環境Ｙを変更先の並列計算機環境として選択する（Ｔ４７）。より高機能の並列計算機環境に空きがある場合には、有効活用した方がコンピュータシステム全体としての効率上問題が生じない上に、問い合わせイベントの対象となっているプログラムをより高速に実行できるからである。すなわち、ジョブマネージャ１のＣＰＵは、第１コンピュータに代えて前記第３コンピュータを選択する処理の一例として、Ｔ４７の処理を実行する。そして、イベントマネージャ１は、処理を終了する。【００７７】
図９に、並列計算機環境テーブルのデータ例を示す。並列計算機環境テーブルは、例えば、ジョブマネージャ１の主記憶装置、あるいは外部記憶装置に格納される。並列計算機環境テーブルを記憶するジョブマネージャ１の主記憶装置、あるいは外部記憶装置が処理能力を含む管理情報を記憶する手段の一例である。また、並列計算機環境テーブルが管理情報の一例である。【００７８】
図９の表で１行が１つのレコードに対応し、１つの並列計算機環境を定義する。図９のように、並列計算機環境テーブルの１つのレコードは、並列計算機環境名、計算ノード数、通信機能レベル、割当プログラム数、割当済み最高優先度、割当済み最低優先度の各フィールドを有する。【００７９】
並列計算機環境名は、個々の並列計算機環境を識別するための情報である。並列計算機環境名は、例えば、並列計算機環境テーブル内でユニークな文字列とすることができる。また、並列計算機環境名は、例えば、フロントエンドノードのノード名、あるいはネットワーク２上のアドレスであってもよい。例えば、並列計算機環境名は、フロントエンドノードのInternet Protocol（ＩＰ）アドレス、フロントエンドノードの通信インターフェースのＭＡＣアドレス等であってもよい。【００８０】
計算ノード数は、並列計算機環境名で指定される並列計算機環境での計算ノード数である。通信機能レベルは、並列計算機環境名で指定される並列計算機環境での通信機能のレベルである。通信機能のレベルは、例えば、ネットワークのトポロジ、帯域幅、データ転送速度等によって設定される。【００８１】
割当プログラム数は、並列計算機環境名で指定される並列計算機環境に現時点で割り当てられているプログラム数である。割当プログラム数は、ジョブマネージャ１の処理に応じて変動する。例えば、ジョブマネージャ１は、並列計算機環境名で指定される並列計算機環境への並列計算機環境の変更をプログラムに指定したときに、そのプログラムが現在割り当てられている、変更元の並列計算機環境での割当プログラム数を１減算し、変更先の並列計算機環境での割当プログラム数を１加算すればよい。【００８２】
ただし、各並列計算機環境は、それぞれプログラムの実行環境として、割当を受け付けたときに、プログラムの割当増加をジョブマネージャ１に通知するようにしてもよい。また、各並列計算機環境は、実行中のプログラムを他の並列計算機環境に変更を依頼し、変更の依頼が受け付けられたとき、プログラムの割当減少をジョブマネージャ１に通知するようにしてもよい。ジョブマネージャ１は、それぞれの並列計算機環境から、プログラムの割当増加の通知、あるいは割当減少の通知を受けたときに、割当プログラム数を変更すればい。割当プログラム数が多いほど、並列計算機環境名で指定される並列計算機環境が込み合っているということができる。【００８３】
割当済み最高優先度は、並列計算機環境名で指定される並列計算機環境に現時点で割り当てられているプログラムの優先度のうち、最も高い優先度である。割当済み最高優先度が高いほど、新たに割り当てられるプログラムによって当該並列計算機環境を利用することが難しいということができる。逆に、割当済み最高優先度が低いほど、新たに割り当てられるプログラムによって当該並列計算機環境を利用できる可能性が高いということができる。【００８４】
ジョブマネージャ１は、並列計算機環境名で指定される並列計算機環境へ並列計算機環境を移動するようにプログラムにメッセージを返信したときに、メッセージが返信されたプログラムの優先度に応じて、変更前後の並列計算機環境での割当済み最高優先度を変更すればい。また、各並列計算機環境は、それぞれプログラムの実行環境として、割当を受け付けたときに、割り当てたプログラムの優先度をジョブマネージャ１に通知するようにしてもよい。また、各並列計算機環境は、実行中のプログラムを他の並列計算機環境に変更を依頼し、変更の依頼が受け付けられ、プログラムの割当が削除されたときに、割当が削除されたプログラムの優先度をジョブマネージャ１に通知するようにしてもよい。ジョブマネージャ１は、それぞれの並列計算機環境から、プログラムに割り当てられた優先度、あるいは割当が削除された優先度の通知を受けたときに、割当済み最高優先度を変更してもよい。【００８５】
割当済み最低優先度は、並列計算機環境名で指定される並列計算機環境に現時点で割り当てられているプログラムの優先度のうち、最も低い優先度である。割当済み最低優先度が高いほど、多くのプログラムが高い優先度で割り当てられてことが分かる。割当済み最低優先度についても、割当済み最高優先度と同様に管理すればよい。【００８６】
＜効果＞
以上述べたように、本コンピュータシステムによれば、複数の並列計算機環境を有効利用することができる。コンピュータシステムの各並列計算機環境中の各計算ノードは、プログラム中の状況記述の箇所を実行すると、その状況記述に設定されたプログラムの実行状況、そのプログラムに望ましい計算ノード数、通信機能のレベル等をジョブマネージャ１に送信する。このような処理によって、コンピュータシステムは、それぞれのプログラムの実行状況、好ましい計算機リソースの情報を適時に取得できる。【００８７】
コンピュータシステムのジョブマネージャ１は、一時的あるいはある時点以降、データ通信機能の要求レベルが低くなるプログラムの実行を、データ通信機能のレベルが低い並列計算機環境へ移動する。この処理によって、ジョブマネージャ１は、データ通信機能の高い並列計算機の機能をより優先度の高いプログラムへ割り当てることができる。【００８８】
ジョブマネージャ１は、計算ノード数の要求数が少ないプログラムの実行を計算ノード数が少ない並列計算機環境へ移動する。この処理によって、ジョブマネージャ１は、並列計算機の機能をより優先度の高いプログラムへ割り当てることができる。【００８９】
ジョブマネージャ１は、一時的あるいはある時点以降、データ通信機能の要求レベルが高くなるプログラムの実行をデータ通信機能のレベルが高い並列計算機環境へ移動する。この処理によって、コンピュータシステムでは、並列計算機を有効利用することができる。【００９０】
ジョブマネージャ１は、一時的あるいはある時点以降，必要とする計算ノード数が多くなるプログラムの実行を計算ノード数が多い並列計算機環境へ移動することによって、大規模並列計算機の機能を有効利用することができる。【００９１】
複数の並列プログラムが複数の問い合わせイベントを送信して並列計算機環境の変更の要否を問い合わせた場合に、問い合わせイベントの優先順位を考慮し、複数の並列計算機環境を決定し、結果として、コンピュータシステム全体の有効利用することができる。【００９２】
また、Ｔ４４、Ｔ４５に示したように、ジョブマネージャ１は、変更先の並列計算機環境Ｘが現並列計算機環境より低機能であって、かつ、現並列計算機環境でN_PRIORITYよりも優先度の高いプロセスが実行されていない条件が満たされるか否かを判定する。そして、この条件が満たされた場合、ジョブマネージャ１は、並列計算機環境を変更しない決定をする。したがって、コンピュータシステム１は、現環境に空きがある場合には、現在よりも低機能の並列計算機環境に並列計算機環境を変更しない決定をする。したがって、現環境に空きがある場合には、柔軟かつ効率的に計算機リソースがプログラムに割り当てられる。【００９３】
また、Ｔ４６、Ｔ４７に示したように、変更先の並列計算機環境ＸでN_PRIORITYよりも優先度の高いプロセスが実行されており、かつ、並列計算機環境Ｘよりも高機能の並列計算機環境Ｙに空きがある条件が満たされるか否かを判定する。そして、この条件が満たされた場合、ジョブマネージャ１は、並列計算機環境Ｘよりも高機能の並列計算機環境Ｙを変更先の並列計算機環境として選択する。このような処理によって、本コンピュータシステムは、より高機能の並列環境に空きがある場合には、空きのある高機能の並列計算機環境を有効活用することができる。
【実施例２】
【００９４】
以下、図１０から図１４の図面を参照して、実施例２に係るコンピュータシステムを説明する。実施例１では、複数の並列計算機環境Ｅ＝０からＥ＝ｅを有するコンピュータシステムで実行されるそれぞれのプログラムが、実行状況等を含む問い合わせイベントをジョブマネージャ１に送信し、並列計算機環境の変更の要否について指示を受けるコンピュータシステムについて説明した。実施例２では、並列計算機環境Ｅ＝０からＥ＝ｅの一例として、図１０から図１４に示されるものを適用し、具体的な運用例を説明する。したがって、図４に示したジョブマネージャ１と個々の並列計算機環境の接続、ジョブマネージャ１の機能等、図５から図９に示したジョブマネージャ１の処理、個々のプログラムで実行される問い合わせイベントの送信および並列計算機環境の変更の要否について指示の受信処理等は、実施例１と同様である。そこで、実施例２では、実施例１と同一の構成および作用については、実施例１の図面を踏襲するものとして説明する。【００９５】
なお、実施例１では、それぞれの並列計算機環境における計算ノード数、通信機能のレベルは、図９の並列計算機環境テーブルで管理した。しかし、実施例２では、並列計算機環境の名称中に、計算ノード数、通信機能のレベルを埋め込む。例えば、並列計算機環境Ｎ１６Ｃ１００は、計算ノード数１６、通信機能レベル１００を示す。計算ノード数および通信機能のレベルが同数の並列計算機環境が複数ある場合には、並列計算機環境Ｎ１６Ｃ１００−１、Ｎ１６Ｃ１００−２のように管理すればよい。したがって、実施例２では、図１０に示した並列計算機環境テーブルのうち、計算ノード数、通信機能レベルは、省略してもよい。【００９６】
実施例２では、次に示す５種類の並列計算機環境が存在すると仮定する。ただし、本コンピュータシステムの構成において、並列計算機環境の数に限定はない。また、以下の並列計算機環境では、計算ノードの数は、９個または１６個のものを例示する。しかし、本コンピュータシステムの構成において、計算ノードの数に限定がある訳ではない。例えば、計算ノードの数は数千、数万であってもよい。【００９７】
図１０に、並列計算機環境Ｎ１６Ｃ１００を例示する。ここで、Ｎ１６Ｃ１００は、並列計算機環境を識別する情報であるとともに、ハードウェア資源の仕様を明示する情報でもある。すなわち、Ｎ１６は、計算ノード数が１６個であることを示す。図１０で４行４列の矩形が計算ノードを示す。矩形間の実線がネットワークのリンクを示す。【００９８】
Ｃ１００は、計算ノード間の通信機能が最も高機能レベルである並列計算機環境を示す。実施例２では、計算ノード間の通信機能のレベルをＣ０からＣ１００で表す。ここで、計算ノード間の通信機能の種類、レベル付けの仕方に限定がある訳ではない。例えば、計算ノード間の帯域幅、１つの計算ノードに対して、他の計算ノードを中継せずに直接通信できる相手計算ノード数、等の情報から、通信機能のレベルを設定することができる。【００９９】
図１０の例では、マトリクス状に配列された計算ノードは、それぞれ行方向、列方向の他、対角方向の計算ノードと接続されている。また、１６個の計算ノードの他に１個のフロントエンドノード３１が設けられている。【０１００】
フロントエンドノード３１は、図４に示したネットワーク２を介してジョブマネージャ１および他の並列計算機環境と接続される。フロントエンドノード３１は、ジョブマネージャ１または他の並列計算機環境で実行されるプログラムから、プログラムの実行要求を受け付ける。そして、フロントエンドノード３１は、受け付けたプログラムの実行要求をプログラムの実行待ちキューに登録する。【０１０１】
また、フロントエンドノード３１は、プログラムの実行待ちキューに登録されたプログラムを計算ノードに引き渡し、実行させる。プログラムの実行待ちキューに登録されたプログラムは、それぞれのプログラムに設定された優先順で、計算ノードに引き渡される。【０１０２】
この場合の計算ノードでの実行されるプログラムと、プログラムの実行待ちキューに登録されたプログラムとの入れ替え手順は、通常のコンピュータシステムと同様である。例えば、それぞれのプログラムに割り当てられた処理時間が経過すると、計算ノードでの実行されるプログラムは、実行が中断され、プログラムの実行待ちキューに再度登録される。そして、プログラムの実行待ちキューで優先度順に、プログラムが計算ノードに引き渡されるようにすればよい。【０１０３】
また、それぞれのプログラムに割り当てられた処理時間が経過する前に、プログラムが入出力待ちの状態となった場合には、プログラムの実行が中断され、プログラムの実行待ちキューに再度登録されるようにしてもよい。【０１０４】
図１１に、並列計算機環境Ｎ１６Ｃ５０を例示する。並列計算機環境Ｎ１６Ｃ５０の計算ノードの数は１６個で、計算ノード間の通信機能が平均的レベルである。例えば、マトリクス情報に配列された計算ノード間で、行方向および列方向の接続はあるが、対角方向の接続は設けられていない。したがって、それぞれの計算ノードが対角方向の計算ノードと通信するためには、行方向または列方向に隣接する計算ノードを経由することになる。【０１０５】
図１２に、並列計算機環境Ｎ１６Ｃ０を例示する。並列計算機環境Ｎ１６Ｃ０の計算ノードの数は１６個で、計算ノード間の通信機能は最も低いレベルである。図１２で計算ノード間の接続、すなわちネットワーク２のトポロジは、図１１のＮ１６Ｃ５０と同様である。しかし、並列計算機環境Ｎ１６Ｃ０において、計算ノード間のリンクの帯域は、図１１のＮ１６Ｃ５０よりも狭い。【０１０６】
図１３に、並列計算機環境Ｎ９Ｃ１００を例示する。並列計算機環境Ｎ９Ｃ１００の計算ノードの数は９個で、計算ノード間の通信機能は最も高いレベルである。図１４に、並列計算機環境Ｎ９Ｃ０を例示する。並列計算機環境Ｎ９Ｃ０の計算ノードの数は９個で、計算ノード間の通信機能は最も低いレベルである。【０１０７】
プログラムＰの実行環境の変更手順の実装例を以下に示す。プログラムＰは以下に示す状況記述を含むものとする。
/* R0 */
parallel_run_level (9, 16, 50, FALSE); /* D1 */
/* R1 */
parallel_run_level (9, 5, 50, FALSE); /* D2 */
/* R2 */
parallel_run_level (20, 200, 200, TRUE); /* D3 */
/* R3 */
parallel_run_level (0, 3, 0, FALSE); /* D4 */
/* R4 */
また、プログラムＰの実行開始時点Ｒ０の実行環境はＮ１６Ｃ１００であるとする。【０１０８】
実行環境Ｎ１６Ｃ１００上でプログラムＰを実行しているときに、Ｄ１の状況記述に到達することで、最初の実行環境変更の判断が発生する（図６のステップＳ２）。【０１０９】
実行環境Ｎ１６Ｃ１００からジョブマネージャ１へプログラムＰの移動先の問い合わせのイベントを送る（図６のステップＳ３、Ｓ４）。問い合わせのイベントを送った後は，実行環境Ｎ１６Ｃ１００上でのプログラムＰの実行は一時休止状態とする（図６のステップＳ５）。【０１１０】
ジョブマネージャ１は、実行環境Ｎ１６Ｃ１００からの問い合わせのイベントを受け取り、イベントが含むＤ１の状況記述の情報から、ジョブマネージャ１はプログラムＰの実行環境の移動先の候補を作成する。この場合の移動先の候補はＮ１６Ｃ５０とＮ１６Ｃ１００の２つとなる。ジョブマネージャ１は、この候補から最も機能の劣るＮ１６Ｃ５０を選択する（図７のステップＴ１、Ｔ２、Ｔ３、Ｔ４）。ただし、この時点で追加の状況判断（図８のＴ４４参照）から、状況によってはＮ１６Ｃ１００で実行を続ける、すなわち移動しないという選択もあり得る。ここでは、その選択は発生しなかったと仮定する。【０１１１】
ジョブマネージャ１は、実行環境Ｎ１６Ｃ１００のプログラムＰに対して、実行環境をＮ１６Ｃ１００からＮ１６Ｃ５０へ変更するように、返信メッセージを送る（図７のステップＴ５）。【０１１２】
実行環境Ｎ１６Ｃ１００上で一時実行休止状態になっているプログラムＰは、ジョブマネージャ１からの返信メッセージを受け取り，返信メッセージが示すＮ１６Ｃ５０へ実行環境を変更する（図６のステップＳ６、Ｓ７、Ｓ８）。【０１１３】
実行環境Ｎ１６Ｃ５０へ移動したプログラムＰは、実行待ちキューへ登録される。実行待ちキューで実行の順番がくると、フロントエンドプロセッサは、実行待ちキューからプログラムＰを指定する情報を取得し、プログラムＰの実行を実行環境Ｎ１６Ｃ５０上で再開する（図６のステップＳ８、Ｓ１）。【０１１４】
以上の処理の結果として、プログラムＰの実行範囲Ｒ１はＮ１６Ｃ５０上での実行となる。以下、本コンピュータシステムは、同様の手順でparallel_run_levelを処理する。【０１１５】
例えば、実行環境Ｎ１６Ｃ５０上でプログラムＰを実行しているときに、Ｄ２の状況記述に到達することで，次の実行環境変更の判断が発生する。ここでは、計算ノードの数を減らして良いというＮ＿ＮＯＤＥ＝５の指定から、コンピュータシステムはプログラムＰの実行環境をＮ９Ｃ５０へ変更する。結果として、プログラムＰの実行範囲Ｒ２はＮ９Ｃ５０上での実行となる。【０１１６】
実行環境Ｎ９Ｃ５０上でプログラムＰを実行しているときに、Ｄ３の状況記述に到達することで，次の実行環境変更の判断が発生する。Ｄ３の状況記は、これ以降、計算ノードの数も通信機能も最高レベルの機能が最優先で必要であることを意味している。そこで、最も高機能の実行環境Ｎ１６Ｃ１００へプログラムＰの実行を移動する。【０１１７】
ただし、Ｄ３の状況記述では、ADJUST_PがTRUEであるため、Ｎ１６Ｃ１００がハードウェアの故障などで一時的に利用できない場合は、別の候補を選択する。例えば、Ｎ１６Ｃ５０が選択される。【０１１８】
実行環境Ｎ１６Ｃ１００上でプログラムＰを実行しているときに、Ｄ４の状況記述に到達することで、最後の実行環境変更の判断が発生する。Ｄ４の状況記述は、これ以降、優先順位も計算ノード数も通信機能も最低レベルでよいことを示している。そこで、コンピュータシステムは、最も機能の低い実行環境Ｎ９Ｃ０へプログラムＰの実行を移動する。【０１１９】
＜変形例＞
上記実施例１、実施例２では、ジョブマネージャ１問い合わせイベントに応答して、次の並列計算機環境Ｘをコンピュータプログラムに指示した。そして、問い合わせイベントに対する応答を受けたコンピュータプログラムが実行中のコンテキストを含む実行形式を保存し、次の並列計算機環境Ｘに依頼し、実行待ちキューに登録された。このような処理に代えて、ジョブマネージャ１がコンピュータプログラムを実行する現在の並列計算機実行環境ＥのＯＳに対して、プログラムの実行中断と、次の並列計算機環境Ｘへの移動を指示してもよい。現在の並列計算機実行環境ＥのＯＳは、ジョブマネージャ１からの指示を受けて、実行中のプログラムのコンテキストを含む実行形式を保存し、次の並列計算機環境ＸのＯＳに実行を依頼してもよい。【０１２０】
上記実施例１、２では、コンピュータシステムは、ネットワーク２で接続される複数の並列計算機環境を有していた。しかし、実施例１、実施例２のような複数の並列計算機環境に代えて、複数の仮想計算機を有するコンピュータシステムを用いて、複数のプログラムを実行する場合にも、実施例１、実施例２の手順を適用できる。つまり、コンピュータシステムの並列計算機環境は、物理的に異なる並列計算機環境ではなく、複数のＣＰＵを有するコンピュータシステム上に構築される仮想計算機であってもよい。つまり、どのプログラムをどの仮想計算機に実行されるかを図６−図８の処理と同様に処理することで、適切な仮想計算機にプログラムを実行させ、コンピュータシステム全体の効率を向上することができる。【０１２１】
＜コンピュータが読み取り可能な記録媒体＞
ジョブマネージャ１で例示されるコンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。【０１２２】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ（リードオンリーメモリ）等がある。
【符号の説明】
【０１２３】
１    ジョブマネージャ
２    ネットワーク
４    イベントキュー
３１    フロントエンドノード
【図１】
2013038566.tif 000003
【図２】
2013038566.tif 000004
【図３】
2013038566.tif 000005
【図４】
2013038566.tif 000006
【図５】
2013038566.tif 000007
【図６】
2013038566.tif 000008
【図７】
2013038566.tif 000009
【図８】
2013038566.tif 000010
【図９】
2013038566.tif 000011
【図１０】
2013038566.tif 000012
【図１１】
2013038566.tif 000013
【図１２】
2013038566.tif 000014
【図１３】
2013038566.tif 000015
【図１４】
2013038566.tif 000016
【手続補正書】
【提出日】平成26年3月26日(2014.3.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理能力の異なる複数のコンピュータへの処理の割り当てを管理する管理装置であって、
前記複数のコンピュータそれぞれの処理能力を含む管理情報を記憶する手段と、
前記複数のコンピュータのうちのプログラムの実行が割り当てられているプログラム実行コンピュータから、前記プログラムを実行するために要求される処理能力を含む要求値を取得する手段と、
前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択手段と、
前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てる切替制御手段と、を備える管理装置。
【請求項２】
前記選択手段は、前記処理能力の要求値を満たすコンピュータが存在する場合には、前記処理能力の要求値を満たすコンピュータ中で最も処理能力の低い第１コンピュータを選択し、前記処理能力の要求値を満たすコンピュータが存在しない場合には、前記複数のコンピュータ中で最も処理能力の高い第２コンピュータを選択する請求項１に記載の管理装置。
【請求項３】
前記要求値は、前記プログラムを割り当てられるコンピュータに要求される、前記プログラムの実行の優先度を含み、
前記第１コンピュータの処理能力が前記プログラム実行コンピュータの処理能力より低く、かつ、前記要求値で指定される、前記第１コンピュータへ割り当てられるプログラムの優先度よりも高い優先度のプログラムが前記プログラム実行コンピュータに割り当てられていない場合に、前記選択された第１コンピュータへの割り当てに切り替えることを抑止する切替抑止手段をさらに備える請求項２に記載の管理装置。
【請求項４】
前記選択手段は、前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられた、前記処理能力の要求値を満たすコンピュータと、当該コンピュータよりも処理能力が高く、且つ前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられていないコンピュータとが存在する場合、前記選択手段は、前記第１コンピュータとして当該処理能力の高いコンピ
ュータを選択する請求項２または３に記載の管理装置。
【請求項５】
処理能力の異なる複数のコンピュータと、前記複数のコンピュータへの処理の割り当てを管理する管理装置と、を有するコンピュータシステムであって、
前記管理装置は、
前記複数のコンピュータそれぞれの処理能力を含む管理情報を記憶する手段と、
前記複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータから前記プログラムを実行するために要求される処理能力を含む要求値を取得する手段と、
前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択手段と、
前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てる切替制御手段と、を備えるコンピュータシステム。
【請求項６】
処理能力の異なる複数のコンピュータへの処理の割り当てを管理する管理方法であって、管理装置が、
前記複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータから前記プログラムを実行するために要求される処理能力を含む要求値を取得するステップと、
前記複数のコンピュータそれぞれの処理能力を示す情報を参照し、前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択ステップと、
前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てる切替制御ステップと、を実行する管理方法。
【請求項７】
管理装置に、処理能力の異なる複数のコンピュータへの処理の割り当てを管理させるプログラムであって、
前記複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータから前記プログラムを実行するために要求される処理能力を含む要求値を取得するステップと、
前記複数のコンピュータそれぞれの処理能力を示す情報を参照し、前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択ステップと、
前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てるステップと、を実行させるためのプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００７２
【補正方法】変更
【補正の内容】
【００７２】
このとき，もしｅ＝ｅ０であれば、ジョブマネージャ１は、計算機環境は変更しないように並列計算機環境にメッセージを送信する。そして、ジョブマネージャ１は、次のイベントを処理するために制御をＴ１に戻す（Ｔ６）。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００７３
【補正方法】変更
【補正の内容】
【００７３】
図８に、集合Ｃから、問い合わせイベントの情報に応じてプログラムの次の実行環境ｅ０を決定する処理（図７のＴ４）の詳細を例示する。この処理では、ジョブマネージャ１は、処理Ｔ３で作成した集合Ｃ、すなわち、プログラムの実行環境の変更先の候補となるプログラムの実行環境の集合Ｃが空集合か否かを判定する（Ｔ４１）。集合Ｃが空集合の場合、ジョブマネージャ１は、コンピュータシステム中で最も高機能の並列計算機環境を変更先の並列計算機環境として選択する（Ｔ４２）。そして、ジョブマネージャ１は、処理を終了する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００７４
【補正方法】変更
【補正の内容】
【００７４】
一方、集合Ｃが空集合でない場合、ジョブマネージャ１は、集合Ｃ中の最も低機能の並列計算機環境を変更先の並列計算機環境Ｘとして選択する（Ｔ４３）。そして、ジョブマネージャ１は、変更先の並列計算機環境Ｘが現並列計算機環境より低機能であって、かつ、現並列計算機環境でN_PRIORITYよりも優先度の高いプロセスが実行されていない条件が満たされるか否かを判定する（Ｔ４４）。Ｔ４４の条件が満たされた場合、ジョブマネージャ１は、並列計算機環境を変更しない決定をする。現環境に空きがある場合で、より低機能の並列計算機環境に余裕が少ない場合には、並列計算機環境を変更しない方がよいからである。すなわち、現並列計算機環境を次の並列計算機環境として選択する（Ｔ４５）。そして、ジョブマネージャ１は、処理を終了する。なお、それぞれの並列計算機環境で実行中の優先度については、例えば、図９に例示する並列計算機環境テーブルで管理しておけばよい。ジョブマネージャ１のＣＰＵは、切替抑止手段の一例として、Ｔ４５の処理を実行する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００７６
【補正方法】変更
【補正の内容】
【００７６】
Ｔ４６の条件が満たされた場合、ジョブマネージャ１は、並列計算機環境Ｘよりも高機能の並列計算機環境Ｙを変更先の並列計算機環境として選択する（Ｔ４７）。より高機能の並列計算機環境に空きがある場合には、有効活用した方がコンピュータシステム全体としての効率上問題が生じない上に、問い合わせイベントの対象となっているプログラムをより高速に実行できるからである。すなわち、ジョブマネージャ１のＣＰＵは、第１コンピュータに代えて前記第３コンピュータを選択する処理の一例として、Ｔ４７の処理を実行する。そして、ジョブマネージャ１は、処理を終了する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００９５
【補正方法】変更
【補正の内容】
【００９５】
なお、実施例１では、それぞれの並列計算機環境における計算ノード数、通信機能のレ
ベルは、図９の並列計算機環境テーブルで管理した。しかし、実施例２では、並列計算機環境の名称中に、計算ノード数、通信機能のレベルを埋め込む。例えば、並列計算機環境Ｎ１６Ｃ１００は、計算ノード数１６、通信機能レベル１００を示す。計算ノード数および通信機能のレベルが同数の並列計算機環境が複数ある場合には、並列計算機環境Ｎ１６Ｃ１００−１、Ｎ１６Ｃ１００−２のように管理すればよい。したがって、実施例２では、図９に示した並列計算機環境テーブルのうち、計算ノード数、通信機能レベルは、省略してもよい。
【国際調査報告】
2013038566.tif 000017
2013038566.tif 000018
2013038566.tif 000019
2013038566.tif 000020