"処理能力の異なる複数のコンピュータへの処理の割り当てを管理する管理装置であって、前記複数のコンピュータそれぞれの処理能力を含む管理情報を記憶する手段と、前記複数のコンピュータのうちのプログラムの実行が割り当てられているプログラム実行コンピュータから、前記プログラムを実行するために要求される処理能力を含む要求値を取得する手段と、前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択手段と、前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てる切替制御手段と、を備える管理装置。前記選択手段は、前記処理能力の要求値を満たすコンピュータが存在する場合には、前記処理能力の要求値を満たすコンピュータ中で最も処理能力の低い第1コンピュータを選択し、前記処理能力の要求値を満たすコンピュータが存在しない場合には、前記複数のコンピュータ中で最も処理能力の高い第2コンピュータを選択する請求項1に記載の管理装置。前記要求値は、前記プログラムを割り当てられるコンピュータに要求される、前記プログラムの実行の優先度を含み、前記第1コンピュータの処理能力が前記プログラム実行コンピュータの処理能力より低く、かつ、前記要求値で指定される、前記第1コンピュータへ割り当てられるプログラムの優先度よりも高い優先度のプログラムが前記プログラム実行コンピュータに割り当てられていない場合に、前記選択された第1コンピュータへの割り当てに切り替えることを抑止する切替抑止手段をさらに備える請求項2に記載の管理装置。前記選択手段は、前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられた、前記処理能力の要求値を満たすコンピュータと、当該コンピュータよりも処理能力が高く、且つ前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられていないコンピュータとが存在する場合、前記選択手段は、前記第1コンピュータとして当該処理能力の高いコンピュータを選択する請求項2または3に記載の管理装置。処理能力の異なる複数のコンピュータと、前記複数のコンピュータへの処理の割り当てを管理する管理装置と、を有するコンピュータシステムであって、前記管理装置は、前記複数のコンピュータそれぞれの処理能力を含む管理情報を記憶する手段と、前記複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータから前記プログラムを実行するために要求される処理能力を含む要求値を取得する手段と、前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択手段と、前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てる切替制御手段と、を備えるコンピュータシステム。前記選択手段は、前記処理能力の要求値を満たすコンピュータが存在する場合には、前記処理能力の要求値を満たすコンピュータ中で最も処理能力の低い第1コンピュータを選択し、前記処理能力の要求値を満たすコンピュータが存在しない場合には、前記複数のコンピュータ中で最も処理能力の高い第2コンピュータを選択する請求項5に記載のコンピュータシステム。前記要求値は、前記プログラムを割り当てられるコンピュータに要求される、前記プログラムの実行の優先度を含み、前記第1コンピュータの処理能力が前記プログラム実行コンピュータの処理能力より低く、かつ、前記要求値で指定される、前記第1コンピュータへ割り当てられるプログラムの優先度よりも高い優先度のプログラムが前記プログラム実行コンピュータに割り当てられていない場合に、前記選択された第1コンピュータへの割り当てに切り替えることを抑止する切替抑止手段をさらに備える請求項6に記載のコンピュータシステム。前記選択手段は、前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられた、前記処理能力の要求値を満たすコンピュータと、当該コンピュータよりも処理能力が高く、且つ前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられていないコンピュータとが存在する場合、前記選択手段は、前記第1コンピュータとして当該処理能力の高いコンピュータを選択する請求項6または7に記載のコンピュータシステム。処理能力の異なる複数のコンピュータへの処理の割り当てを管理する管理方法であって、管理装置が、前記複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータから前記プログラムを実行するために要求される処理能力を含む要求値を取得するステップと、前記複数のコンピュータそれぞれの処理能力を示す情報を参照し、前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択ステップと、前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てる切替制御ステップと、を実行する管理方法。前記選択ステップでは、前記管理装置は、前記処理能力の要求値を満たすコンピュータが存在する場合には、前記処理能力の要求値を満たすコンピュータ中で最も処理能力の低い第1コンピュータを選択し、前記処理能力の要求値を満たすコンピュータが存在しない場合には、前記複数のコンピュータ中で最も処理能力の高い第2コンピュータを選択する請求項9に記載の管理方法。前記要求値は、前記プログラムを割り当てられるコンピュータに要求される、前記プログラムの実行の優先度を含み、前記第1コンピュータの処理能力が前記プログラム実行コンピュータの処理能力より低く、かつ、前記要求値で指定される、前記第1コンピュータへ割り当てられるプログラムの優先度よりも高い優先度のプログラムが前記プログラム実行コンピュータに割り当てられていない場合に、前記選択された第1コンピュータへの割り当てに切り替えることを抑止する切替抑止ステップをさらに実行する請求項10に記載の管理方法。前記選択ステップでは、前記管理装置は、前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられた、前記処理能力の要求値を満たすコンピュータと、当該コンピュータよりも処理能力が高く、且つ前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられていないコンピュータとが存在する場合、前記選択手段は、前記第1コンピュータとして当該処理能力の高いコンピュータを選択する請求項10または11に記載の管理方法。管理装置に、処理能力の異なる複数のコンピュータへの処理の割り当てを管理させるプログラムであって、前記複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータから前記プログラムを実行するために要求される処理能力を含む要求値を取得するステップと、前記複数のコンピュータそれぞれの処理能力を示す情報を参照し、前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択ステップと、前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てるステップと、を実行させるためのプログラム。前記選択ステップでは、前記管理装置に、前記処理能力の要求値を満たすコンピュータが存在する場合には、前記処理能力の要求値を満たすコンピュータ中で最も処理能力の低い第1コンピュータを選択させ、前記処理能力の要求値を満たすコンピュータが存在しない場合には、前記複数のコンピュータ中で最も処理能力の高い第2コンピュータを選択させるための請求項13に記載のプログラム。前記要求値は、前記プログラムを割り当てられるコンピュータに要求される、前記プログラムの実行の優先度を含み、前記第1コンピュータの処理能力が前記プログラム実行コンピュータの処理能力より低く、かつ、前記要求値で指定される、前記第1コンピュータへ割り当てられるプログラムの優先度よりも高い優先度のプログラムが前記プログラム実行コンピュータに割り当てられていない場合に、前記選択された第1コンピュータへの割り当てに切り替えることを抑止する切替抑止ステップをさらに実行させる請求項14に記載のプログラム。前記選択ステップでは、前記管理装置に、前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられた、前記処理能力の要求値を満たすコンピュータと、当該コンピュータよりも処理能力が高く、且つ前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられていないコンピュータとが存在する場合、前記選択手段は、前記第1コンピュータとして当該処理能力の高いコンピュータを選択させる請求項14または15に記載のプログラム。様々な構成のコンピュータを組み合わせたコンピュータシステムを利用する場合に、コンピュータシステム全体の利用効率の点で、改善の余地がある場合がある。例えば、様々な構成のコンピュータを組み合わせたコンピュータシステム上で複数のプログラムを実行する場合を考える。ここでは、実行される複数のコンピュータプログラム以下、単にプログラムに、それぞれ適切なコンピュータを割り当ててプログラムを実行することを想定する。その場合に、実行されるそれぞれのプログラムでは、以下のケースが生じ得る。1一のプログラムは、割り当てられたコンピュータのハードウェアリソースの一部を利用し、残りは未使用となる場合がある。例えば、並列計算機の複数の計算ノードのうち、一部の計算ノードが利用され、残りの計算ノードは未使用となる場合である。2並列計算機のような複数の計算ノードを含むコンピュータの利用において、計算ノード間の通信が行われず、計算ノード間を接続するネットワークが利用されない場合がある。あるいは、特定の計算ノード間の通信が限定的に行われ、他の計算ノード間の通信が行われない場合がある。したがって、従来のコンピュータシステムでは、構成の異なる複数のコンピュータを含むコンピュータシステムにおいて複数のプログラムを実行する場合に、コンピュータシステムが効率的に利用されない場合があった。1つの側面では、本発明は、異なる構成のコンピュータを組み合わせたコンピュータシステムを利用する場合のコンピュータシステムの利用効率の向上を図ることを目的とする。開示の技術の一側面は、処理能力の異なる複数のコンピュータへの処理の割り当てを管理する管理装置として例示できる。この管理装置は、複数のコンピュータそれぞれの処理能力を含む管理情報を記憶する手段と、複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータからプログラムを実行するために要求される処理能力を含む要求値を取得する手段と、複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択手段と、プログラム実行コンピュータに割り当てられているプログラムを選択されたコンピュータへ割り当てる切替制御手段と、を備える。本コンピュータシステムによれば、コンピュータシステムの利用効率の向上を図ることができる。以下、図面を参照して実施形態の一側面に係るコンピュータシステムについて説明する。以下の実施形態の構成は例示であり、本コンピュータシステムは実施形態の構成には限定されない。<比較例>図1に、比較例に係るコンピュータシステムの構成を例示する。比較例のコンピュータシステムは、R=0からR=Nで例示される複数の計算ノードと、計算ノードでのプログラムの実行を管理するフロントエンドノードとを相互結合ネットワークで接続している。ここで、計算ノードおよびフロントエンドノードの構成に特に限定はない。したがって、計算ノードおよびフロントエンドノードは、例えば、ブレードサーバと呼ばれるものでもよく、一般的なパーソナルコンピュータでもよい。図2に、計算ノードあるいはフロントエンドノードとして用いることができるコンピュータ10の構成を例示する。計算ノードおよびフロントエンドノードは、CentralProcessingUnitCPU11、主記憶装置12、インターフェース18を通じて接続される外部機器を有し、プログラムにより情報処理を実行する。外部機器としては、外部記憶装置13および通信インターフェース14を例示できる。外部記憶装置13としては、例えば、ハードディスク、SolidStateDriveSSD等を例示できる。計算ノードおよびフロントエンドノードは、通信インターフェース14により相互結合ネットワークに接続される。また、計算ノードおよびフロントエンドノードは、入力装置15、表示装置16等によるユーザインターフェースを有するようにしてもよい。入力装置15は、例えば、キーボード、ポインティングデバイス等である。また、表示装置16は、例えば、液晶ディスプレイ、エレクトロルミネッセンスパネル等である。さらに、計算ノードおよびフロントエンドノードは、着脱可能記憶媒体の駆動装置17を設けてもよい。着脱可能記憶媒体は、例えば、ブルーレイディスク、DigitalVersatileDiskDVD、CompactDiscCD、フラッシュメモリカード等である。なお、図2の例では、単一のインターフェース18が例示されているが、インターフェース18として複数種類のものが複数設けられてもよい。また、相互結合ネットワークについても、特に限定はない。相互結合ネットワークは、例えば、NetworkInterfaceCardで接続されるLocalAreaNetwork等でもよい。また、相互結合ネットワークは、FibreChannelファイバーチャネル、InfiniBandインフィニバンド等の通信インターフェースで接続されるネットワークでもよい。ところで、図1に例示される並列計算機の特徴は、例えば、複数の計算ノードと、高速かつ大容量の計算ノード間のデータ通信処理機能である。並列計算機を利用するプログラムは、これらの特徴を利用することで処理速度を単一構成の計算機よりも高速化する。しかしながら、プログラムの実行の開始時点から終了時点の全般に渡って、並列計算機の機能を使う訳ではない。例えば、プログラムの実行時には、一時的もしくはある時点以降、次の状態になることがある。例えば、1つのプログラムが図1のような並列計算機の複数の計算ノードを割り当てられた場合を想定する。1プログラムは、割り当てられた計算ノードの一部を利用する場合がある。2プログラムは、計算ノードを利用するけれども、計算ノード間で通信は行わない場合がある。3プログラムは、計算ノード間で通信を行う。しかし、並列計算機全体としては、ある計算ノードのグループ間に限定した通信が行われ、他の計算ノード間では、通信が行われない場合がある。すなわち、並列計算機を利用しているにもかかわらず、その特徴を十分には利用していないという状況が生じ得る。一般的に、並列計算機は複数のユーザが共有して利用するものであり、一時的であってもプログラムがその特徴を利用していない場合は、潜在的には利用に無駄があることになる。図3に、並列計算機上でのプログラムの実行状況を例示する。図3は、R=0からR=Nで例示される計算ノード上でプログラムの実行の状態が時刻tを付された時間軸縦軸に対して示されている。プログラムは、各計算ノード上のプロセスとして実行される。それぞれのプロセス中で実行されるプログラムの処理が丸印で概念的に例示されている。また、計算ノード間の通信は、丸印と丸印を横方向、あるいは斜め方向に結ぶ線で例示されている。さらに、並列計算機の各計算ノードの状態がST1-ST4等の記号で、時間軸方向の期間を区切って示されている。図3の例では、プログラムは、まず実行開始時にすべての計算ノード上のプロセスとして実行を開始する。一般にプログラムの実行の開始直後はプロセス間での通信は発生しない状態ST1。並列計算機の利点の1つは、計算ノード間の大規模な通信処理である。すなわち、状態ST2のように各計算ノードのプロセス間で大規模な通信処理を行う状態が、並列計算機の1つの利点を活用している状態といえる。並列計算機上のプログラムは常にこのように通信している訳ではなく、一時的に通信がない状態や、通信は行うけれども一部の計算ノード間で小規模に行われるという状態例えば、状態ST3があり得る。さらに、最初に割り当てた計算ノードの利用を途中から止めて、一部の計算ノードを利用するという状態になる場合例えば、状態ST4もある。このようなプログラムの実行状態を考えると、図3でST2以外の状態は必ずしも並列計算機を有効利用しているとは言えない。したがって、時間帯によって計算ノードや通信用のハードウェアが有効に利用されないという問題が生じ得る。図4から図9の図面を参照して、実施例1に係るコンピュータシステムを説明する。実施例1のコンピュータシステムは、コンピュータシステム上で実行中のプログラムから、実行状況の報告を受け付け、それぞれのプログラムの実行状況に適した実行環境を選択する。そして、実施例1のコンピュータシステムは、それぞれのプログラムの実行を選択された実行環境に変更する。図4に、実施例1のコンピュータシステムの構成図を例示する。このコンピュータシステムは、E=0からE=eによって示される複数の並列計算機環境と、これら複数の並列計算機環境とネットワーク2によって接続されるジョブマネージャ1と呼ぶ管理用のコンピュータとを有する。複数の並列計算機環境が処理能力の異なる複数のコンピュータの一例である。また、ジョブマネージャ1が管理装置の一例である。ここで、E=0からE=eによって示される複数の並列計算機環境のそれぞれは、例えば、図1で例示されるような並列計算機である。E=0からE=eの並列計算機環境は、例えば、それぞれ、複数の計算ノードと、計算ノードでのプログラムの実行を管理するフロントエンドノードとを有する。また、複数の計算ノードと、フロントエンドノードとは、相互結合ネットワークで接続される。計算ノードおよびフロントエンドノードの構成は、図2に例示したものと同様である。図4のように、実施例1のコンピュータシステムは、さらに、それぞれの並列計算機環境とジョブマネージャ1とをネットワーク2で接続する。ネットワーク2は、例えば、図1と同様の相互結合ネットワーク、すなわち、LAN、FibreChannel、InfiniBand等によるネットワークでもよい。また、ジョブマネージャ1は、図1のフロントエンドノードと同様に、ブレードサーバ、パーソナルコンピュータ等でよい。したがって、ジョブマネージャ1の構成は、図2で例示したものと同様である。図5に、本コンピュータシステムの機能を例示する。本コンピュータシステムでは、複数のプログラムが並列で実行される。ジョブマネージャ1は、それぞれのプログラムの実行状況を基に、それぞれのプログラムに対して並列計算機環境E=0からE=eを割り当てる。並列計算機環境E=0からE=eに割り当てられたプログラムは、実行待ちキューに登録され、それぞれ割り当てられた優先順にしたがって、各並列計算機環境で実行される。そして、各並列計算機環境で実行されるプログラムは、自身の実行状況をジョブマネージャ1に報告する。例えば、各プログラム中には、実行のための計算機リソースの要求値をジョブマネージャに通知する状況記述と呼ぶコードが記述される。計算機リソースが処理能力の一例である。計算機リソースとしては、計算ノード数、主記憶装置容量、計算ノード間の通信速度、計算ノード間の通信帯域幅等を例示できる。また、実行のための計算機リソースの要求値は、プログラムを実行するために要求される処理能力を含む要求値の一例である。プログラムを実行するために要求される処理能力とは、プログラム実行依頼元が、プログラムが割り当てられる並列計算機環境に要求する要求値である。この要求値は、例えば、プログラム実行依頼元が、所望の時間で実行結果を得るために設定する要求値である。例えば、並列計算機環境E=eのある計算ノードにおいて実行中のプログラムが状況記述に到達すると、その計算ノードのメモリに常駐するライブラリ関数が呼び出される。ライブラリ関数内では、計算ノードは、プログラムの実行状況、あるいは実行状況に応じた適切な計算機リソースの要求値をジョブマネージャ1に送信する。以下、プログラムの実行状況、あるいは実行状況に応じた適切な計算機リソースの要求値を単に、送信情報という。また、計算ノードは、送信情報とともに、プログラムの実行環境の変更に関する問い合わせをジョブマネージャ1に送信する。計算ノードからジョブマネージャ1への通信方法に限定はない。例えば、図1に例示したような計算ノード間が接続される相互結合ネットワークおよび並列計算機環境が接続されるネットワーク2を介して、計算ノードからジョブマネージャ1に問い合わせを送信すればよい。計算ノードとジョブマネージャ間の通信方法としては、例えば、FibreChannel、InfiniBand、LAN等で利用などのようなプロトコルを使用してもよい。また、プロトコルの階層としても、どのような階層を利用してもよい。例えば、MediaAccessControlアドレスを用いて、通信する専用プログラムをライブラリ関数に組み込み、計算ノードとジョブマネージャ1とが通信するようにしてもよい。また、例えば、TCP/IPのアプリケーション層で、計算ノードとジョブマネージャ1とが通信するプログラムをライブラリ関数に組み込み、計算ノードとジョブマネージャ1とが通信するようにしてもよい。また、計算ノードとジョブマネージャ1に、RemoteProcedureCall遠隔手続き呼び出し、RPCの機能が実装されている場合には、RPCを利用してもよい。いずれにしても、それぞれの計算ノード内のパラメータとして、ジョブマネージャ1のMACアドレス、IPアドレス、ノード名等を保持しておけばよい。例えば、ライブラリ関数内で、計算ノードのOperatingSystemOSから、宛先アドレス等を取得するようにすればよい。ジョブマネージャ1は複数の並列計算機環境E=0からE=eの複数の計算ノードから並列にプログラムの実行環境の変更に関する問い合わせをイベントとして受け取る。この場合、1つの並列計算機環境の複数の計算ノードで実行されるプログラムから、それぞれの実行状況に応じて問い合わせイベントがジョブマネージャ1に送信されることも生じ得る。個々の計算ノードごとに、プログラムの実行状況が異なるからである。ジョブマネージャ1は受信した問い合わせイベントを順序付けて処理するためのイベントキューをもつ。すなわち、それぞれのプログラムからジョブマネージャ1への問い合わせは、問い合わせイベントとして、イベントキューに取り込まれる。ジョブマネージャ1は、イベントキューの優先順にしたがって、それぞれのプログラムすなわち、それぞれの計算ノードからの問い合わせイベントを逐次処理し、それぞれのプログラムに対して、問い合わせイベントに含まれる計算機リソースの要求値に応じて並列計算機環境E=0からE=eを割り当てる。以上のようにして、本コンピュータシステムは、並列計算機の利用効率を高めるために、それぞれのプログラムの各計算ノードでの実行状況が並列計算機の特徴を利用している状況か否かという情報を例えば刻々収集する。そして、第1のプログラムが並列計算機の特徴を利用していない状況になった場合は、本コンピュータシステムは、例えば、その第1のプログラムの実行をより機能の劣る並列計算機環境に移動する。逆に、第2のプログラムの実行がより高機能の並列計算機を必要とする状況になった場合は、本コンピュータシステムは、第2のプログラムの実行をより高機能の並列計算機へ移動する。より具体的には、ジョブマネージャ1は、問い合わせイベントに適合する並列計算機環境を選択し、問い合わせイベントを発したプログラムに、現在実行されている並列計算機環境から、選択された並列計算機環境への切替を指示する。実行時にプログラムが並列計算機の特徴を利用しない状況になったこと、あるいは再びより高い機能を利用する状況になったことは、次の方法でプログラムがジョブマネージャ1に自己申告する。ここで、自己申告とは、例えば、計算ノードで実行中のプログラムから情報をジョブマネージャ1に送信することをいう。計算ノードで実行中のプログラムからジョブマネージャ1へ送信された情報を受信することによって、ジョブマネージャ1は各並列計算機環境でのプログラムの実行状況を検出する。<ジョブマネージャ1への送信;プログラム内での状況記述>プログラム中にプログラムの実行状況、実行のための計算機リソースの要求値等の送信情報をジョブマネージャに送信する処理が記述される。送信情報を送信する処理の記述は、プログラム開発時に行えばよい。計算ノードのCPUは、プログラムを実行中に送信情報を送信する処理の記述箇所に到達すると、その記述にしたがって、計算ノードがその時点でのプログラムの実行状況、計算機リソースの要求値等の送信情報を送信する。プログラム中に、送信情報を送信する処理である状況記述を組み込む方法としては、以下のものが考えられる。1プログラマが明示的にプログラム内に送信情報を送信する処理をコーディングする。2コンパイラがプログラムをコンパイルするときにプログラムを解析し、送信情報に含まれるプログラムの実行状況、計算機リソースの要求値等を自動的に設定し、ジョブマネージャ1に送信する記述を追加する。例えば、コンパイラは、プログラム中で、ループを検出すると、ループの回数Nを複数の部分ループの回数pnに分割する。コンパイラは、例えば、それぞれの部分ループを異なる計算ノードで実行される異なる子プロセスに分割して実行するための実行形式を生成する。このとき、計算ノード数の要求値は、ループ回数N/部分ループ数pnで算出できる。また、部分ループ数pnは、並列実行される子プロセスの実行時間から決定できる。例えば、pnが極端に小さく、計算ノード数の要求値が大きすぎる場合には、各計算ノードで実行される部分ループの処理時間よりも、計算ノード間の通信時間の方が長くなり、効率が低下する。計算ノード間の通信時間は、例えば、部分ループの実行を各計算ノードに依頼するための通信時間、および、各計算ノードから部分ループの実行結果を取得する通信時間等である。そこで、部分ループの回数pnは、計算ノード間の通信時間等、並列計算のための制御のための無駄時間に対して、適切な倍率となる時間に設定することができる。また、コンパイラは、計算ノード間の通信時間等、並列計算のための制御のための無駄時間と、計算ノード間で授受する情報量とから、計算ノード間の通信速度、帯域幅等を算出し、通信機能のレベルを確定すればよい。また、コンパイラは、計算ノード間の通信時間、計算ノード間で授受する情報量、関与する計算ノードの数等から、ネットワークのトポロジを選択するようにしてもよい。そして、コンパイラは、選択したネットワークのトポロジを通信機能のレベルに反映してもよい。例えば、5つの計算ノード間での通信頻度が高い場合には、単純にマトリクスの縦横方向の通信ができればよい。また、例えば、9つの計算ノード間での通信頻度が高い場合には、対角方向にもリンクで接続されるネットワークを選択すればよい。3プログラムのプロファイル情報を利用してもよい。例えば、プロファイル情報の解析プログラムが、過去にそのプログラムを実行したときのプロファイル情報から、実行状況、好ましい計算機リソース等を指定する記述文を作成し、プログラムへ追加するようにしてもよい。ループの回数Nがプログラム中で固定されている場合には、2で説明したように、コンパイル時にコンパイラが適切な計算ノード数を設定することは可能である。しかしながら、ループの回数Nがプログラム中で実行中に付与される動的なパラメータとして定義されている場合には、プログラムの実行まではループの回数Nが特定されない。ループの回数Nが動的なパラメータとしてプログラム中に定義されている場合には、プログラムを実行したプロファイルを基に、ループの回数Nを経験値として特定すればよい。そして、ループ回数Nを経験値としてコンパイラに引き渡せばよい。また、例えば、ループが複数個ある場合、あるいは、ループの回数N以外にコンパイラに引き渡すパラメータが複数ある場合には、プロファイル情報を解析する解析プログラムがコンパイラに引き渡すためのパラメータ群を生成するようにすればよい。コンパイラは解析結果としてのパラメータ値を受け取り、2と同様のコンパイルを実行し、計算ノード数の要求値、通信機能のレベル等を確定すればよい。ただし、バイナリコード変換プログラムがプロファイル情報を解析した結果得られるパラメータ群を基に、実行形式のバイナリコードを組み替えて、複数の計算ノードで実行されるようににしてもよい。各プログラムは、それぞれの計算ノードで実行中に実行状況、あるいは、計算機リソースの要求値をジョブマネージャ1に送信する。ジョブマネージャ1は、それぞれの並列計算機実行環境から送信された情報を基に、それぞれのプログラムに対する望ましい並列計算機環境を決定する。ジョブマネージャ1は、例えば、どのプログラムをどの実行環境に割り当てるのが望ましいかを決定する。このようなジョブマネージャ1の処理は、ジョブ管理とも呼ばれる。ジョブマネージャ1は、ジョブ管理により、複数の並列計算機環境を含むコンピュータシステム全体として、複数のプログラムの実行中に適切な並列計算機環境の割り当てを実現する。ジョブマネージャ1は、各並列計算機環境で検出したプログラムの実行状況、あるいは計算機リソースの要求値と、その時点でプログラムが実行されている各並列計算機環境を考慮して、実行中のプログラムの実行環境を変更するかどうか判断する。プログラム中でプログラムの実行状況、あるいは計算機リソースの要求値等をジョブマネージャ1に送信する処理を記述するために,以下の関数を用意する。ただし、関数名は、一例であり、本コンピュータシステムの処理が以下の関数名に限定される訳ではない。parallelrunlevelここで,各パラメータの意味は次の通りである.NPRIORITY:NPRIORITYは、この関数の実行以降のプログラムの実行の優先順位を指定する。この優先順位は、例えば、対象とする並列計算機環境全体で相対的な値とする。NNODE:NNODEは、上記関数の実行以降、プログラムの実行のために望ましい計算ノードの数を指定する。NCONNECTION:NCONNECTIONは、上記関数の実行以降、プログラムの実行のために望ましい計算ノード間の通信機能のレベルを表す。例えば、NCONNECTIONの値が100の場合は、プログラムが可能な限り高機能の通信処理を必要とすることを意味する。また、NCONNECTIONの値が0の場合は、プログラムはほとんど通信を行わないことを意味する。ADJUSTP:移動先の対象である並列計算機環境がハードウェアの故障などで一時的に利用できない場合の方針を表す。ADJUSTPの値がTRUEである場合は、他の並列計算機環境を選択して実行することを指定する。ADJUSTPの値がFALSEである場合は、対象の並列計算機環境が復旧することを待つことを指定する。これらのパラメータは定数であってもよい。また、これらのパラメータは定数ではなく、実行時にプログラムが計算した値でもよい。プログラムの実行が、この関数の呼び出し箇所へ到達した場合、上記パラメータで指定されるプログラムの実行状況が、プログラムからジョブマネージャ1に報告される。ジョブマネージャ1は、報告されたプログラムの実行状況から、プログラムが実行されている並列計算機環境を維持するか、変更するか、をコンピュータシステムの現在の状況と、報告されたこれらのパラメータの値から決定する。本コンピュータシステム上で、ジョブマネージャ1による並列計算機環境の割り当てを受けるプログラムは、プログラム中にparallelrunlevelの呼び出し文を含む。parallelrunlevelはライブラリ関数として実装し、プログラムをコンパイルして実行可能ファイルを作成するときに,プログラムにリンクすればよい。<実行状況の報告を利用したプログラムプログラムの実行環境の変更処理>図5で説明したように、計算ノードからジョブマネージャ1へのプログラムの実行状況、あるいは計算機リソースの要求値の送信によって、ジョブマネージャ1は、プログラムの実行環境を変更する。実施例1では、プログラムを実行する並列計算機環境側と、ジョブマネージャ1とが並行に処理を実行する。以下、プログラムが最初に並列計算機実行環境Ee上で動いているものとする。以下、並列計算機実行環境Eeを単に、並列計算機E=eという。また、並列計算機E=eのいずれかの計算ノードがプログラムを実行することを単に、並列計算機E=eがプログラムを実行するという。図6に、並列計算機環境側の処理フローを例示する。並列計算機E=eは、プログラムの実行を終了した場合は、処理を完了するS1。並列計算機E=eは、プログラムの実行中にparallelrunlevelの呼び出し箇所に到達したら、parallelrunlevelのライブラリ関数を実行するS2。並列計算機E=eは、parallelrunlevelのライブラリ関数において、プログラム実行時の各パラメータの値NPRIORITY,NNODE,NCONNECTION,ADJUSTPを取得するS3。並列計算機E=eは、parallelrunlevelのライブラリ関数においてジョブマネージャ1にプログラムの実行環境を変更した方がよいか否かの判断を問い合わせるために、問い合わせイベントを作成する。そして、並列計算機E=eは、作成した問い合わせイベントをジョブマネージャ1に送信する。すると、ジョブマネージャ1によって、送信された問い合わせイベントがジョブマネージャ1のイベントキュー4に追加されるS4。より具体的には、関数parallelrunlevelの呼び出し箇所に到達した計算ノードは、ランタイムライブラリ中に用意された通信機能により、関数parallelrunlevelのパラメータで与えられる情報をジョブマネージャ1に送信する。問い合わせイベントには以下の情報を含める。すなわち、問い合わせイベントに含まれる情報は、現在の並列計算機環境の番号e、プログラムのパラメータ値NPRIORITY,NNODE,NCONNECTION,ADJUSTPである。ジョブマネージャ1は、イベントキュー4に追加された各問い合わせイベントのNPRIORITYの値によって、問い合わせイベントの処理に優先順位を付けて処理する。さらに、並列計算機E=eは、parallelrunlevelのライブラリ関数において、ジョブマネージャ1から問い合わせイベントに対する返信メッセージが来るまで、プログラム実行状態を一時休止状態にする処理を実行するS5。そして、ジョブマネージャ1から問い合わせイベントに対する返信メッセージが返信されると、並列計算機E=eは、その返信内容によって以下のように処理を分けるS6。プログラムの実行環境を変更しないことを指示する返信メッセージを受信した場合には、並列計算機E=eは、一時休止状態からプログラムの実行を再開し、制御をS1に戻す。プログラムの実行環境を変更することを指示する返信メッセージを受信した場合、並列計算機E=eは、制御をS7に進める。そして、並列計算機E=eは、プログラムの実行環境の変更を指示する返信メッセージの内容から、移動する先の実行環境番号e0を取り出すS7。次に、並列計算機E=eは、プログラムの現在の実行イメージを主記憶装置、あるいは外部記憶装置に保存する。この場合、プログラムの現在の実行イメージとは、実行可能なバイナリデータプログラムのバイナリコードの他、レジスタセットの値を含む、コンテキストと呼ばれるものである。コンテキストには、例えば、プログラムがどこまで実行されたかを示すチェックポイントと呼ばれる情報を含めてもよい。プログラムの現在の実行イメージの保存先は、プログラムの現在の実行環境である並列計算機E=eと、移動する先の実行環境である並列計算機E=e0の両方からデータの読み出しと書き込みが可能な領域が望ましい。なお、並列計算機E=eと、移動する先の並列計算機E=e0の両方からデータの読み出しと書き込みが可能な領域は、例えば、コンピュータシステムの共有メモリ、共有ディスク、ネットワーク2上の共有可能な記憶装置領域、ジョブマネージャ1の主記憶装置、ジョブマネージャ1の外部記憶装置等である。ただし、プログラムの現在の実行イメージを一旦、プログラムの現在の実行環境である並列計算機E=eの主記憶装置、あるいは外部記憶装置に保存し、移動する先の実行環境である並列計算機E=e0の主記憶装置、あるいは外部記憶装置に転送してもよい。例えば、並列計算機E=eは、並列計算機E=eのフロントエンドプロセッサの主記憶装置、あるいは外部記憶装置に、現在の実行イメージを一旦保存すればよい。そして、並列計算機E=eは、保存した現在の実行イメージを並列計算機E=e0のフロントエンドプロセッサの主記憶装置、あるいは外部記憶装置に、転送すればよい。新しい実行環境である並列計算機E=e0でプログラムの実行を継続するために、並列計算機E=eは、並列計算機実行環境e0の実行待ちキューにプログラムの実行予約の登録を並列計算機E=e0に依頼するS8。並列計算機E=e0は、実行待ちキューをプログラムのNPRIORITYの値によって、プログラムの実行に優先順位を付けて処理する。新しい実行環境である並列計算機E=e0でプログラムの実行の継続実行が開始すると、プログラムは、新しい実行環境E=e0でステップS1からの処理を繰り返す。このとき、プログラムの実行イメージに含まれるコンテキスト、レジスタセットの値、チェックポイント等を用いて、プログラムの実行が再開される。図7に、ジョブマネージャ1側の処理フローを例示する。ジョブマネージャ1は、イベントキュー4が空ならば、次の問い合わせイベントが到着するまで待つT1。以下、問い合わせイベントを単にイベントともいう。イベントキュー4が空でなければ、ジョブマネージャ1は、イベントキュー4の先頭からイベントZを取り出す。そして、ジョブマネージャ1は、制御をT2に進める。ジョブマネージャ1は、イベントZから次の情報を取り出す。すなわち、ジョブマネージャ1は、イベントを発行した並列計算機環境の番号e、およびイベントを発行したプログラムのパラメータ値NPRIORITY,NNODE,NCONNECTION,ADJUSTPを読み出すT2。ジョブマネージャ1のCPUは、プログラムを実行するために要求される要求値を取得する手段の一例として、T2の処理を実行する。次に、ジョブマネージャ1は、イベントZから取り出した情報から、プログラムの実行環境の変更先の候補となるプログラムの実行環境の集合Cを作成するT3。集合Cはイベントを発行した並列計算機環境の番号eを含む可能性がある。つまり移動しないという選択肢もあり得る。集合Cの作成方法は以下の通りである。ジョブマネージャ1は、パラメータNNODEの値をnとし、NCONNECTIONの値をcとする。また、各並列計算機環境eの計算ノード数をNe、通信機能のレベルをCeとする。以下を満たす並列計算機環境の集合Cを求める。なお、各並列計算機環境の計算ノード数、通信機能のレベル等は、例えば、図9に例示する並列計算機環境テーブルで管理しておけばよい。C{e|Ne>=n、かつ、Ce>=c};すなわち、ジョブマネージャ1は、イベントZから取り出したパラメータに指定された計算機リソース以上の資源をもつ並列計算機環境の集合を作成する。次に、ジョブマネージャ1は、集合Cから、イベントZに対応するプログラムの次の実行環境e0を決定するT4。ジョブマネージャ1のCPUは、選択手段の一例として、T4の処理を実行する。集合C空集合である場合、すなわち、どの並列計算機環境を選択しても、パラメータに指定された計算機リソースが満足できない場合には、ジョブマネージャ1は、選択可能な並列計算機環境E=0からE=eの中で、最も高機能の並列計算機環境を選択する。どの並列計算機環境を選択しても、パラメータに指定された計算機リソースが満足できない場合には、最も高機能の並列計算機環境を選択するという点で、ジョブマネージャ1は、可能な範囲で要求値に適合する処理能力の並列計算機環境を選択すると言える。集合Cが複数の並列計算機環境の候補を含む場合には、ジョブマネージャ1は、集合Cに含まれる候補の中から最も機能の劣る並列計算機環境を選択する。移動先の計算機環境を決定する場合には、ジョブマネージャ1は、以下の追加の状況判断も実行する。集合Cに含まれる候補の中から最も機能の劣る並列計算機環境を選択するという点においても、ジョブマネージャ1は、可能な範囲で要求値に適合する処理能力の並列計算機環境を選択すると言える。パラメータ値から現在の計算機環境eよりも劣るレベルの計算機環境へ移動すると判断した場合で、かつeにNPRIORITYよりも高い優先度をもつプログラムが実行待ちキューに存在しない場合;この場合には、ジョブマネージャ1は、現在の計算機環境eに余裕があると考えて、プログラムの実行環境を移動しないと判定する。移動先の計算機環境でNPRIORITYよりも高い優先順位をもつプログラムが動作している場合で、かつ、それよりも高機能の計算機環境の候補により高い優先順位をもつプログラムが存在しない場合;この場合には、ジョブマネージャ1は移動先の計算機環境よりも、余裕のある、より高機能の計算機環境へ移動すると判定する。計算機環境の機能の優劣の順序を一意に決定できない場合、例えば、n100c100について、Nx100Cx200である並列計算機環境gと,Ny200Cy100である環境並列計算機hがある場合は、事前に、環境並列計算機gとhのうちどちらを優先的に使うか決めておけばよい。ジョブマネージャ1は、決定した変更先の計算機環境をe0とする。ADJUSTPがTRUEで、かつ移動先の計算機環境e0がハードウェアの故障などで一時的に利用できない場合は、ジョブマネージャ1は、e0を選択候補から外して、再びT4の処理を実行する。ジョブマネージャ1は、イベントを発行した並列計算機環境eへ向けて、実行一時休止中のプログラムを変更先の計算機環境へe0移動するようにメッセージを返信するT5。ジョブマネージャ1のCPUは、切替制御手段の一例として、T5の処理を実行する。このとき,もしe=e0であれば、ジョブマネージャ1は、計算機環境は変更しないように並列計算機環境にメッセージを送信する。そして、イベントマネージャ1は、次のイベントを処理するために制御をT1に戻すT6。図8に、集合Cから、問い合わせイベントの情報に応じてプログラムの次の実行環境e0を決定する処理図7のT4の詳細を例示する。この処理では、イベントマネージャ1は、処理T3で作成した集合C、すなわち、プログラムの実行環境の変更先の候補となるプログラムの実行環境の集合Cが空集合か否かを判定するT41。集合Cが空集合の場合、イベントマネージャ1は、コンピュータシステム中で最も高機能の並列計算機環境を変更先の並列計算機環境として選択するT42。そして、イベントマネージャ1は、処理を終了する。一方、集合Cが空集合でない場合、イベントマネージャ1は、集合C中の最も低機能の並列計算機環境を変更先の並列計算機環境Xとして選択するT43。そして、イベントマネージャ1は、変更先の並列計算機環境Xが現並列計算機環境より低機能であって、かつ、現並列計算機環境でNPRIORITYよりも優先度の高いプロセスが実行されていない条件が満たされるか否かを判定するT44。T44の条件が満たされた場合、ジョブマネージャ1は、並列計算機環境を変更しない決定をする。現環境に空きがある場合で、より低機能の並列計算機環境に余裕が少ない場合には、並列計算機環境を変更しない方がよいからである。すなわち、現並列計算機環境を次の並列計算機環境として選択するT45。そして、イベントマネージャ1は、処理を終了する。なお、それぞれの並列計算機環境で実行中の優先度については、例えば、図9に例示する並列計算機環境テーブルで管理しておけばよい。ジョブマネージャ1のCPUは、切替抑止手段の一例として、T45の処理を実行する。また、T44の条件が満たされない場合、イベントマネージャ1は、変更先の並列計算機環境XでNPRIORITYよりも優先度の高いプロセスが実行されており、かつ、並列計算機環境Xよりも高機能の並列計算機環境Yに空きがある条件が満たされるか否かを判定するT46。ここで、並列計算機環境Yに空きがあるとは、並列計算機環境YでNPRIORITYよりも優先度の高いプロセスが実行されていないことを例示できる。T46の条件が満たされた場合、ジョブマネージャ1は、並列計算機環境Xよりも高機能の並列計算機環境Yを変更先の並列計算機環境として選択するT47。より高機能の並列計算機環境に空きがある場合には、有効活用した方がコンピュータシステム全体としての効率上問題が生じない上に、問い合わせイベントの対象となっているプログラムをより高速に実行できるからである。すなわち、ジョブマネージャ1のCPUは、第1コンピュータに代えて前記第3コンピュータを選択する処理の一例として、T47の処理を実行する。そして、イベントマネージャ1は、処理を終了する。図9に、並列計算機環境テーブルのデータ例を示す。並列計算機環境テーブルは、例えば、ジョブマネージャ1の主記憶装置、あるいは外部記憶装置に格納される。並列計算機環境テーブルを記憶するジョブマネージャ1の主記憶装置、あるいは外部記憶装置が処理能力を含む管理情報を記憶する手段の一例である。また、並列計算機環境テーブルが管理情報の一例である。図9の表で1行が1つのレコードに対応し、1つの並列計算機環境を定義する。図9のように、並列計算機環境テーブルの1つのレコードは、並列計算機環境名、計算ノード数、通信機能レベル、割当プログラム数、割当済み最高優先度、割当済み最低優先度の各フィールドを有する。並列計算機環境名は、個々の並列計算機環境を識別するための情報である。並列計算機環境名は、例えば、並列計算機環境テーブル内でユニークな文字列とすることができる。また、並列計算機環境名は、例えば、フロントエンドノードのノード名、あるいはネットワーク2上のアドレスであってもよい。例えば、並列計算機環境名は、フロントエンドノードのInternetProtocolIPアドレス、フロントエンドノードの通信インターフェースのMACアドレス等であってもよい。計算ノード数は、並列計算機環境名で指定される並列計算機環境での計算ノード数である。通信機能レベルは、並列計算機環境名で指定される並列計算機環境での通信機能のレベルである。通信機能のレベルは、例えば、ネットワークのトポロジ、帯域幅、データ転送速度等によって設定される。割当プログラム数は、並列計算機環境名で指定される並列計算機環境に現時点で割り当てられているプログラム数である。割当プログラム数は、ジョブマネージャ1の処理に応じて変動する。例えば、ジョブマネージャ1は、並列計算機環境名で指定される並列計算機環境への並列計算機環境の変更をプログラムに指定したときに、そのプログラムが現在割り当てられている、変更元の並列計算機環境での割当プログラム数を1減算し、変更先の並列計算機環境での割当プログラム数を1加算すればよい。ただし、各並列計算機環境は、それぞれプログラムの実行環境として、割当を受け付けたときに、プログラムの割当増加をジョブマネージャ1に通知するようにしてもよい。また、各並列計算機環境は、実行中のプログラムを他の並列計算機環境に変更を依頼し、変更の依頼が受け付けられたとき、プログラムの割当減少をジョブマネージャ1に通知するようにしてもよい。ジョブマネージャ1は、それぞれの並列計算機環境から、プログラムの割当増加の通知、あるいは割当減少の通知を受けたときに、割当プログラム数を変更すればい。割当プログラム数が多いほど、並列計算機環境名で指定される並列計算機環境が込み合っているということができる。割当済み最高優先度は、並列計算機環境名で指定される並列計算機環境に現時点で割り当てられているプログラムの優先度のうち、最も高い優先度である。割当済み最高優先度が高いほど、新たに割り当てられるプログラムによって当該並列計算機環境を利用することが難しいということができる。逆に、割当済み最高優先度が低いほど、新たに割り当てられるプログラムによって当該並列計算機環境を利用できる可能性が高いということができる。ジョブマネージャ1は、並列計算機環境名で指定される並列計算機環境へ並列計算機環境を移動するようにプログラムにメッセージを返信したときに、メッセージが返信されたプログラムの優先度に応じて、変更前後の並列計算機環境での割当済み最高優先度を変更すればい。また、各並列計算機環境は、それぞれプログラムの実行環境として、割当を受け付けたときに、割り当てたプログラムの優先度をジョブマネージャ1に通知するようにしてもよい。また、各並列計算機環境は、実行中のプログラムを他の並列計算機環境に変更を依頼し、変更の依頼が受け付けられ、プログラムの割当が削除されたときに、割当が削除されたプログラムの優先度をジョブマネージャ1に通知するようにしてもよい。ジョブマネージャ1は、それぞれの並列計算機環境から、プログラムに割り当てられた優先度、あるいは割当が削除された優先度の通知を受けたときに、割当済み最高優先度を変更してもよい。割当済み最低優先度は、並列計算機環境名で指定される並列計算機環境に現時点で割り当てられているプログラムの優先度のうち、最も低い優先度である。割当済み最低優先度が高いほど、多くのプログラムが高い優先度で割り当てられてことが分かる。割当済み最低優先度についても、割当済み最高優先度と同様に管理すればよい。<効果>以上述べたように、本コンピュータシステムによれば、複数の並列計算機環境を有効利用することができる。コンピュータシステムの各並列計算機環境中の各計算ノードは、プログラム中の状況記述の箇所を実行すると、その状況記述に設定されたプログラムの実行状況、そのプログラムに望ましい計算ノード数、通信機能のレベル等をジョブマネージャ1に送信する。このような処理によって、コンピュータシステムは、それぞれのプログラムの実行状況、好ましい計算機リソースの情報を適時に取得できる。コンピュータシステムのジョブマネージャ1は、一時的あるいはある時点以降、データ通信機能の要求レベルが低くなるプログラムの実行を、データ通信機能のレベルが低い並列計算機環境へ移動する。この処理によって、ジョブマネージャ1は、データ通信機能の高い並列計算機の機能をより優先度の高いプログラムへ割り当てることができる。ジョブマネージャ1は、計算ノード数の要求数が少ないプログラムの実行を計算ノード数が少ない並列計算機環境へ移動する。この処理によって、ジョブマネージャ1は、並列計算機の機能をより優先度の高いプログラムへ割り当てることができる。ジョブマネージャ1は、一時的あるいはある時点以降、データ通信機能の要求レベルが高くなるプログラムの実行をデータ通信機能のレベルが高い並列計算機環境へ移動する。この処理によって、コンピュータシステムでは、並列計算機を有効利用することができる。ジョブマネージャ1は、一時的あるいはある時点以降,必要とする計算ノード数が多くなるプログラムの実行を計算ノード数が多い並列計算機環境へ移動することによって、大規模並列計算機の機能を有効利用することができる。複数の並列プログラムが複数の問い合わせイベントを送信して並列計算機環境の変更の要否を問い合わせた場合に、問い合わせイベントの優先順位を考慮し、複数の並列計算機環境を決定し、結果として、コンピュータシステム全体の有効利用することができる。また、T44、T45に示したように、ジョブマネージャ1は、変更先の並列計算機環境Xが現並列計算機環境より低機能であって、かつ、現並列計算機環境でNPRIORITYよりも優先度の高いプロセスが実行されていない条件が満たされるか否かを判定する。そして、この条件が満たされた場合、ジョブマネージャ1は、並列計算機環境を変更しない決定をする。したがって、コンピュータシステム1は、現環境に空きがある場合には、現在よりも低機能の並列計算機環境に並列計算機環境を変更しない決定をする。したがって、現環境に空きがある場合には、柔軟かつ効率的に計算機リソースがプログラムに割り当てられる。また、T46、T47に示したように、変更先の並列計算機環境XでNPRIORITYよりも優先度の高いプロセスが実行されており、かつ、並列計算機環境Xよりも高機能の並列計算機環境Yに空きがある条件が満たされるか否かを判定する。そして、この条件が満たされた場合、ジョブマネージャ1は、並列計算機環境Xよりも高機能の並列計算機環境Yを変更先の並列計算機環境として選択する。このような処理によって、本コンピュータシステムは、より高機能の並列環境に空きがある場合には、空きのある高機能の並列計算機環境を有効活用することができる。以下、図10から図14の図面を参照して、実施例2に係るコンピュータシステムを説明する。実施例1では、複数の並列計算機環境E=0からE=eを有するコンピュータシステムで実行されるそれぞれのプログラムが、実行状況等を含む問い合わせイベントをジョブマネージャ1に送信し、並列計算機環境の変更の要否について指示を受けるコンピュータシステムについて説明した。実施例2では、並列計算機環境E=0からE=eの一例として、図10から図14に示されるものを適用し、具体的な運用例を説明する。したがって、図4に示したジョブマネージャ1と個々の並列計算機環境の接続、ジョブマネージャ1の機能等、図5から図9に示したジョブマネージャ1の処理、個々のプログラムで実行される問い合わせイベントの送信および並列計算機環境の変更の要否について指示の受信処理等は、実施例1と同様である。そこで、実施例2では、実施例1と同一の構成および作用については、実施例1の図面を踏襲するものとして説明する。なお、実施例1では、それぞれの並列計算機環境における計算ノード数、通信機能のレベルは、図9の並列計算機環境テーブルで管理した。しかし、実施例2では、並列計算機環境の名称中に、計算ノード数、通信機能のレベルを埋め込む。例えば、並列計算機環境N16C100は、計算ノード数16、通信機能レベル100を示す。計算ノード数および通信機能のレベルが同数の並列計算機環境が複数ある場合には、並列計算機環境N16C100-1、N16C100-2のように管理すればよい。したがって、実施例2では、図10に示した並列計算機環境テーブルのうち、計算ノード数、通信機能レベルは、省略してもよい。実施例2では、次に示す5種類の並列計算機環境が存在すると仮定する。ただし、本コンピュータシステムの構成において、並列計算機環境の数に限定はない。また、以下の並列計算機環境では、計算ノードの数は、9個または16個のものを例示する。しかし、本コンピュータシステムの構成において、計算ノードの数に限定がある訳ではない。例えば、計算ノードの数は数千、数万であってもよい。図10に、並列計算機環境N16C100を例示する。ここで、N16C100は、並列計算機環境を識別する情報であるとともに、ハードウェア資源の仕様を明示する情報でもある。すなわち、N16は、計算ノード数が16個であることを示す。図10で4行4列の矩形が計算ノードを示す。矩形間の実線がネットワークのリンクを示す。C100は、計算ノード間の通信機能が最も高機能レベルである並列計算機環境を示す。実施例2では、計算ノード間の通信機能のレベルをC0からC100で表す。ここで、計算ノード間の通信機能の種類、レベル付けの仕方に限定がある訳ではない。例えば、計算ノード間の帯域幅、1つの計算ノードに対して、他の計算ノードを中継せずに直接通信できる相手計算ノード数、等の情報から、通信機能のレベルを設定することができる。図10の例では、マトリクス状に配列された計算ノードは、それぞれ行方向、列方向の他、対角方向の計算ノードと接続されている。また、16個の計算ノードの他に1個のフロントエンドノード31が設けられている。フロントエンドノード31は、図4に示したネットワーク2を介してジョブマネージャ1および他の並列計算機環境と接続される。フロントエンドノード31は、ジョブマネージャ1または他の並列計算機環境で実行されるプログラムから、プログラムの実行要求を受け付ける。そして、フロントエンドノード31は、受け付けたプログラムの実行要求をプログラムの実行待ちキューに登録する。また、フロントエンドノード31は、プログラムの実行待ちキューに登録されたプログラムを計算ノードに引き渡し、実行させる。プログラムの実行待ちキューに登録されたプログラムは、それぞれのプログラムに設定された優先順で、計算ノードに引き渡される。この場合の計算ノードでの実行されるプログラムと、プログラムの実行待ちキューに登録されたプログラムとの入れ替え手順は、通常のコンピュータシステムと同様である。例えば、それぞれのプログラムに割り当てられた処理時間が経過すると、計算ノードでの実行されるプログラムは、実行が中断され、プログラムの実行待ちキューに再度登録される。そして、プログラムの実行待ちキューで優先度順に、プログラムが計算ノードに引き渡されるようにすればよい。また、それぞれのプログラムに割り当てられた処理時間が経過する前に、プログラムが入出力待ちの状態となった場合には、プログラムの実行が中断され、プログラムの実行待ちキューに再度登録されるようにしてもよい。図11に、並列計算機環境N16C50を例示する。並列計算機環境N16C50の計算ノードの数は16個で、計算ノード間の通信機能が平均的レベルである。例えば、マトリクス情報に配列された計算ノード間で、行方向および列方向の接続はあるが、対角方向の接続は設けられていない。したがって、それぞれの計算ノードが対角方向の計算ノードと通信するためには、行方向または列方向に隣接する計算ノードを経由することになる。図12に、並列計算機環境N16C0を例示する。並列計算機環境N16C0の計算ノードの数は16個で、計算ノード間の通信機能は最も低いレベルである。図12で計算ノード間の接続、すなわちネットワーク2のトポロジは、図11のN16C50と同様である。しかし、並列計算機環境N16C0において、計算ノード間のリンクの帯域は、図11のN16C50よりも狭い。図13に、並列計算機環境N9C100を例示する。並列計算機環境N9C100の計算ノードの数は9個で、計算ノード間の通信機能は最も高いレベルである。図14に、並列計算機環境N9C0を例示する。並列計算機環境N9C0の計算ノードの数は9個で、計算ノード間の通信機能は最も低いレベルである。プログラムPの実行環境の変更手順の実装例を以下に示す。プログラムPは以下に示す状況記述を含むものとする。R0parallelrunlevelD1R1parallelrunlevelD2R2parallelrunlevelD3R3parallelrunlevelD4R4また、プログラムPの実行開始時点R0の実行環境はN16C100であるとする。実行環境N16C100上でプログラムPを実行しているときに、D1の状況記述に到達することで、最初の実行環境変更の判断が発生する図6のステップS2。実行環境N16C100からジョブマネージャ1へプログラムPの移動先の問い合わせのイベントを送る図6のステップS3、S4。問い合わせのイベントを送った後は,実行環境N16C100上でのプログラムPの実行は一時休止状態とする図6のステップS5。ジョブマネージャ1は、実行環境N16C100からの問い合わせのイベントを受け取り、イベントが含むD1の状況記述の情報から、ジョブマネージャ1はプログラムPの実行環境の移動先の候補を作成する。この場合の移動先の候補はN16C50とN16C100の2つとなる。ジョブマネージャ1は、この候補から最も機能の劣るN16C50を選択する図7のステップT1、T2、T3、T4。ただし、この時点で追加の状況判断図8のT44参照から、状況によってはN16C100で実行を続ける、すなわち移動しないという選択もあり得る。ここでは、その選択は発生しなかったと仮定する。ジョブマネージャ1は、実行環境N16C100のプログラムPに対して、実行環境をN16C100からN16C50へ変更するように、返信メッセージを送る図7のステップT5。実行環境N16C100上で一時実行休止状態になっているプログラムPは、ジョブマネージャ1からの返信メッセージを受け取り,返信メッセージが示すN16C50へ実行環境を変更する図6のステップS6、S7、S8。実行環境N16C50へ移動したプログラムPは、実行待ちキューへ登録される。実行待ちキューで実行の順番がくると、フロントエンドプロセッサは、実行待ちキューからプログラムPを指定する情報を取得し、プログラムPの実行を実行環境N16C50上で再開する図6のステップS8、S1。以上の処理の結果として、プログラムPの実行範囲R1はN16C50上での実行となる。以下、本コンピュータシステムは、同様の手順でparallelrunlevelを処理する。例えば、実行環境N16C50上でプログラムPを実行しているときに、D2の状況記述に到達することで,次の実行環境変更の判断が発生する。ここでは、計算ノードの数を減らして良いというN_NODE=5の指定から、コンピュータシステムはプログラムPの実行環境をN9C50へ変更する。結果として、プログラムPの実行範囲R2はN9C50上での実行となる。実行環境N9C50上でプログラムPを実行しているときに、D3の状況記述に到達することで,次の実行環境変更の判断が発生する。D3の状況記は、これ以降、計算ノードの数も通信機能も最高レベルの機能が最優先で必要であることを意味している。そこで、最も高機能の実行環境N16C100へプログラムPの実行を移動する。ただし、D3の状況記述では、ADJUSTPがTRUEであるため、N16C100がハードウェアの故障などで一時的に利用できない場合は、別の候補を選択する。例えば、N16C50が選択される。実行環境N16C100上でプログラムPを実行しているときに、D4の状況記述に到達することで、最後の実行環境変更の判断が発生する。D4の状況記述は、これ以降、優先順位も計算ノード数も通信機能も最低レベルでよいことを示している。そこで、コンピュータシステムは、最も機能の低い実行環境N9C0へプログラムPの実行を移動する。<変形例>上記実施例1、実施例2では、ジョブマネージャ1問い合わせイベントに応答して、次の並列計算機環境Xをコンピュータプログラムに指示した。そして、問い合わせイベントに対する応答を受けたコンピュータプログラムが実行中のコンテキストを含む実行形式を保存し、次の並列計算機環境Xに依頼し、実行待ちキューに登録された。このような処理に代えて、ジョブマネージャ1がコンピュータプログラムを実行する現在の並列計算機実行環境EのOSに対して、プログラムの実行中断と、次の並列計算機環境Xへの移動を指示してもよい。現在の並列計算機実行環境EのOSは、ジョブマネージャ1からの指示を受けて、実行中のプログラムのコンテキストを含む実行形式を保存し、次の並列計算機環境XのOSに実行を依頼してもよい。上記実施例1、2では、コンピュータシステムは、ネットワーク2で接続される複数の並列計算機環境を有していた。しかし、実施例1、実施例2のような複数の並列計算機環境に代えて、複数の仮想計算機を有するコンピュータシステムを用いて、複数のプログラムを実行する場合にも、実施例1、実施例2の手順を適用できる。つまり、コンピュータシステムの並列計算機環境は、物理的に異なる並列計算機環境ではなく、複数のCPUを有するコンピュータシステム上に構築される仮想計算機であってもよい。つまり、どのプログラムをどの仮想計算機に実行されるかを図6-図8の処理と同様に処理することで、適切な仮想計算機にプログラムを実行させ、コンピュータシステム全体の効率を向上することができる。<コンピュータが読み取り可能な記録媒体>ジョブマネージャ1で例示されるコンピュータその他の機械、装置以下、コンピュータ等に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD-ROM、CD-R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやROMリードオンリーメモリ等がある。"