(57)【特許請求の範囲】
【請求項１】
電力消費量を低減する省電力モードへ移行可能な演算処理装置を含む複数の計算ノードに対してジョブを割り当てるジョブ割当装置において、
ジョブが投入された場合、ジョブが割り当てられていない計算ノードそれぞれが有する演算処理装置が所定期間において前記省電力モードに移行した期間の割合を示す省電力モード移行率を算出する第１の算出部と、
ジョブが投入された場合、ジョブが割り当てられていない計算ノードそれぞれについて、投入されたジョブが割り当てられた場合に通信対象となる計算ノードとの通信距離を、ジョブが割り当てられていない計算ノード毎に順次算出するとともに、順次算出した通信距離の平均である平均通信距離を算出する第２の算出部と、
前記ジョブが割り当てられていない計算ノードのうち、前記第１の算出部が算出した省電力モード移行率が低いほど、且つ前記第２の算出部が算出した平均通信距離が短いほど大きくなる判定値が最大となる計算ノードを、投入された前記ジョブを割り当てる計算ノードとして特定する特定部と、
前記特定部が特定した計算ノードに新規ジョブを割り当てる割当部を有することを特徴とするジョブ割当装置。
【請求項２】
前記特定部は、
前記省電力モード移行率を１から減算して得られる値と、前記平均通信距離を冪指数として所定の数を冪乗して得られる値との二乗平均平方根である判定値が最大となる計算ノードを、投入された前記ジョブを割り当てる計算ノードとして特定することを特徴とする請求項１記載のジョブ割当装置。
【請求項３】
前記ジョブ割当装置はさらに、
ジョブが割り当てられている計算ノードそれぞれが有する演算処理装置の省電力モード移行率を算出する第３の算出部と、
前記第３の算出部が算出した省電力モード移行率が所定の閾値を超過している計算ノードに割り当てられているジョブを、ジョブが割り当てられていない計算ノードに移し替える移替部を有することを特徴とする請求項１又は２に記載のジョブ割当装置。
【請求項４】
電力消費量を低減する省電力モードへ移行可能な演算処理装置を含む複数の計算ノードと、前記複数の計算ノードに対してジョブを割り当てるジョブ割当装置とを有する並列計算機システムにおいて、
前記ジョブ割当装置は、
ジョブが投入された場合、ジョブが割り当てられていない計算ノードそれぞれが有する演算処理装置が所定期間において前記省電力モードに移行した期間の割合を示す省電力モード移行率を算出する第１の算出部と、
ジョブが投入された場合、ジョブが割り当てられていない計算ノードそれぞれについて、投入されたジョブが割り当てられた場合に通信対象となる計算ノードとの通信距離を、ジョブが割り当てられていない計算ノード毎に順次算出するとともに、順次算出した通信距離の平均である平均通信距離を算出する第２の算出部と、
前記ジョブが割り当てられていない計算ノードのうち、前記第１の算出部が算出した省電力モード移行率が低いほど、且つ前記第２の算出部が算出した平均通信距離が短いほど大きくなる判定値が最大となる計算ノードを、投入された前記ジョブを割り当てる計算ノードとして特定する特定部と、
前記特定部が特定した計算ノードに新規ジョブを割り当てる割当部を有することを特徴とする並列計算機システム。
【請求項５】
電力消費量を低減する省電力モードへ移行可能な演算処理装置を含む複数の計算ノードに対してジョブを割り当てるジョブ割当装置のジョブ割当方法において、
ジョブが投入された場合、前記ジョブ割当装置が有する第１の算出部が、ジョブが割り当てられていない計算ノードそれぞれが有する演算処理装置が所定期間において前記省電力モードに移行した期間の割合を示す省電力モード移行率を算出し、
ジョブが投入された場合、ジョブが割り当てられていない計算ノードそれぞれについて、投入されたジョブが割り当てられた場合に通信対象となる計算ノードとの通信距離を、ジョブが割り当てられていない計算ノード毎に順次算出するとともに、順次算出した通信距離の平均である平均通信距離を算出し、
前記ジョブ割当装置が有する特定部が、前記ジョブが割り当てられていない計算ノードのうち、前記第１の算出部が算出した省電力モード移行率が低いほど、且つ前記第２の算出部が算出した平均通信距離が短いほど大きくなる判定値が最大となる計算ノードを、投入された前記ジョブを割り当てる計算ノードとして特定し、
前記ジョブ割当装置が有する割当部が、前記特定部が特定した計算ノードに新規ジョブを割り当てることを特徴とするジョブ割当方法。
【請求項６】
電力消費量を低減する省電力モードへ移行可能な演算処理装置を含む複数の計算ノードに対してジョブを割り当てるジョブ割当装置のジョブ割当プログラムにおいて、
ジョブが投入された場合、前記ジョブ割当装置が有する第１の算出部に、ジョブが割り当てられていない計算ノードそれぞれが有する演算処理装置が所定期間において前記省電力モードに移行した期間の割合を示す省電力モード移行率を算出させ、
ジョブが投入された場合、ジョブが割り当てられていない計算ノードそれぞれについて、投入されたジョブが割り当てられた場合に通信対象となる計算ノードとの通信距離を、ジョブが割り当てられていない計算ノード毎に順次算出するとともに、順次算出した通信距離の平均である平均通信距離を算出させ、
前記ジョブ割当装置が有する特定部に、前記ジョブが割り当てられていない計算ノードのうち、前記第１の算出部が算出した省電力モード移行率が低いほど、且つ前記第２の算出部が算出した平均通信距離が短いほど大きくなる判定値が最大となる計算ノードを、投入された前記ジョブを割り当てる計算ノードとして特定させ、
前記ジョブ割当装置が有する割当部に、前記特定部が特定した計算ノードに新規ジョブを割り当てさせることを特徴とするジョブ割当プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算ノードにジョブを割り当てるための装置、方法、及び、プログラムに、関する。
【背景技術】
【０００２】
事務的な計算や研究的な計算処理を並列且つ高速に行うため、ＣＰＵ［Central Processing Unit］を１個ずつ含む複数の計算ノードを筐体内に備えた情報処理装置がある。そ
の情報処理装置では、操作者が投入したジョブは、待ち行列に蓄えられるようになっており、ジョブは、その待ち行列から１つずつ取り出され、未使用の計算ノードに割り当てられて、実行されるようになっている。
【０００３】
ところで、ＣＰＵ自体の温度が高くなると、ＣＰＵの故障率が上がり、消費電力も上がる。このため、ＣＰＵの中には、自身を保護するための過熱防止機能を有するものがある。その過熱防止機能によると、ＣＰＵは、自身の温度が高くなると、動作モードを通常モードから省電力モードに移行させ、クロック数やパイプライン数を減らして、電力消費量を最低限に抑え、自己の冷却を図る。前述した情報処理装置内の各計算ノードは、このような過熱防止機能を有するＣＰＵを含んだものとすることもできる。
【０００４】
ところが、ジョブが未使用の計算ノードに単純に割り当てられるようになっていると、情報処理装置内の全ての計算ノードのＣＰＵが前述の過熱防止機能を有している場合に、特定の計算ノードにジョブが集中して、その計算ノードのＣＰＵの温度が高くなってしまうことがある。そのような計算ノードでは、ＣＰＵが省電力モードに移行する頻度が高くなる虞があるため、情報処理装置全体について見ると、ＣＰＵの有する過熱防止機能が原因となって、実行効率が低下する可能性がある。
【０００５】
なお、情報処理装置の筐体内では、一般的に、下側よりも上側の方が熱が籠もるため、上側に設置された計算ノードほど、そのＣＰＵが省電力モードに移行する頻度が高くなる可能性が高い。そこで、このような筐体内の温度分布を見越して、ファンや空調機などの冷却手段を適宜配置することにより、筐体内の下側より上側を強めに冷却することが考えられる。
【０００６】
しかしながら、近年の９０ｎｍ又は６５ｎｍのプロセスルール（製造プロセスとも称し、集積回路の配線の細さのこと）により製造されるＣＰＵには、電気的な構造上、熱くなりやすいものと熱くなりにくいものとがあることが知られており、単純に筐体の上側を強めに冷却するだけでは、情報処理装置の実行効率の低下が抑えきれないことが予想される。
【０００７】
このようなことから、従来の情報処理装置において、全ての計算ノードのＣＰＵを省電力モードに移行させないようにするためには、結局のところ、筐体内を必要以上に冷却するしかなかった。なお、ＣＰＵの冷却コストはＣＰＵの実装密度の高さに応じて指数的に増大する傾向があり、情報処理装置におけるＣＰＵの実装密度が高い場合には、冷却能力に少しの余裕を持たせただけで、情報処理装置全体の冷却に係る費用が急激に増大してしまう。
【０００８】
【特許文献１】特開２００７−１７９４３７号公報
【特許文献２】特開２００５−３１６７６４号公報
【特許文献３】特開２００５−１１５９５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、前述したような従来技術の有する問題点に鑑みてなされたものであり、その課題は、情報処理装置内の全ての計算ノードに含まれるＣＰＵの何れもが過熱防止機能を有していても、情報処理装置全体の実行効率があまり低下されないようにすることにある。
【課題を解決するための手段】
【００１０】
前述した課題を解決するために案出されたジョブ割当装置は、電力消費量を低減する省電力モードへ移行する過熱防止機能を有するＣＰＵを含む複数の計算ノードに対し、ジョブを割り当てるため、新規ジョブの投入があると、ジョブが割り当てられていない計算ノードそれぞれの省電力モード移行率を算出する第１の算出部、その第１の算出部が算出した省電力モード移行率が低い計算ノードを、新規ジョブの割当対象として特定する特定部、その特定部が特定した計算ノードに新規ジョブを割り当てる割当部を備えることを、特徴としている。
【００１１】
このように構成されると、新規ジョブは、ジョブが割り当てられておらず且つ省電力モード移行率が低い計算ノードに対し、割り当てられることとなる。言い換えると、省電力モードへ移行する頻度が高い計算ノードには、ジョブがあまり割り当てられなくなるため、そのような計算ノードにジョブが集中することがなく、そのような計算ノードのＣＰＵの温度が高くなる可能性が減ることとなる。
【００１２】
なお、前述したジョブ割当装置では、ジョブが割り当てられている計算ノードの中に、省電力モード移行率が高い計算ノードが存在していた場合に、その計算ノードに割り当てられているジョブが、ジョブが割り当てられておらず且つ省電力モード移行率が低い計算ノードに、移し替えられるようになっていても良い。
【００１３】
このように構成されると、新規ジョブだけでなく、既に計算ノードに割り当てられているジョブでさえも、省電力モード移行率の低い計算ノードに割り当てられることとなるため、省電力モードへ移行する頻度が高い計算ノードのＣＰＵの温度が高くなる可能性が減ることとなる。
【００１４】
なお、以上に開示したジョブ割当装置に係る動作は、ジョブ割当方法又はジョブ割当プログラムによっても実現し得る。すなわち、本発明は、前述したジョブ割当装置の各部と同等の機能を複数の手順としてコンピュータが実行するジョブ割当方法であってもよいし、それら各部と同等に機能する複数の手段としてコンピュータを動作させるジョブ割当プログラムであってもよい。
【発明の効果】
【００１５】
従って、開示のジョブ割当装置によれば、情報処理装置内の全ての計算ノードに含まれるＣＰＵの何れもが過熱防止機能を有していても、情報処理装置全体の実行効率があまり低下しなくなる。
【発明を実施するための最良の形態】
【００１６】
以下、添付図面を参照しながら、本発明を実施するための形態として、事務的な計算や研究的な計算処理を並列且つ高速に行うための分散メモリ型並列計算システムを、三例説明する。
【実施形態１】
【００１７】
＜＜構成＞＞
図１は、第１の実施形態の分散メモリ型並列計算システムの構成図である。
【００１８】
図１に示すように、第１の実施形態の分散メモリ型並列計算システムは、１６個の計算ノード１０と、１個の管理ノード２０とを、備えている。各計算ノード１０は、４×４マトリックスの形態でメッシュ接続され、互いに通信自在となっている。また、各計算ノード１０とも、管理ノード２０に通信自在に接続されている。なお、計算ノード１０の個数は、第１の実施形態の説明のために１６個としただけで、第１の実施形態の効果が１６個のときのみ得られるというものではない。実際には、計算ノードの個数が１６個より多くても少なくても良い。
【００１９】
計算ノード１０は、何れも、ジョブを実行するためのコンピュータである。なお、図１では、各計算ノード１０には、０１番乃至１６番のうちの何れかが指標として付されている。これら指標は、計算ノード１０を特定するための一意な識別情報である。一方、管理ノード２０は、操作者からのジョブ投入の受け付け、ジョブの待ち行列への登録、ジョブの計算ノード１０への割り当て、及び、各計算ノード１０でのジョブの実行結果の出力を、行うためのコンピュータである。
【００２０】
図２は、計算ノード１０の構成図である。
【００２１】
図２に示すように、計算ノード１０は、少なくとも、ネットワークインターフェースユニット１０ａ、ストレージユニット１０ｂ、ＣＰＵ［Central Processing Unit］１０ｃ
と、メモリユニット１０ｄを、備えている。
【００２２】
ネットワークインターフェースユニット１０ａは、他の計算ノード１０又は管理ノード２０のネットワークインターフェースユニットとデータの遣り取りを行うためのユニットである。このネットワークインターフェースユニット１０ａとしては、例えば、イーサネット（米国ゼロックス社の商標）ユニットがある。
【００２３】
ストレージユニット１０ｂは、各種のプログラムやデータを記録しておくためのユニットである。ＣＰＵ１０ｃは、ストレージユニット１０ｂ内のプログラムに従って処理を行うためのユニットである。メモリユニット１０ｄは、ＣＰＵ１０ｃがプログラムやデータをキャッシュしたり作業領域を展開したりするためのユニットである。
【００２４】
なお、第１の実施形態において、計算ノード１０を構成するＣＰＵ１０ｃは、何れも、消費電力抑制機能と過熱防止機能とを、備えたものとなっている。これら２個の機能は、ＣＰＵ１０ｃが３種類の動作モードの中から自主的に１種類の動作モードを選択することによって、実現される。３種類の動作モードには、通常モード、待機モード、及び、省電力モードがある。通常モードは、消費電力量を考慮せずにクロック数やパイプライン数を最大限利用する動作モードである。待機モードと省電力モードは、クロック数やパイプライン数を減らして電力消費量を最低限に抑える動作モードである。ＣＰＵ１０ｃは、動作モードの種類を特定する動作モード情報が記録される固有レジスタを内蔵しており、その固有レジスタ内の動作モード情報にて特定される種類の動作モードで動作するようになっている。従って、固有レジスタ内の動作モード情報が更新されることにより、動作モードの切り替えが実現される。
【００２５】
また、ＣＰＵ１０ｃは、入出力の有無を監視する入出力監視回路を内蔵している。固有レジスタ内の動作モード情報が通常モードを示すものである場合において、その入出力監視回路が入出力が一定期間無かったことを検出してハードウエア割り込みを発生させたときには、ＣＰＵ１０ｃは、そのハードウエア割り込みに対応する割り込みハンドラに従っ
て、固有レジスタ内の動作モード情報を、待機モードを特定する動作モード情報に書き換えるようになっている。また、固有レジスタ内の動作モード情報が待機モードを示すものである場合において、入出力監視回路が何らかの入出力を検出してハードウエア割り込みを発生させたときには、ＣＰＵ１０ｃは、そのハードウエア割り込みに対応する割り込みハンドラに従って、固有レジスタ内の動作モード情報を、通常モードを特定する動作モード情報に書き換えるようになっている。
【００２６】
また、ＣＰＵ１０ｃは、自身の温度を監視する温度監視回路を内蔵している。その温度監視回路がＣＰＵ１０ｃの温度が所定の上限値を上回ったことを検出してハードウエア割り込みを発生させると、ＣＰＵ１０ｃは、そのハードウエア割り込みに対応する割り込みハンドラに従って、固有レジスタ内の動作モード情報を、省電力モードを特定する動作モード情報に書き換えるようになっている。また、温度監視回路がＣＰＵ１０ｃの温度が所定の下限値を下回ったことを検出してハードウエア割り込みを発生させたときには、ＣＰＵ１０ｃは、そのハードウエア割り込みに対応する割り込みハンドラに従って、固有レジスタ内の動作モード情報を、通常モードを特定する動作モード情報に書き換えるようになっている。
【００２７】
計算ノード１０は、図示していないが、ストレージユニット１０ｂに、通信インターフェースプログラムを記憶している。通信インターフェースプログラムは、他の計算ノード１０又は管理ノード２０の通信インターフェースプログラムとデータの遣り取りを行うためのプログラムである。この通信インターフェースプログラムとしては、例えば、ＴＣＰ／ＩＰ［Transmission Control Protocol/Internet Protocol］スタック、及び、ＭＰＩ
［Message Passing Interface］がある。
【００２８】
また、計算ノード１０は、ストレージユニット１０ｂに、第１のイベント管理プログラム１１を記憶している。第１のイベント管理プログラム１１は、計算ノード１０において発生するイベントを監視し、イベントに応じた処理を実行するためのプログラムである。この第１のイベント管理プログラム１１に従ってＣＰＵ１０ｃが実行する第１のイベント管理処理の内容については、図６乃至図９を用いて後述する。
【００２９】
図３は、管理ノード２０の構成図である。
【００３０】
図３に示すように、管理ノード２０は、液晶ディスプレイ等の表示ユニット２０ａと、キーボードやマウス等の入力ユニット２０ｂと、これらユニット２０ａ、２０ｂが接続された本体とからなる。本体は、少なくとも、ネットワークインターフェースユニット２０ｃ、ストレージユニット２０ｄ、ＣＰＵ２０ｅ、及び、メモリユニット２０ｆを、内蔵している。本体内の各ユニット２０ｃ〜２０ｆは、計算ノード１０の各ユニット１０ａ〜１０ｄと同等の機能を発揮するユニットである。
【００３１】
管理ノード２０も、図示していないが、ストレージユニット２０ｄに、計算ノード１０の通信インターフェースプログラムとデータの遣り取りを行うための通信インターフェースプログラムを、記憶している。
【００３２】
また、管理ノード２０は、ストレージユニット２０ｄに、距離定義テーブル２１を記憶している。距離定義テーブル２１は、全ての計算ノード１０から２個の計算ノード１０を抽出する場合における全ての組み合わせについて、計算ノード１０同士の最短経路の距離数が定義されたテーブルである。ここで、距離数とは、或る計算ノード１０とその隣の計算ノード１０との間を１ホップとしたときにおいて、或る計算ノード１０から目的の計算ノード１０まで最短経路で移動するときのホップ数を言う。図１の例について言えば、指標が０６番の計算ノード１０から指標が１５番の計算ノード１０までは、１０番と１４番
の計算ノード１０を経由する経路、又は、０７番と１１番の計算ノード１０を経由する経路が、最短経路となる。このとき、ホップ数は、３となる。
【００３３】
図４は、距離定義テーブル２１を模式的に示す図である。
【００３４】
図４に示すように、距離定義テーブル２１は、１６×１６のマトリックステーブルとなっている。距離定義テーブル２１の各セルには、そのセルの位置によって特定される２個の計算ノード１０の間の最短経路の距離数が、格納されている。但し、２個１組の計算ノード１０について指標が互いに異なる場合、その組の計算ノード１０を特定するセルは、２個存在する。このため、一方のセルにその距離数が格納され、もう一方のセルは、空欄となっている。また、２個１組の計算ノード１０について互いの指標が同一である場合、その組の計算ノード１０を特定するセルも、空欄となっている。なお、図４の距離定義テーブル２１では、距離数は、ホップ数に１０を乗算した値となっている。
【００３５】
また、図３に示すように、管理ノード２０は、ストレージユニット２０ｄに、計算ノード管理テーブル２２を記憶している。計算ノード管理テーブル２２は、各計算ノード１０の実行状態と動作モード毎の累積動作時間とを記録しておくためのテーブルである。
【００３６】
図５は、計算ノード管理テーブル２２を模式的に示す図である。
【００３７】
図５に示すように、計算ノード管理テーブル２２は、分散メモリ型並列計算システム内の計算ノード１０と同数のレコードを、有している。各レコードは、「計算ノード」、「実行中」、「待機」、「通常」及び「省電力」の各フィールドを、有している。「計算ノード」フィールドは、その計算ノード１０の識別情報が記録されるフィールドである。「実行中」フィールドは、その計算ノード１０がジョブを実行しているか否かを示す実行中フラグが記録されるフィールドである。なお、実行中フラグは、「オン」の状態にあるときに、ジョブが実行中であることを示している。「待機」フィールドは、その計算ノード１０の待機モードでの累積動作時間が例えば秒数で記録されるフィールドである。「通常」フィールドは、その計算ノード１０の通常モードでの累積動作時間が例えば秒数で記録されるフィールドである。「省電力」フィールドは、その計算ノード１０の省電力モードでの累積動作時間が例えば秒数で記録されるフィールドである。
【００３８】
また、図３に示すように、管理ノード２０は、ストレージユニット２０ｄに、第２のイベント管理プログラム２３を記憶している。第２のイベント管理プログラム２３は、管理ノード２０において発生するイベントを監視し、イベントに応じた処理を実行するためのプログラムである。この第２のイベント管理プログラム２３に従ってＣＰＵ２０ｅが実行する第２のイベント管理処理の内容については、図１０乃至図１２を用いて後述する。
【００３９】
＜＜処理＞＞
各計算ノード１０では、主電源が投入されると、ＣＰＵ１０ｃが、ストレージユニット１０ｂから第１のイベント管理プログラム１１を読み出し、第１のイベント管理処理を開始するようになっている。また、管理ノード２０でも、主電源が投入されると、ＣＰＵ２０ｅが、ストレージユニット２０ｄから第２のイベント管理プログラム２３を読み出し、第２のイベント管理処理を開始するようになっている。
【００４０】
なお、第１のイベント管理処理と第２のイベント管理処理とは、各ステップが互いに連携するよう、構成されている。このため、これら第１及び第２のイベント管理処理についての説明は、並行して進める。
【００４１】
図６は、計算ノード１０側の第１のイベント管理処理の流れを示す図である。また、図
１０は、管理ノード２０側の第２のイベント管理処理の流れを示す図である。
【００４２】
＜動作モード確認＞
計算ノード１０側の第１のイベント管理処理（図６）の開始後、最初のステップＳ１０１では、ＣＰＵ１０ｃは、何らかのイベントが発生するまで待機する。そして、何らかのイベントが発生すると、ＣＰＵ１０ｃは、ステップＳ１０２へ処理を進める。
【００４３】
ステップＳ１０２では、ＣＰＵ１０ｃは、ステップＳ１０１で検出したイベントが動作モード通知イベントであるか否かを、判別する。なお、動作モード通知イベントは、図示せぬ所定のプログラム又はハードウエアが定期的（例えば１０秒ごと）に発生させる割り込みのイベントである。そして、ステップＳ１０１で検出したイベントが動作モード通知イベントであった場合、ＣＰＵ１０ｃは、ステップＳ１０２からステップＳ１０３へ処理を分岐させる。
【００４４】
ステップＳ１０３では、ＣＰＵ１０ｃは、動作モード情報送信サブルーチンを実行する。
【００４５】
図７は、動作モード通知サブルーチンの流れを示す図である。
【００４６】
動作モード通知サブルーチンの開始後、最初のステップＳ１１１において、ＣＰＵ１０ｃは、内部の固有レジスタから、動作モードの種類を特定する動作モード情報を読み出す。
【００４７】
次のステップＳ１１２では、ＣＰＵ１０ｃは、ステップＳ１１１で読み出した動作モード情報と、自己の識別情報とを、管理ノード２０へ送信する。送信後、ＣＰＵ１０ｃは、図７に係る動作モード通知サブルーチンを終了し、図６のステップＳ１０１に処理を戻して、何らかのイベントが発生するまで待機する状態に戻る。
【００４８】
これに対し、管理ノード２０側の第２のイベント管理処理（図１０）の開始後、最初のステップＳ２０１において、ＣＰＵ２０ｅは、図４に示す距離定義テーブル２１を生成する。この生成方法の説明は省略する。ＣＰＵ２０ｅは、距離定義テーブル２１を生成すると、ステップＳ２０２へ処理を進める。
【００４９】
ステップＳ２０２では、ＣＰＵ２０ｅは、何らかのイベントが発生するまで待機する。そして、何らかのイベントが発生すると、ＣＰＵ２０ｅは、ステップＳ２０３へ処理を進める。
【００５０】
ステップＳ２０３では、ＣＰＵ２０ｅは、ステップＳ２０２で検出したイベントが動作モード承知イベントであるか否かを、判別する。なお、この動作モード承知イベントは、図７のステップＳ１１２で送信された動作モード情報と識別情報とを何れかの計算ノード１０から受信することによって発生する割り込みのイベントである。そして、ステップＳ２０２で検出したイベントが動作モード承知イベントであった場合、ＣＰＵ２０ｅは、ステップＳ２０３からステップＳ２０４へ処理を分岐させる。
【００５１】
ステップＳ２０４では、ＣＰＵ２０ｅは、累積動作時間更新サブルーチンを実行する。
【００５２】
図１１は、累積動作時間更新サブルーチンの流れを示す図である。
【００５３】
累積動作時間更新サブルーチンの開始後、最初のステップＳ２１１では、ＣＰＵ２０ｅは、図５の計算ノード管理テーブル２２の中から、計算ノード１０から受信した識別情報
を持つレコードを特定する。
【００５４】
次のステップＳ２１２では、ＣＰＵ２０ｅは、ステップＳ２１１で特定したレコードの中から、計算ノード１０から受信した動作モード情報に対応するフィールドを特定する。
【００５５】
次のステップＳ２１３では、ＣＰＵ２０ｅは、ステップＳ２１２で特定したフィールドの値に所定量加算することによって、累積動作時間を更新する。ここで、所定量は、各計算ノード１０において動作モード情報送信イベントが発生する時間間隔の秒数と同じ値となっている（前述の例で言えば１０秒）。つまり、管理ノード２０は、各計算ノード１０について、動作モード情報を受信した時点からこの時間間隔だけ遡った時点までの期間、その受信した動作モード情報にて特定される種類の動作モードで動作していたと、推定することとなる。ＣＰＵ２０ｅは、このようにして累積動作時間を更新した後、図１１の累積動作時間更新サブルーチンを終了して、図１０のステップＳ２０２へ処理を戻し、何らかのイベントが発生するまで待機する状態に戻る。
【００５６】
一方、ステップＳ２０３において、ステップＳ２０２で検出したイベントが動作モード承知イベントでなかった場合、ＣＰＵ２０ｅは、ステップＳ２０５へ処理を進める。
【００５７】
＜ジョブ割当＞
ステップＳ２０５では、ＣＰＵ２０ｅは、ステップＳ２０２で検出したイベントがジョブ割当イベントであるか否かを、判別する。なお、操作者が入力ユニット２０ｂと図示せぬアプリケーションとを通じて投入したジョブは、図示せぬ待ち行列に蓄えられるようになっており、このジョブ割当イベントは、その図示せぬ待ち行列に蓄えられているジョブの中から１個のジョブが実行対象ジョブとして図示せぬ機能により取り出されることによって発生する割り込みイベントである。そして、ステップＳ２０２で検出したイベントがジョブ割当イベントであった場合、ＣＰＵ２０ｅは、ステップＳ２０５からステップＳ２０６へ処理を分岐させる。
【００５８】
ステップＳ２０６では、ＣＰＵ２０ｅは、ジョブ割当サブルーチンを実行する。
【００５９】
図１２は、ジョブ割当サブルーチンの流れを示す図である。
【００６０】
ジョブ割当サブルーチンの開始後、最初のステップＳ２２１では、ＣＰＵ２０ｅは、図５の計算ノード管理テーブル２２における「実行中」フィールドの値（実行中フラグ）を参照することにより、全ての計算ノード１０の中から、ジョブを実行していない計算ノード１０を、空き計算ノードとして抽出する。
【００６１】
次のステップＳ２２２では、ＣＰＵ２０ｅは、既にジョブを実行している計算ノード１０の中から、実行対象ジョブを実行するに際して通信対象となる計算ノード１０を、特定する。なお、計算ノード１０の特定には、一般的な方法が適用される。例えば、通信対象が静的に（毎回同じ計算ノード１０に）決まっている場合、ＣＰＵ２０ｅは、実行対象ジョブに係るソースコード又は実行オブジェクトを解析することによって、通信対象の計算ノード１０を特定する。また、例えば、通信対象が動的に（毎回任意の計算ノード１０に）決まる場合、ＣＰＵ２０ｅは、ジョブを実行していない計算ノード１０を適当に選択して実行対象ジョブを一旦実行させ、その通信パターンを観測することによって、通信対象の計算ノード１０を特定する。
【００６２】
ＣＰＵ２０ｅは、ステップＳ２２１及びＳ２２２を実行し終えると、第１の処理ループＬ１を実行する。第１の処理ループＬ１では、ＣＰＵ２０ｅは、ステップＳ２２１で抽出した空き計算ノード１０を一つずつ順に処理対象として特定するとともに、処理対象とし
て特定した１個の空き計算ノード１０に対し、ステップＳ２２３乃至Ｓ２２５からなる処理を、実行する。
【００６３】
ステップＳ２２３では、ＣＰＵ２０ｅは、処理対象の空き計算ノード１０について、省電力モード移行率Ｓiを算出する。具体的には、ＣＰＵ２０ｅは、図５の計算ノード管理
テーブル２２における処理対象計算ノード１０のレコードから、通常モードでの累積動作時間と省電力モードでの累積動作時間とを読み出し、その後、読み出した累積動作時間の総和で省電力モードの累積動作時間を除算することにより、省電力モード移行率Ｓiを算
出する。例えば、０３番の指標を持つ計算ノード１０が処理対象である場合、通常モードでの累積動作時間が４０であり、省電力モードでの累積動作時間が１０であると、図５の計算ノード管理テーブル２２から読み取れる。この場合、省電力モード移行率Ｓiは、１
０／（４０＋１０）＝０．２となる。
【００６４】
なお、このステップＳ２２３を実行するＣＰＵ２０ｅは、前述した第１の算出部に相当している。
【００６５】
次のステップＳ２２４では、ＣＰＵ２０ｅは、ステップＳ２２２で特定した通信対象の計算ノード１０と、処理対象の空き計算ノード１０との通信距離の平均値Ｄiを算出する
。具体的には、ＣＰＵ２０ｅは、図４の距離定義テーブル２１から、通信対象の計算ノード１０と、処理対象の空き計算ノード１０との距離数を読み出し、その後、読み出した距離数の総和を通信対象の計算ノード１０の個数で除算することにより、平均値Ｄiを算出
する。例えば、０２番、０５番、０６番、１４番の指標を持つ計算ノード１０が通信対象であり、０３番の指標を持つ計算ノード１０が処理対象である場合、処理対象と通信対象との距離数がそれぞれ１０、３０、２０、４０であると、図４の距離定義テーブル２１から読み取れる。この場合、平均値Ｄiは、（１０＋３０＋２０＋４０）／４＝２５となる
。
【００６６】
なお、このステップＳ２２４を実行するＣＰＵ２０ｅは、第２の算出部に相当している。
【００６７】
次のステップＳ２２５では、ＣＰＵ２０ｅは、処理対象の空き計算ノード１０について、判定値Ｖiを算出する。判定値Ｖiは、次の式（１）により算出される。
【００６８】
【数１】
0005211778.tif 000002
【００６９】
この式（１）は、（１−Ｓi）と、−Ｄiを羃指数として１．０１を羃乗したものとを、それぞれ二乗し、更に、それらの相加平均の平方根をとることを、意味している。ここで、（１−Ｓi）は、省電力モード移行率Ｓiの逆比であり、換言すると、通常モード滞在率を示している。また、１．０１の−Ｄi乗は、平均値Ｄｉに反比例する値となっている。
【００７０】
ＣＰＵ２０ｅは、ステップＳ２２１で抽出した空き計算ノード１０の全てについて、判定値Ｖiを算出し終えると、第１の処理ループＬ１から離脱し、ステップＳ２２６へ処理
を進める。
【００７１】
ステップＳ２２６では、ＣＰＵ２０ｅは、ステップＳ２２１で抽出した空き計算ノード
１０の中から、判定値Ｖiが最大である空き計算ノード１０を、特定する。つまり、仮に
平均値Ｄiが一定であるとした場合には、省電力モード移行率Ｓiが最も小さい空き計算ノード１０が特定され、仮に省電力モード移行率Ｓiが一定であるとした場合には、平均値
Ｄiが最も小さい空き計算ノード１０が特定されることとなる。
【００７２】
なお、このステップＳ２２６を実行するＣＰＵ２０ｅは、前述した特定部に相当している。
【００７３】
次のステップＳ２２７では、ＣＰＵ２０ｅは、ステップＳ２２６で特定した空き計算ノード１０に対し、実行対象ジョブを割り当てて、当該ジョブの実行を指示する。
【００７４】
なお、このステップＳ２２７を実行するＣＰＵ２０ｅは、前述した割当部に相当している。
【００７５】
次のステップＳ２２８では、ＣＰＵ２０ｅは、図５の計算ノード管理テーブル２２のレコードの中から、当該ジョブを割り当てた空き計算ノード１０のレコードを特定し、特定したレコードの「実行中」フィールド内の実行中フラグをオフからオンへ切り替える。切り替え後、ＣＰＵ２０ｅは、図１２に係るジョブ割当サブルーチンを終了し、図１０のステップＳ２０２へ処理を戻し、何らかのイベントが発生するまで待機する状態に戻る。
【００７６】
これに対し、計算ノード１０側では、図６のステップＳ１０２において、ステップＳ１０１で検出したイベントが動作モード通知イベントでなかった場合、ＣＰＵ１０ｃは、ステップＳ１０４へ処理を進める。
【００７７】
ステップＳ１０４では、ＣＰＵ１０ｃは、ステップＳ１０１で検出したイベントがジョブ実行開始イベントであるか否かを、判別する。なお、このジョブ実行開始イベントは、図１２のステップＳ２２７におけるジョブ実行の指示を受け付けることによって発生する割り込みイベントである。そして、ステップＳ１０１で検出したイベントがジョブ実行開始イベントであった場合、ＣＰＵ１０ｃは、ステップＳ１０４からステップＳ１０５へ処理を分岐させる。
【００７８】
ステップＳ１０５では、ＣＰＵ１０ｃは、ジョブ実行開始サブルーチンを実行する。
【００７９】
図８は、ジョブ実行開始サブルーチンの流れを示す図である。
【００８０】
ジョブ実行開始サブルーチンの開始後、最初のステップＳ１２１では、ＣＰＵ１０ｃは、ジョブ実行に必要なソフトウエア資源を管理ノード２０から取得するとともに、ジョブ実行に必要なハードウエア資源を確保する。ここで、ソフトウエア資源には、ジョブを実行するためのプログラム（ソースコード又は実行オブジェクト）、入出力ファイル、通信設定情報が含まれ、ハードウエア資源には、ジョブ実行において占有すべきレジスタ及びメモリ空間が含まれる。なお、このステップＳ１２１において、ＣＰＵ１０ｃは、ソフトウエア資源そのものではなく、そのソフトウエア資源が存在する場所を特定する情報を、管理ノード２０から取得しても良い。この場合、ソフトウエア資源が存在する場所は、管理ノード２０のストレージユニット２０ｄ、計算ノード１０のストレージユニット１０ｂ、又は、図示せぬネットワークを介して管理ノード２０に接続されているストレージデバイスとなる。
【００８１】
次のステップＳ１２２では、ＣＰＵ１０ｃは、ステップＳ１２１で取得した資源に基づいてジョブの実行を開始する。開始後、ＣＰＵ１０ｃは、図８に係るジョブ実行サブルーチンを終了し、図６のステップＳ１０１に処理を戻して、何らかのイベントが発生するま
で待機する状態に戻る。
【００８２】
一方、ステップＳ１０４において、ステップＳ１０１で検出したイベントがジョブ実行開始イベントでなかった場合、ＣＰＵ１０ｃは、ステップＳ１０６へ処理を進める。
【００８３】
＜ジョブ終了＞
ステップＳ１０６では、ＣＰＵ１０ｃは、ステップＳ１０１で検出したイベントがジョブ実行終了イベントであるか否かを、判別する。なお、このジョブ実行終了イベントは、ＣＰＵ１０ｃがこの図６に係るプログラムと並行して実行していたジョブの実行が終了することによって発生するイベントである。そして、ステップＳ１０１で検出したイベントがジョブ実行終了イベントであった場合、ＣＰＵ１０ｃは、ステップＳ１０６からステップＳ１０７へ処理を分岐させる。
【００８４】
ステップＳ１０７では、ＣＰＵ１０ｃは、ジョブ実行終了サブルーチンを実行する。
【００８５】
図９は、ジョブ実行終了サブルーチンの流れを示す図である。
【００８６】
ジョブ実行終了サブルーチンの開始後、最初のステップＳ１３１では、ＣＰＵ１０ｃは、ジョブを実行するに際して占有していたハードウエア資源を、解放する。
【００８７】
次のステップＳ１３２では、ＣＰＵ１０ｃは、ジョブの実行が終了した旨を示すジョブ終了通知情報と、自己の識別情報とを、管理ノード２０へ送信する。送信後、ＣＰＵ１０ｃは、図９に係るジョブ終了サブルーチンを終了し、図６のステップＳ１０１に処理を戻して、何らかのイベントが発生するまで待機する状態に戻る。
【００８８】
これに対し、管理ノード２０側では、図１０のステップＳ２０５において、ステップＳ２０２で検出したイベントがジョブ割当イベントでなかった場合、ＣＰＵ２０ｅは、ステップＳ２０７へ処理を進める。
【００８９】
ステップＳ２０７では、ＣＰＵ２０ｅは、ステップＳ２０２で検出したイベントがジョブ終了承知イベントであるか否かを、判別する。なお、ジョブ終了承知イベントは、図９のステップＳ１３２で送信されたジョブ終了通知情報と識別情報とを何れかの計算ノード１０から受信することによって発生する割り込みイベントである。そして、ステップＳ２０２で検出したイベントがジョブ終了承知イベントであった場合、ＣＰＵ２０ｅは、ステップＳ２０７からステップＳ２０８へ処理を分岐させる。
【００９０】
ステップＳ２０８では、ＣＰＵ２０ｅは、図５の計算ノード管理テーブル２２のレコードの中から、受信した識別情報を含むレコードを特定し、特定したレコードの「実行中」フィールド内の実行中フラグをオンからオフへ切り替える。切り替え後、ＣＰＵ２０ｅは、ステップＳ２０２へ処理を戻し、何らかのイベントが発生するまで待機する状態に戻る。
【００９１】
一方、ステップＳ２０７において、ステップＳ２０２で検出したイベントがジョブ終了承知イベントでなかった場合、ＣＰＵ２０ｅは、ステップＳ２１１へ処理を進める。
【００９２】
＜他のイベント＞
ステップＳ２１１では、ＣＰＵ２０ｅは、ステップＳ２０２で検出したイベントに応じた処理を実行する。実行後、ＣＰＵ２０ｅは、ステップＳ２０２へ処理を戻し、何らかのイベントが発生するまで待機する状態に戻る。
【００９３】
これに対し、計算ノード１０側では、図６のステップＳ１０６において、ステップＳ１０１で検出したイベントがジョブ実行終了イベントでなかった場合、ＣＰＵ１０ｃは、ステップＳ１１２へ処理を進める。
【００９４】
ステップＳ１１２では、ＣＰＵ１０ｃは、ステップＳ１０１で検出したイベントに応じた処理を実行する。実行後、ＣＰＵ１０ｃは、ステップＳ１０１に処理を戻し、何らかのイベントが発生するまで待機する状態に戻る。
【００９５】
＜＜動作＞＞
第１の実施形態の管理ノード２０において、図示せぬ待ち行列に蓄積されているジョブの中から、１個のジョブが実行対象として取り出されると、そのジョブの割り当て先が探し出される（ステップＳ２０６、図１１）。
【００９６】
管理ノード２０は、まず、ジョブを実行していない空き計算ノード１０を抽出するとともに、実行対象のジョブを実行するに際して通信対象となる計算ノード１０を特定する（ステップＳ２１２）。続いて、管理ノード２０は、その時点でジョブを実行していない全ての計算ノード１０について、省電力モード移行率Ｓiと通信対象との距離数の平均値Ｄiとに基づいて判定値Ｖiを算出し（第１の処理ループＬ１）、判定値Ｖiが最大である空き計算ノード１０を、実行対象のジョブの割り当て先として特定する（ステップＳ２１６）。
【００９７】
その判定値Ｖiは、式（１）から明らかなように、省電力モード移行率Ｓiが小さくなればなるほど、及び、通信対象計算ノード１０との距離の平均値Ｄiが小さくなればなるほ
ど、大きくなるようになっている。従って、ジョブの割り当て先として、判定値Ｖiが最
大である空き計算ノード１０を選択することは、省電力モードに移行する頻度が低く且つ通信対象に近い計算ノード１０を選択することを、意味している。
【００９８】
＜＜効果＞＞
このように、第１の実施形態によれば、新規ジョブは、省電力モードへ移行する頻度が高い計算ノード１０には、殆ど割り当てられず、省電力モードへ移行しにくい計算ノード１０に割り当てられる。従って、省電力モードへ頻繁に移行する実績のある計算ノード１０にジョブが集中することがなく、このような計算ノード１０のＣＰＵ１０ｃの温度が高くなる可能性が減ることとなる。この結果、分散メモリ型並列計算システム全体について見ると、実行効率の低下が殆ど生じないこととなる。
【００９９】
また、第１の実施形態によれば、新規ジョブは、省電力モード移行率の低い空き計算ノード１０のうち、通信対象から近い計算ノード１０に、割り当てられる。従って、通信対象との距離とは無関係に計算ノード１０を選択することに比べて、ジョブの実行効率が向上することとなる。
【実施形態２】
【０１００】
第２の実施形態は、第１の実施形態とは、３種類の動作モードそれぞれの累積動作時間の更新の方法が、相違している。
【０１０１】
＜＜構成及び処理＞＞
具体的には、前述したように、第１の実施形態では、ＣＰＵ１０ｃは、入出力監視回路又は温度監視回路がハードウエア割り込みを発生させると、そのハードウエア割り込みに対応する割り込みハンドラに従って、固有レジスタ内の動作モード情報を更新するものとなっている。第２の実施形態では、その割り込みハンドラによる処理内容が、第１の実施形態とは、若干異なっている。
【０１０２】
図１３は、第２の実施形態の計算ノード１０のＣＰＵ１０ｃが実行する割り込みハンドラの流れを示す図である。
【０１０３】
割り込みハンドラの起動後、最初のステップＳ３０１では、ＣＰＵ１０ｃは、固有レジスタ内の動作モード情報を更新する。
【０１０４】
次のステップＳ３０２では、ＣＰＵ１０ｃは、この時点の時刻を示す時刻情報を、固有レジスタ又はメモリユニット１０ｄに記録する。記録後、ＣＰＵ１０ｃは、割り込みハンドラに係る処理を終了する。
【０１０５】
このように、第２の実施形態のＣＰＵ１０ｃの割り込みハンドラは、固有レジスタ内の動作モード情報の更新だけでなく、更新時点の時刻情報も記録するようになっている。
【０１０６】
また、第２の実施形態は、第１の実施形態とは、図６のステップＳ１０３においてＣＰＵ１０ｃに実行される動作モード通知サブルーチンの内容が、相違している。
【０１０７】
図１４は、第２の実施形態における動作モード通知サブルーチンの流れを示す図である。
【０１０８】
動作モード通知サブルーチンの開始後、最初のステップＳ４０１において、ＣＰＵ１０ｃは、内部の固有レジスタから、動作モードの種類を特定する動作モード情報を読み出す。
【０１０９】
次のステップＳ４０２では、ＣＰＵ１０ｃは、固有レジスタ又はメモリユニット１０ｄから、固有レジスタ内の動作モード情報の更新時点の時刻を示す時刻情報を、読み出す。
【０１１０】
次のステップＳ４０３では、ＣＰＵ１０ｃは、ステップＳ４０１で読み出した動作モード情報と、ステップＳ４０２で読み出した時刻情報と、自己の識別情報とを、管理ノード２０へ送信する。送信後、ＣＰＵ１０ｃは、図１４に係る動作モード通知サブルーチンを終了し、図６のステップＳ１０１に処理を戻して、何らかのイベントが発生するまで待機する状態に戻る。
【０１１１】
このように、第２の実施形態の動作モード通知サブルーチンによれば、管理ノード２０には、動作モード情報と識別情報だけでなく、時刻情報も送られることとなる。
【０１１２】
また、第２の実施形態は、第１の実施形態とは、図３の計算ノード管理テーブル２２の内容と、図１０のステップＳ２０４の内容とが、相違している。
【０１１３】
図１５は、第２の実施形態における計算ノード管理テーブル２４を模式的に示す図である。
【０１１４】
図１５に示すように、第２の実施形態における計算ノード管理テーブル２４の各レコードは、「計算ノード」、「実行中」、「待機」、「通常」、「省電力」及び「更新時刻」のフィールドを、有している。図１５と図５とを比較して明らかなように、第２の実施形態では、「更新時刻」フィールドが、計算ノード管理テーブル２４に追加されている。その「更新時刻」フィールドは、各計算ノード１０から送信される時刻情報を格納しておくためのフィールドである。
【０１１５】
図１６は、累積動作時間更新サブルーチンの流れを示す図である。
【０１１６】
累積動作時間更新サブルーチンの開始後、最初のステップＳ５０１では、ＣＰＵ２０ｅは、図１５の計算ノード管理テーブル２４の中から、計算ノード１０から受信した識別情報を持つレコードを特定する。
【０１１７】
次のステップＳ５０２では、ＣＰＵ２０ｅは、ステップＳ５０１で特定したレコードの「更新時刻」フィールドの値（時刻情報）と、計算ノード１０から受信した時刻情報とに基づいて、経過時間を算出する。
【０１１８】
次のステップＳ５０３では、ＣＰＵ２０ｅは、ステップＳ５０１で特定したレコードの中から、計算ノード１０から受信した動作モード情報に対応するフィールドを特定する。
【０１１９】
次のステップＳ５０４では、ＣＰＵ２０ｅは、ステップＳ５０３で特定したフィールドの値に、ステップＳ５０２で算出した経過時間を加算する。加算後、ＣＰＵ２０ｅは、図１６に係る累積動作時間更新サブルーチンを終了して、図１０のステップＳ２０２へ処理を戻し、何らかのイベントが発生するまで待機する状態に戻る。
【０１２０】
＜＜作用及び効果＞＞
このように、第２の実施形態によれば、管理ノード２０には、各計算ノード１０から、動作モード情報だけでなく、動作モードの切り替え時刻をも、通知される。このため、管理ノード２０は、各計算ノード１０における動作モードごとの累積動作時間を、第１の実施形態に比べて正確に記録することができる。
【実施形態３】
【０１２１】
第３の実施形態は、既にジョブを割り当てた計算ノード１０に対してジョブの割り当ての適否を再検討して移し替えを行う点で、第１及び第２の実施形態とは相違する。以下、相違部分について、詳細に説明する。
【０１２２】
＜＜構成及び処理＞＞
図１７及び図１８は、第３の実施形態の第１のイベント管理プログラム１２に従ってＣＰＵ１０ｃが実行する第１のイベント管理処理の流れを示す図である。また、図２１及び図２２は、第３の実施形態の第２のイベント管理プログラム２５に従ってＣＰＵ２０ｅが実行する第２のイベント管理処理の流れを示す図である。
【０１２３】
なお、第１の実施形態と同様に、第３の実施形態においても、第１のイベント管理処理と第２のイベント管理処理とは、各ステップが互いに連携するよう、構成されている。このため、これら第１及び第２のイベント管理処理についての説明は、並行して進める。
【０１２４】
図１７及び図１８と図６とを比較して明らかなように、第３の実施形態の第１のイベント管理プログラム１２には、ジョブ凍結及びジョブ解凍に係る機能として、ステップＳ１０８乃至Ｓ１１１が、追加されており、それ以外のステップＳ１０１乃至Ｓ１０７とＳ１１２とについては、第１及び第２の実施形態の第１のイベント管理プログラム１１と同じである。従って、図１７及び図１８のステップＳ１０１乃至Ｓ１０７とＳ１１２とについては説明を省略する。
【０１２５】
また、図２１及び図２２と図１０とを比較して明らかなように、第３の実施形態の第２のイベント管理プログラム２５には、ジョブ移替に係る機能として、ステップＳ２０９及びＳ２１０が、追加されており、それ以外のステップＳ２０１乃至Ｓ２０８とＳ２１１とについては、第１及び第２の実施形態の第２のと同じである。従って、図２１のステップＳ２０１乃至Ｓ２０８とＳ２１１とについては説明を省略する。
【０１２６】
＜ジョブ移替＞
管理ノード２０側では、図２１のステップＳ２０７において、ステップＳ２０１で検出したイベントがジョブ終了承知イベントでなかった場合、ＣＰＵ１０ｃは、図２２のステップＳ２０９へ処理を進める。
【０１２７】
ステップＳ２０９では、ＣＰＵ１０ｃは、図２１のステップＳ１０１で検出したイベントがジョブ移替イベントであるか否かを、判別する。なお、このジョブ移替イベントは、図示せぬ所定のプログラム又はハードウエアが定期的（例えば１０秒ごと）に発生させる割り込みのイベントである。そして、ステップＳ１０１で検出したイベントがジョブ移替イベントであった場合、ＣＰＵ２０ｅは、ステップＳ２０９からステップＳ２１０へ処理を分岐させる。
【０１２８】
ステップＳ２１０では、ＣＰＵ２０ｅは、ジョブ移替サブルーチンを実行する。
【０１２９】
図２３及び図２４は、ジョブ移替サブルーチンの流れを示す図である。
【０１３０】
ジョブ移替サブルーチンの開始後、最初のステップＳ６０１では、ＣＰＵ２０ｅは、図５の計算ノード管理テーブル２２（又は、図１５の計算ノード管理テーブル２４）における「実行中」フィールドの値（実行中フラグ）を参照することにより、全ての計算ノード１０の中から、ジョブを実行している計算ノード１０を、実行中計算ノードとして抽出する。
【０１３１】
ＣＰＵ２０ｅは、ステップＳ６０１を実行し終えると、第２の処理ループＬ２を実行する。第２の処理ループＬ２では、ＣＰＵ２０ｅは、ステップＳ６０１で抽出した実行中計算ノード１０を一つずつ順に処理対象として特定するとともに、処理対象として特定した１個の実行中計算ノード１０に対し、ステップＳ６０２乃至Ｓ６０９からなる処理を、実行する。
【０１３２】
ステップＳ６０２では、ＣＰＵ２０ｅは、処理対象の実行中計算ノード１０について、省電力モード移行率Ｓiを算出する。なお、省電力モード移行率Ｓiの算出方法については、先に説明したので、ここでは説明を省略する。
【０１３３】
なお、このステップＳ６０２を実行するＣＰＵ２０ｅは、第３の算出部に相当している。
【０１３４】
次のステップＳ６０３では、ＣＰＵ２０ｅは、ステップＳ６０２で算出した省電力モード移行率Ｓiが所定の上限値を超過しているか否かを、判別する。そして、ステップＳ６
０２で算出した省電力モード移行率Ｓiが所定の上限値を超過していなかった場合、ＣＰ
Ｕ２０ｅは、ステップＳ６０３から処理を分岐させ、第２の処理ループＬ２におけるこの処理対象の実行中計算ノード１０の回を終了する。一方、ステップＳ６０２で算出した省電力モード移行率Ｓiが所定の上限値を超過していた場合、ＣＰＵ２０ｅは、図２４のス
テップＳ６０４へ処理を進める。
【０１３５】
ステップＳ６０４では、ＣＰＵ２０ｅは、処理対象の実行中計算ノード１０に対し、ジョブの中断を指示し、その後、ステップＳ６０５へ処理を進める。
【０１３６】
これに対し、計算ノード１０側では、図１７のステップＳ１０６において、ステップＳ１０１で検出したイベントがジョブ実行終了イベントでなかった場合、ＣＰＵ１０ｃは、図１８のステップＳ１０８へ処理を進める。
【０１３７】
ステップＳ１０８では、ＣＰＵ１０ｃは、ステップＳ１０１で検出したイベントがジョブ凍結イベントであるか否かを、判別する。なお、このジョブ凍結イベントは、管理ノード２０からジョブの中断の指示を受信することによって発生する割り込みイベントである。そして、ステップＳ１０１で検出したイベントがジョブ凍結イベントであった場合、ＣＰＵ１０ｃは、ステップＳ１０８からステップＳ１０９へ処理を分岐させる。
【０１３８】
ステップＳ１０９では、ＣＰＵ１０ｃは、ジョブ凍結サブルーチンを実行する。
【０１３９】
図１９は、ジョブ凍結サブルーチンの流れを示す図である。
【０１４０】
ジョブ凍結サブルーチンの開始後、最初のステップＳ１４１では、ＣＰＵ１０ｃは、ジョブを中断する。
【０１４１】
次のステップＳ１４２では、ＣＰＵ１０ｃは、ステップＳ１４１で中断したジョブを再開する際に使用するソフトウエア資源を生成し、そのジョブで使用していたハードウエア資源を解放する。前述したように、ソフトウエア資源には、ジョブを実行するためのプログラム（ソースコード又は実行オブジェクト）、入出力ファイル、通信設定情報が含まれ、ハードウエア資源には、ジョブ実行において占有すべきレジスタ及びメモリ空間が含まれる。
【０１４２】
次のステップＳ１４３では、ＣＰＵ１０ｃは、ステップＳ１４２で生成したソフトウエア資源を管理ノード２０に送信する。その後、ＣＰＵ１０ｃは、図１９に係るジョブ凍結サブルーチンを終了し、図１７のステップＳ１０１に処理を戻して、何らかのイベントが発生するまで待機する状態に戻る。
【０１４３】
これに対し、管理ノード２０側では、図２４のステップＳ６０５において、ステップＳ６０４でジョブの中断を指示した計算ノード１０から、そのジョブに係るソフトウエア資源を受信するまで、待機する。そして、その計算ノード１０からソフトウエア資源を受信すると、ＣＰＵ２０ｅは、ステップＳ６０６へ処理を進める。
【０１４４】
ステップＳ６０６では、ＣＰＵ２０ｅは、図５の計算ノード管理テーブル２２（又は、図１５の計算ノード管理テーブル２４）のレコードの中から、処理対象の実行中計算ノード１０のレコードを特定し、特定したレコードの「実行中」フィールド内の実行中フラグをオンからオフへ切り替える。切り替え後、ＣＰＵ２０ｅは、ステップＳ６０７へ処理を進める。
【０１４５】
ステップＳ６０７では、ＣＰＵ２０ｅは、図５の計算ノード管理テーブル２２（又は、図１５の計算ノード管理テーブル２４）における「実行中」フィールドの値（実行中フラグ）を参照することにより、全ての計算ノード１０の中から、ジョブを実行していない計算ノード１０を、空き計算ノードとして抽出する。続いて、ＣＰＵ２０ｅは、空き計算ノード１０のそれぞれについて省電力モード移行率Ｓiを算出し、その後、省電力モード移
行率Ｓiの最も低い空き計算ノード１０を特定する。
【０１４６】
次のステップＳ６０８では、ＣＰＵ２０ｅは、ステップＳ６０７で特定した空き計算ノード１０に対し、ステップＳ６０４により中断されたジョブの再開を、指示する。従って、中断されたジョブは、別の計算ノード１０で再開されることとなる。
【０１４７】
なお、ステップＳ６０３乃至Ｓ６０８を実行するＣＰＵ２０ｅは、移替部に相当している。
【０１４８】
次のステップＳ６０９では、ＣＰＵ２０ｅは、図５の計算ノード管理テーブル２２（又は図１５の計算ノード管理テーブル２４）のレコードの中から、ステップＳ６０８でジョブの再開を指示した計算ノード１０のレコードを特定し、特定したレコードの「実行中」フィールド内の実行中フラグをオフからオンへ切り替える。切り替え後、ＣＰＵ２０ｅは、第２の処理ループＬ２におけるこの処理対象の実行中計算ノード１０の回を終了する。
【０１４９】
ＣＰＵ２０ｅは、ステップＳ６０１で抽出した実行中計算ノード１０の全てについて、ステップＳ６０２乃至Ｓ６０９からなる処理を実行し終えると、第２の処理ループＬ２から離脱し、図２３及び図２４に係る凍結ジョブ特定サブルーチンを終了し、図２１のステップＳ２０２へ処理を戻して、何らかのイベントが発生するまで待機する状態に戻る。
【０１５０】
なお、図２２のステップＳ２０９において、図２１のステップＳ２０２で検出したイベントがジョブ移替イベントでなかった場合、ＣＰＵ２０ｅは、ステップＳ２１１へ処理を進め、ステップＳ２０２で検出したイベントに対応する処理を実行してから、図２１のステップＳ２０２へ処理を戻し、何らかのイベントが発生するまで待機する状態に戻る。
【０１５１】
これに対し、計算ノード１０側では、図１８のステップＳ１０８において、ステップＳ１０１で検出したイベントがジョブ凍結イベントでなかった場合、ＣＰＵ１０ｃは、ステップＳ１１０へ処理を進める。
【０１５２】
ステップＳ１１０では、ＣＰＵ１０ｃは、ステップＳ１０１で検出したイベントがジョブ解凍イベントであるか否かを、判別する。なお、このジョブ解凍イベントは、管理ノード２０からジョブの再開の指示を受信することによって発生する割り込みイベントである。そして、ステップＳ１０１で検出したイベントがジョブ解凍イベントであった場合、ＣＰＵ１０ｃは、ステップＳ１１０からステップＳ１１１へ処理を分岐させる。
【０１５３】
ステップＳ１１１では、ＣＰＵ１０ｃは、ジョブ解凍サブルーチンを実行する。
【０１５４】
図２０は、ジョブ解凍サブルーチンの流れを示す図である。
【０１５５】
ジョブ解凍サブルーチンの開始後、最初のステップＳ１５１では、ＣＰＵ１０ｃは、ジョブの再開に必要なソフトウエア資源を管理ノード２０から取得するとともに、ジョブの再開に必要なハードウエア資源を確保する。
【０１５６】
次のステップＳ１５２では、ＣＰＵ１０ｃは、ステップＳ１５１で取得した資源に基づいてジョブを開始する。開始後、ＣＰＵ１０ｃは、図２０に係るジョブ再開サブルーチンを終了し、図１７のステップＳ１０１に処理を戻して、何らかのイベントが発生するまで待機する状態に戻る。
【０１５７】
なお、図１８のステップＳ１１０において、図１７のステップＳ１０１で検出したイベントがジョブ解凍イベントでなかった場合、ＣＰＵ１０ｃは、ステップＳ１１２へ処理を進め、ステップＳ１０１で検出したイベントに対応する処理を実行してから、図１７のステップＳ１０１へ処理を戻し、何らかのイベントが発生するまで待機する状態に戻る。
【０１５８】
＜＜作用及び効果＞＞
このように、第３の実施形態によれば、新規ジョブが、省電力モード移行率の低い計算ノードに割り当てられるだけでなく、省電力モード移行率の高い計算ノードに既に割り当てられているジョブでさえも、省電力モード移行率の低い計算ノードに割り当てられることとなる。このため、省電力モードへ移行する頻度が高い計算ノードのＣＰＵの温度が高
くなる可能性が、更に減ることとなる。この結果、分散メモリ型並列計算システム全体について見ると、実行効率の低下が殆ど生じないこととなる。
【０１５９】
＜ユニットについて＞
以上に説明した第１乃至第３の実施形態において、計算ノード１０内のネットワークインターフェースユニット１０ａ、ストレージユニット１０ｂ、ＣＰＵ１０ｃ、及び、メモリユニット１０ｄ、並びに、管理ノード２０内の表示ユニット２０ａ、入力ユニット２０ｂ、ネットワークインターフェースユニット２０ｃ、ストレージユニット２０ｄ、ＣＰＵ２０ｅ、及び、メモリユニット２０ｆは、何れも、ソフトウエア要素とハードウエア要素とから構成されていても良いし、ハードウエア要素のみで構成されていても良い。
【０１６０】
ソフトウエア要素としては、インターフェースプログラム、ドライバプログラム、テーブル、及び、データ、並びに、これらのうちの幾つかを組み合わせたものが、例示できる。これらは、後述のコンピュータ可読媒体に格納されたものであっても良いし、ＲＯＭ［Read Only Memory］及びＬＳＩ［Large Scale Integration］などの記憶装置に固定的に
組み込まれたファームウエアであっても良い。
【０１６１】
また、ハードウエア要素としては、ＦＰＧＡ［Field Programmable Gate Array］、Ａ
ＳＩＣ［Application Specific Integrated Circuit］、ゲートアレイ、論理ゲートの組
み合わせ、信号処理回路、アナログ回路、及び、その他の回路が、例示できる。このうち、論理ゲートには、ＡＮＤ、ＯＲ、ＮＯＴ、ＮＡＮＤ、ＮＯＲ、フリップフロップ、カウンタ回路などが、含まれていてもよい。また、信号処理回路には、信号値の加算、乗算、除算（反転）、積和演算、微分、積分などを実行する回路要素が、含まれていてもよい。また、アナログ回路には、増幅、加算、乗算、微分、積分などを実行する回路要素が、含まれていてもよい。
【０１６２】
なお、前述した計算ノード１０内の各ユニット１０ａ〜１０ｄと、前述した管理ノード２０内の各ユニット２０ａ〜２０ｆとをそれぞれ構成する要素は、以上に例示したものに限定されず、これらと等価な他の要素であっても良い。
【０１６３】
＜ソフトウエア及びプログラムについて＞
以上に説明した第１乃至第３の実施形態において、計算ノード１０内の第１のイベント管理プログラム１１、１２と、管理ノード２０内の距離定義テーブル２１、計算ノード管理テーブル２２、２４、及び、第２のイベント管理プログラム２３、２５と、前述したソフトウエア要素とは、何れも、ソフトウエア部品、手続き型言語による部品、オブジェクト指向ソフトウエア部品、クラス部品、タスクとして管理される部品、プロセスとして管理される部品、関数、属性、プロシジャ（手続き）、サブルーチン（ソフトウエアルーチン）、プログラムコードの断片又は部分、ドライバ、ファームウエア、マイクロコード、コード、コードセグメント、エクストラセグメント、スタックセグメント、プログラム領域、データ領域、データ、データベース、データ構造、フィールド、レコード、テーブル、マトリックステーブル、配列、変数、パラメータなどの要素を、含んでいても良い。
【０１６４】
また、計算ノード１０内の第１のイベント管理プログラム１１、１２と、管理ノード２０内の距離定義テーブル２１、計算ノード管理テーブル２２、２４、及び、第２のイベント管理プログラム２３、２５と、前述したソフトウエア要素とは、何れも、Ｃ言語、Ｃ＋＋、Ｊａｖａ（米国サンマイクロシステムズ社の商標）、ビジュアルベーシック（米国マイクロソフト社の商標）、Ｐｅｒｌ、Ｒｕｂｙ、その他の多くのプログラミング言語により記述されたものであっても良い。
【０１６５】
また、計算ノード１０内の第１のイベント管理プログラム１１、１２と、管理ノード２
０内の距離定義テーブル２１、計算ノード管理テーブル２２、２４、及び、第２のイベント管理プログラム２３、２５と、前述したソフトウエア要素とに含まれる命令、コード及びデータは、有線ネットワークカード及び有線ネットワークを通じて、又は、無線カード及び無線ネットワークを通じて、コンピュータ、又は、機械若しくは装置に組み込まれたコンピュータに、送信又はローディングされても良い。
【０１６６】
前述した送信又はローディングにおいて、データ信号は、例えば搬送波に組み込まれることにより（embodied as carrier waves）、有線ネットワーク又は無線ネットワーク上
を移動する。但し、データ信号は、前述した搬送波に依らず、いわゆるベースバンド信号のまま転送されても良い。このような搬送波は、電気的、磁気的又は電磁的な形態、光、音響、又は、その他の形態で、送信される。
【０１６７】
ここで、有線ネットワーク又は無線ネットワークは、例えば、電話回線、ネットワーク回線、ケーブル（光ケーブル、金属ケーブルを含む）、無線リンク、携帯電話アクセス回線、ＰＨＳ［Personal Handyphone System］網、無線ＬＡＮ［Local Area Network］、Bluetooth（ブルートゥース特別利益団体の商標）、車両搭載型無線通信（ＤＳＲＣ［Dedicated Short Range Communication］を含む）、及び、これらのうちの何れかからなるネットワークである。そして、このデータ信号は、命令、コード及びデータを含む情報を、ネットワーク上のノード又は要素に、伝達する。
【０１６８】
なお、計算ノード１０内の第１のイベント管理プログラム１１、１２と、管理ノード２０内の距離定義テーブル２１、計算ノード管理テーブル２２、２４、及び、第２のイベント管理プログラム２３、２５と、前述したソフトウエア要素とを構成する要素は、以上に例示したものに限定されず、これらと等価な他の要素であっても良い。
【０１６９】
＜コンピュータ可読媒体について＞
以上に説明した第１乃至第３の実施形態における何れかの機能は、コード化されてコンピュータ可読媒体の記憶領域に格納されていても良い。この場合、その機能を実現するためのプログラムが、このコンピュータ可読媒体を介して、コンピュータ、又は、機械若しくは装置に組み込まれたコンピュータに、提供され得る。コンピュータ、又は、機械若しくは装置に組み込まれたコンピュータは、コンピュータ可読媒体の記憶領域からプログラムを読み出してそのプログラムを実行することによって、その機能を実現することができる。
【０１７０】
ここで、コンピュータ可読媒体とは、電気的、磁気的、光学的、化学的、物理的又は機械的な作用によって、プログラム及びデータ等の情報を蓄積するとともに、コンピュータに読み取られ得る状態でその情報を保持する記録媒体をいう。
【０１７１】
電気的又は磁気的な作用としては、ヒューズによって構成されるＲＯＭ［Read Only Memory］上の素子へのデータの書き込みが、例示できる。磁気的又は物理的な作用としては、紙媒体上の潜像へのトナーの現像が、例示できる。なお、紙媒体に記録された情報は、例えば、光学的に読み取ることができる。光学的且つ化学的な作用としては、基盤上での薄膜形成又は凹凸形成が、例示できる。なお、凹凸の形態で記録された情報は、例えば、光学的に読み取ることができる。化学的な作用としては、基板上での酸化還元反応、又は、半導体基板上での酸化膜形成、窒化膜形成、若しくは、フォトレジスト現像が、例示できる。物理的又は機械的な作用としては、エンボスカードへの凹凸形成、又は、紙媒体へのパンチの穿孔が、例示できる。
【０１７２】
また、コンピュータ可読媒体の中には、コンピュータ、又は、機械若しくは装置に組み込まれたコンピュータに着脱自在に装着できるものがある。着脱自在なコンピュータ可読
媒体としては、ＤＶＤ［Digital Versatile Disk］（ＤＶＤ−Ｒ［Recordable］、ＤＶＤ−ＲＯＭ［Read Only Memory］、ＤＶＤ−ＲＡＭ［Random Access Memory］、ＨＤ［High
Definition］ＤＶＤを含む）、＋Ｒ／＋ＷＲ、ＢＤ［Blu-ray Disk］（ＢＤ−Ｒ、ＢＤ
−ＲＥ［Rewritable］、ＢＤ−ＲＯＭを含む）、ＣＤ［Compact Disk］（ＣＤ−Ｒ、ＣＤ−ＲＷ、ＣＤ−ＲＯＭを含む）、ＭＯ［Magneto Optical］ディスク、その他の光ディス
ク媒体、フレキシブルディスク（フロッピー（日立製作所社の商標）ディスクを含む）、その他の磁気ディスク媒体、メモリーカード（コンパクトフラッシュ（米国サンディスク社の商標）、スマートメディア（東芝社の商標）、ＳＤカード（米国サンディスク社と、松下電器産業社と、東芝社の商標）、メモリースティック（ソニー社の商標）、ＭＭＣ（米国ジーメンス社と、米国サンディスク社の商標）など）、磁気テープ、及び、その他のテープ媒体、並びに、これらのうちの何れかを内蔵した記憶装置が、例示できる。記憶装置には、ＤＲＡＭ［Dynamic Random Access Memory］又はＳＲＡＭ［Static Random Access Memory］がさらに内蔵されたものもある。
【０１７３】
また、コンピュータ可読媒体の中には、コンピュータ、又は、機械若しくは装置に組み込まれたコンピュータに固定的に装着されたものがある。この種のコンピュータ可読媒体としては、ハードディスク、ＤＲＡＭ、ＳＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ［Electronically Erasable and Programmable Read Only Memory］、フラッシュメモリなどが、例示で
きる。
【０１７４】
さらに、コンピュータ可読媒体は、ネットワークを通じて結合されたコンピュータネットワークシステムに内包されるものであっても良い。そのようなシステムに格納された命令、コード及びデータを含む情報は、分散処理環境で実行される。
【０１７５】
前述した第１乃至第３の実施形態に関し、更に、以下の付記を開示する。
【０１７６】
（付記１）
電力消費量を低減する省電力モードへ移行する機能を有するＣＰＵを含む複数の計算ノードに対し、ジョブを割り当てるためのジョブ割当装置であって、
新規ジョブの投入があると、ジョブが割り当てられていない計算ノードそれぞれの省電力モード移行率を算出する第１の算出部、
前記第１の算出部が算出した省電力モード移行率が低い計算ノードを、新規ジョブの割当対象として特定する特定部、及び、
前記特定部が特定した計算ノードに新規ジョブを割り当てる割当部
を備えることを特徴とするジョブ割当装置。
【０１７７】
（付記２）
新規ジョブの投入があると、ジョブが割り当てられていない計算ノードそれぞれについて、新規ジョブにおける通信対象となる計算ノードとの通信距離の平均を、平均通信距離として算出する第２の算出部
を更に備え、
前記特定部は、前記第１の算出部が算出した省電力モード移行率が低く且つ前記第２の算出部が算出した平均通信距離が少ない計算ノードを、新規ジョブの割当対象として特定する
ことを特徴とする付記１記載のジョブ割当装置。
【０１７８】
（付記３）
前記特定部は、前記省電力モード移行率を１から減算して得られる値と、前記平均通信距離を羃指数として所定の数を羃乗して得られる値との二乗平均平方根をとる演算を行い、その演算の結果得られる値が大きい計算ノードを、新規ジョブの割当対象として特定す
る
ことを特徴とする付記２記載のジョブ割当装置。
【０１７９】
（付記４）
ジョブが割り当てられている１個以上の計算ノードそれぞれについて、省電力モード移行率を算出する第３の算出部、及び、
ジョブが割り当てられている計算ノードの中に、前記第３の算出部が算出した省電力モード移行率が高い計算ノードが存在していた場合に、その計算ノードに割り当てられているジョブを、ジョブが割り当てられておらず且つ省電力モード移行率が低い計算ノードに、移し替える移替部
を更に備えることを特徴とする付記１、２又は３記載のジョブ割当装置。
【０１８０】
（付記５）
前記移替部は、前記第３の算出部が算出した省電力モード移行率が所定の閾値を超過している計算ノードを、省電力モード移行率の高い計算ノードとして特定する
ことを特徴とする付記４記載のジョブ割当装置。
【０１８１】
（付記６）
電力消費量を低減する省電力モードへ移行する機能を有するＣＰＵを含む複数の計算ノードに対し、ジョブを割り当てるためのジョブ割当方法であって、
コンピュータが、
新規ジョブの投入があると、ジョブが割り当てられていない計算ノードそれぞれの省電力モード移行率を算出する第１の算出手順、
前記第１の算出手順で算出した省電力モード移行率が低い計算ノードを、新規ジョブの割当対象として特定する特定手順、及び、
前記特定手順で特定した計算ノードに新規ジョブを割り当てる割当手順
を実行する
ことを特徴とするジョブ割当方法。
【０１８２】
（付記７）
前記コンピュータが、
新規ジョブの投入があると、ジョブが割り当てられていない計算ノードそれぞれについて、新規ジョブにおける通信対象となる計算ノードとの通信距離の平均を、平均通信距離として算出する第２の算出手順
を更に実行し、
前記特定手順においては、前記第１の算出手順で算出した省電力モード移行率が低く且つ前記第２の算出手順で算出した平均通信距離が少ない計算ノードを、新規ジョブの割当対象として特定する
ことを特徴とする付記６記載のジョブ割当方法。
【０１８３】
（付記８）
前記コンピュータが、
前記特定手順において、前記省電力モード移行率を１から減算して得られる値と、前記平均通信距離を羃指数として所定の数を羃乗して得られる値との二乗平均平方根をとる演算を行い、その演算の結果得られる値が大きい計算ノードを、新規ジョブの割当対象として特定する
ことを特徴とする付記７記載のジョブ割当方法。
【０１８４】
（付記９）
前記コンピュータが、
ジョブが割り当てられている１個以上の計算ノードそれぞれについて、省電力モード移行率を算出する第３の算出手順、及び、
ジョブが割り当てられている計算ノードの中に、前記第３の算出手順で算出した省電力モード移行率が高い計算ノードが存在していた場合に、その計算ノードに割り当てられているジョブを、ジョブが割り当てられておらず且つ省電力モード移行率が低い計算ノードに、移し替える移替手順
を更に実行する
ことを特徴とする付記６、７又は８記載のジョブ割当方法。
【０１８５】
（付記１０）
前記コンピュータが、
前記移替手順において、前記第３の算出手順で算出した省電力モード移行率が所定の閾値を超過している計算ノードを、省電力モード移行率の高い計算ノードとして特定する
ことを特徴とする付記９記載のジョブ割当方法。
【０１８６】
（付記１１）
電力消費量を低減する省電力モードへ移行する機能を有するＣＰＵを含む複数の計算ノードに対し、ジョブを割り当てるためのジョブ割当プログラムであって、
コンピュータを、
新規ジョブの投入があると、ジョブが割り当てられていない計算ノードそれぞれの省電力モード移行率を算出する第１の算出手段、
前記第１の算出手段が算出した省電力モード移行率が低い計算ノードを、新規ジョブの割当対象として特定する特定手段、及び、
前記特定手段が特定した計算ノードに新規ジョブを割り当てる割当手段
として機能させる
ことを特徴とするジョブ割当プログラム。
【０１８７】
（付記１２）
前記コンピュータを、更に、
新規ジョブの投入があると、ジョブが割り当てられていない計算ノードそれぞれについて、新規ジョブにおける通信対象となる計算ノードとの通信距離の平均を、平均通信距離として算出する第２の算出手段
として機能させ、
前記特定手段は、前記第１の算出手段が算出した省電力モード移行率が低く且つ前記第２の算出手段が算出した平均通信距離が少ない計算ノードを、新規ジョブの割当対象として特定する
ことを特徴とする付記１１記載のジョブ割当プログラム。
【０１８８】
（付記１３）
前記特定手段は、前記省電力モード移行率を１から減算して得られる値と、前記平均通信距離を羃指数として所定の数を羃乗して得られる値との二乗平均平方根をとる演算を行い、その演算の結果得られる値が大きい計算ノードを、新規ジョブの割当対象として特定する
ことを特徴とする付記１２記載のジョブ割当プログラム。
【０１８９】
（付記１４）
前記コンピュータを、更に、
ジョブが割り当てられている１個以上の計算ノードそれぞれについて、省電力モード移行率を算出する第３の算出手段、及び、
ジョブが割り当てられている計算ノードの中に、前記第３の算出手段が算出した省電力
モード移行率が高い計算ノードが存在していた場合に、その計算ノードに割り当てられているジョブを、ジョブが割り当てられておらず且つ省電力モード移行率が低い計算ノードに、移し替える移替手段
として機能させる
ことを特徴とする付記１１、１２又は１３記載のジョブ割当プログラム。
【０１９０】
（付記１５）
前記移替手段は、前記第３の算出手段が算出した省電力モード移行率が所定の閾値を超過している計算ノードを、省電力モード移行率の高い計算ノードとして特定する
ことを特徴とする付記１４記載のジョブ割当プログラム。
【図面の簡単な説明】
【０１９１】
【図１】第１の実施形態の分散メモリ型並列計算システムの構成図
【図２】計算ノードの構成図
【図３】管理ノードの構成図
【図４】距離定義テーブルを模式的に示す図
【図５】計算ノード管理テーブルを模式的に示す図
【図６】計算ノード側の第１のイベント管理処理の流れを示す図
【図７】動作モード通知サブルーチンの流れを示す図
【図８】ジョブ実行開始サブルーチンの流れを示す図
【図９】ジョブ実行終了サブルーチンの流れを示す図
【図１０】管理ノード側の第２のイベント管理処理の流れを示す図
【図１１】累積動作時間更新サブルーチンの流れを示す図
【図１２】ジョブ割当サブルーチンの流れを示す図
【図１３】第２の実施形態の計算ノードのＣＰＵが実行する割り込みハンドラの流れを示す図
【図１４】第２の実施形態における動作モード通知サブルーチンの流れを示す図
【図１５】第２の実施形態における計算ノード管理テーブルを模式的に示す図
【図１６】累積動作時間更新サブルーチンの流れを示す図
【図１７】第３の実施形態の第１のイベント管理処理の流れを示す図
【図１８】第３の実施形態の第１のイベント管理処理の流れを示す図
【図１９】ジョブ凍結サブルーチンの流れを示す図
【図２０】ジョブ解凍サブルーチンの流れを示す図
【図２１】第３の実施形態の第２のイベント管理処理の流れを示す図
【図２２】第３の実施形態の第２のイベント管理処理の流れを示す図
【図２３】ジョブ移替サブルーチンの流れを示す図
【図２４】ジョブ移替サブルーチンの流れを示す図
【符号の説明】
【０１９２】
１０    計算ノード
１０ａ  ネットワークインターフェースユニット
１０ｂ  ストレージユニット
１０ｃ  ＣＰＵ
１０ｄ  メモリユニット
１１    第１のイベント管理プログラム
１２    第１のイベント管理プログラム
２０    管理ノード
２０ａ  表示ユニット
２０ｂ  入力ユニット
２０ｃ  ネットワークインターフェースユニット
２０ｄ  ストレージユニット
２０ｅ  ＣＰＵ
２０ｆ  メモリユニット
２１    距離定義テーブル
２２    計算ノード管理テーブル
２３    第２のイベント管理プログラム
２４    計算ノード管理テーブル
２５    第２のイベント管理プログラム
【図１】
0005211778.tif 000003
【図２】
0005211778.tif 000004
【図３】
0005211778.tif 000005
【図４】
0005211778.tif 000006
【図５】
0005211778.tif 000007
【図６】
0005211778.tif 000008
【図７】
0005211778.tif 000009
【図８】
0005211778.tif 000010
【図９】
0005211778.tif 000011
【図１０】
0005211778.tif 000012
【図１１】
0005211778.tif 000013
【図１２】
0005211778.tif 000014
【図１３】
0005211778.tif 000015
【図１４】
0005211778.tif 000016
【図１５】
0005211778.tif 000017
【図１６】
0005211778.tif 000018
【図１７】
0005211778.tif 000019
【図１８】
0005211778.tif 000020
【図１９】
0005211778.tif 000021
【図２０】
0005211778.tif 000022
【図２１】
0005211778.tif 000023
【図２２】
0005211778.tif 000024
【図２３】
0005211778.tif 000025
【図２４】
0005211778.tif 000026