(57)【要約】      （修正有）【課題】ジョブが複数ノードを使用する場合に、あるノードの周囲のノード全てをスキャンして調べずに、空き領域(空きノードが多く存在する領域)を効率よく見つけ出す。【解決手段】ネットワーク接続した多数のノード群を備える並列計算機システムであって、ジョブサーバ１０のノード群のノードで実行するジョブのジョブスケジューラ１１が、使用中のノードを架空の熱源として周囲のノードへ熱量が伝達されると仮定し、熱源からの距離に基づいてノードの温度を計算する温度計算手段１０５、１０６と、空きノードをある温度範囲毎にグループ分けした複数の温度グループから、温度に応じてジョブが必要とするノードの数に見合った温度グループから最も温度の低い空きノードを中心ノードとして取り出す空き領域抽出手段１０３と、中心ノードを中心として距離の近い空きノードから順に必要とする数の空きノードを選択する周辺ノード選択手段１０４とを備える。【選択図】図２
2011227747.tif 000002
【特許請求の範囲】
【請求項１】
多数のノードをネットワークで接続したノード群を備える並列計算機システムであって、
前記ノード群のノードで実行するジョブのスケジューリングを行うジョブサーバのジョブスケジューラが、
前記ノード群の使用中のノードを架空の熱源とし、当該熱源から周囲のノードへ熱量が伝達されると仮定し、熱源からの距離に基づいて周囲の空きノードの温度を計算する温度計算手段と、
空きノードをある温度範囲毎にグループ分けした複数の温度グループから、温度に応じてジョブが必要とする空きノードの数に見合った温度グループを選択し、選択した温度グループから最も温度の低い空きノードを中心ノードとして取り出す空き領域抽出手段と、
前記中心ノードを中心として距離の近い空きノードから順に必要とする数の空きノードを選択するノード選択手段と
を備えることを特徴とする並列計算機システム。
【請求項２】
前記ジョブスケジューラが、
前記ノード群の各ノード間のネットワーク的な距離を計算する距離計算手段と、
全体を制御し、前記ノード群からジョブの実行に必要なノードの確保と解放を行うノード確保／解放手段とを備えることを特徴とする請求項１に記載の並列計算機システム。
【請求項３】
前記ジョブスケジューラが、
温度グループ毎に温度の低い順に空きノードへのポインタをリンクした空きノードキューと、
前記空き領域抽出手段の制御によって前記空きノードキューから、必要とする空きノードの数に見合った温度グループを判別して選択する温度グループ判別手段を備えることを特徴とする請求項１又は請求項２に記載の並列計算機システム。
【請求項４】
前記ジョブスケジューラが、
空きノードの確保と解放に応じて、当該空きノードの温度に応じた温度グループの空きノードキューに空きノードを挿入し、又は空きノードキューから空きノードを削除する空きノードキュー更新手段を備えることを特徴とする請求項３に記載の並列計算機システム。
【請求項５】
ノードの確保、解放時に、確保又は解放するノードのステータスを変更するノードステータス変更手段と、
前記ノード群の各ノードのステータス、ノードの温度を含むノード毎の情報を保持するノード情報テーブルを備えることを特徴とする請求項１から請求項４の何れかに記載の並列計算機システム。
【請求項６】
計算ノード確保／解放手段が、
前記温度計算手段を制御し、ノードの確保時、確保したノードと周囲の空きノードの温度を再計算すると共に、ノードの解放時、解放するノードと周囲の空きノードの温度の再計算し、
前記空きノードキュー更新手段を制御し、計算した温度に基づいて、前記空きノードキューを更新することを特徴とする請求項３から請求項５の何れかに記載の並列計算機システム。
【請求項７】
多数のノードをネットワークで接続したノード群を備える並列計算機システムにおけるジョブスケジューリング方法であって、
前記ノード群のノードで実行するジョブのスケジューリングを行うジョブサーバのスケジューラが、
前記ノード群の使用中のノードを架空の熱源とし、当該熱源から周囲のノードへ熱量が伝達されると仮定し、熱源からの距離に基づいて周囲の空きノードの温度を計算する温度計算ステップと、
空きノードをある温度範囲毎にグループ分けした複数の温度グループから、温度に応じてジョブが必要とする空きノードの数に見合った温度グループを選択し、選択した温度グループから最も温度の低い空きノードを中心ノードとして取り出す空き領域抽出ステップと、
前記中心ノードを中心として距離の近い空きノードから順に必要とする数の空きノードを選択するノード選択ステップと
を実行することを特徴とするジョブスケジューリング方法。
【請求項８】
多数のノードをネットワークで接続したノード群を備える並列計算機システムにおいて、前記ノード群のノードで実行するジョブのスケジューリングを行うジョブスケジューラを備えるジョブサーバであって、
前記ジョブスケジューラが、
前記ノード群の各ノード間のネットワーク的な距離を計算する距離計算手段と、
前記ノード群の使用中のノードを架空の熱源とし、当該熱源から周囲のノードへ熱量が伝達されると仮定し、熱源からの距離に基づいて周囲の空きノードの温度を計算する温度計算手段と、
空きノードをある温度範囲毎にグループ分けした複数の温度グループから、温度に応じてジョブが必要とする空きノードの数に見合った温度グループを選択し、選択した温度グループから最も温度の低い空きノードを中心ノードとして取り出す空き領域抽出手段と、
前記中心ノードを中心として距離の近い空きノードから順に必要とする数の空きノードを選択するノード選択手段と、
全体を制御し、前記ノード群からジョブの実行に必要なノードの確保と解放を行うノード確保／解放手段と、
を備えることを特徴とするジョブサーバ。
【請求項９】
多数のノードをネットワークで接続したノード群を備える並列計算機システムにおけるジョブスケジューリングプログラムであって、
前記ノード群のノードで実行するジョブのスケジューリングを行うジョブサーバに、
前記ノード群の各ノード間のネットワーク的な距離を計算する距離計算処理と、
前記ノード群の使用中のノードを架空の熱源とし、当該熱源から周囲のノードへ熱量が伝達されると仮定し、熱源からの距離に基づいて周囲の空きノードの温度を計算する温度計算処理と、
空きノードをある温度範囲毎にグループ分けした複数の温度グループから、温度に応じてジョブが必要とする空きノードの数に見合った温度グループを選択し、選択した温度グループから最も温度の低い空きノードを中心ノードとして取り出す空き領域抽出処理と、
前記中心ノードを中心として距離の近い空きノードから順に必要とする数の空きノードを選択するノード選択処理と、を実行させることを特徴とするジョブスケジューリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多数のノードがネットワーク回線で接続された並列計算機システムに関し、特に、並列計算機システムで実行されるジョブのスケジューリングを行うジョブサーバ、ジョブスケジューリング方法及びジョブスケジューリングプログラムに関する。
【背景技術】
【０００２】
近年、並列計算機システムは、各ノードの規模よりもノード数を増加させることにより性能を向上させることが一般化している。
一般に、並列計算機システムでは、ノード間を接続するネットワーク回線（インターコネクト）によりノード間でデータのやり取りをしながら計算を進める。この場合のネットワーク回線の接続方法としては、任意の１ノードと他の全てのノードを直接接続する完全結合が通信効率の点から最適であるが、ノード数が増加すると、この方法は実装上の困難さやコストの面から現実的ではない。
【０００３】
このため、近傍のノード同士を直接接続し、それより先のノードに対しては、近傍のノードから目的とするノードに到達するまで複数のノードを介して通信を行う方法が採用されることが多い。このような接続方法の１つとして、２次元トーラスや３次元トーラスに基づく接続方法がある。
【０００４】
しかし、このような接続方法の場合、直接ネットワーク回線で接続されている近傍のノードとの通信と、複数のノードを介して通信しなければならないノード（ネットワーク的に遠いノード）との通信では、通信に要する時間に差が生じる。
【０００５】
つまり、２次元トーラスや３次元トーラスに基づく接続方法では、全てのノードとの通信が同じ時間で完了できる完全結合の場合よりも、並列計算機システム上で実行されているジョブのＴＡＴ（Ｔｕｒｎ  Ａｒｏｕｎｄ  Ｔｉｍｅ）が長くなる可能性があることが一般に知られている。
【０００６】
このことは、今後ノード数がさらに増加すると考えると、大きな問題になる可能性がある。このため、並列計算機システム上で複数のノードを使用するジョブを実行する場合は、できるだけネットワーク的に近いノードを選択すべきである。
【０００７】
並列計算機システムにおいて、できるだけネットワーク的に近いノードを選択するための関連技術として、例えば、特許文献１には、複数のＨＰＣ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｅｒ）ノードから非割り当て部分集合を判定すること、及びノード間の距離を最小にするために、ジョブの種類によって最善のフィットが立方体である場合や球体である場合について記載されている。
【０００８】
しかし、既に他に複数の実行中のジョブがあり、使用中のノードと空きノードが並列計算機システム内に混在するような場合において、実際にどのような方法によって「非割り当て部分集合」を判定するのかについては、特許文献１には何ら言及されていない。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００５−３１０１３９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
一般的に考えられる方法の一例としては、最初に空きノードの集合から任意のノードを１つ選定し、その周囲のノードにどのくらい空きノードがあるかを調べるために、周囲のノードをスキャンすることである。しかし、そのノードの周囲に空きノードが少ない場合は、再度他の空きノードを１つ選定し、適当な空き領域が見つかるまで、この操作を繰り返さなければならない。この場合、最適な空き領域が見つかるまで上記操作を繰り返すと、Ο（ｎ＾２）（ｎは、ノード数で正の整数）の手間がかかってしまう場合がある。
【００１１】
以上より、特に、複数のノードを使用するジョブが複数存在する場合に、２次元トーラスや３次元トーラス空間の中から、空き領域（空きノードが多く存在する領域）を効率よく見つけ出す方法を提供することが課題となる。
【００１２】
（発明の目的）
本発明は、ジョブが複数のノードを使用する場合に、あるノードの周囲のノード全てをスキャンして調べることなく、空き領域(空きノードが多く存在する領域)を効率よく見つけ出すことを可能とする並列計算機システム、ジョブサーバ、ジョブスケジューリング方法及びジョブスケジューリングプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明の第１の並列計算機システムは、多数のノードをネットワークで接続したノード群を備える並列計算機システムであって、ノード群のノードで実行するジョブのスケジューリングを行うジョブサーバのジョブスケジューラが、ノード群の使用中のノードを架空の熱源とし、当該熱源から周囲のノードへ熱量が伝達されると仮定し、熱源からの距離に基づいて周囲の空きノードの温度を計算する温度計算手段と、空きノードをある温度範囲毎にグループ分けした複数の温度グループから、温度に応じてジョブが必要とする空きノードの数に見合った温度グループを選択し、選択した温度グループから最も温度の低い空きノードを中心ノードとして取り出す空き領域抽出手段と、中心ノードを中心として距離の近い空きノードから順に必要とする数の空きノードを選択するノード選択手段とを備える。
【００１４】
本発明の第１のジョブスケジューリング方法は、多数のノードをネットワークで接続したノード群を備える並列計算機システムにおけるジョブスケジューリング方法であって、ノード群のノードで実行するジョブのスケジューリングを行うジョブサーバのスケジューラが、ノード群の使用中のノードを架空の熱源とし、当該熱源から周囲のノードへ熱量が伝達されると仮定し、熱源からの距離に基づいて周囲の空きノードの温度を計算する温度計算ステップと、空きノードをある温度範囲毎にグループ分けした複数の温度グループから、温度に応じてジョブが必要とする空きノードの数に見合った温度グループを選択し、選択した温度グループから最も温度の低い空きノードを中心ノードとして取り出す空き領域抽出ステップと、中心ノードを中心として距離の近い空きノードから順に必要とする数の空きノードを選択するノード選択ステップとを実行する。
【００１５】
本発明の第１のジョブサーバは、多数のノードをネットワークで接続したノード群を備える並列計算機システムにおいて、ノード群のノードで実行するジョブのスケジューリングを行うジョブスケジューラを備えるジョブサーバであって、ジョブスケジューラが、ノード群の各ノード間のネットワーク的な距離を計算する距離計算手段と、ノード群の使用中のノードを架空の熱源とし、当該熱源から周囲のノードへ熱量が伝達されると仮定し、熱源からの距離に基づいて周囲の空きノードの温度を計算する温度計算手段と、空きノードをある温度範囲毎にグループ分けした複数の温度グループから、温度に応じてジョブが必要とする空きノードの数に見合った温度グループを選択し、選択した温度グループから最も温度の低い空きノードを中心ノードとして取り出す空き領域抽出手段と、中心ノードを中心として距離の近い空きノードから順に必要とする数の空きノードを選択するノード選択手段と、全体を制御し、ノード群からジョブの実行に必要なノードの確保と解放を行うノード確保／解放手段と、を備える。
【００１６】
本発明の第１のジョブスケジューリングプログラムは、多数のノードをネットワークで接続したノード群を備える並列計算機システムにおけるジョブスケジューリングプログラムであって、ノード群のノードで実行するジョブのスケジューリングを行うジョブサーバに、ノード群の各ノード間のネットワーク的な距離を計算する距離計算処理と、ノード群の使用中のノードを架空の熱源とし、当該熱源から周囲のノードへ熱量が伝達されると仮定し、熱源からの距離に基づいて周囲の空きノードの温度を計算する温度計算処理と、空きノードをある温度範囲毎にグループ分けした複数の温度グループから、温度に応じてジョブが必要とする空きノードの数に見合った温度グループを選択し、選択した温度グループから最も温度の低い空きノードを中心ノードとして取り出す空き領域抽出処理と、中心ノードを中心として距離の近い空きノードから順に必要とする数の空きノードを選択するノード選択処理と、を実行させる。
【発明の効果】
【００１７】
本発明によれば、ジョブが複数のノードを使用する場合に、あるノードの周囲のノード全てをスキャンして調べることなく、空き領域(空きノードが多く存在する領域)を効率よく見つけ出すことを可能となる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施の形態による並列計算機システム全体の構成例を示す図である。
【図２】本発明の第１の実施の形態による並列計算機システムのジョブサーバのジョブスケジューラの構成を示すブロック図である。
【図３】ノード群のネットワーク回線の接続形態の一例として、２次元トーラスの接続例のイメージを示す図である。
【図４】ノード群における各ノードから隣接ノードへの接続イメージを示す図である。
【図５】本発明の第１の実施の形態による並列計算機システムの計算ノードの構成例を示すブロック図である。
【図６】熱源からの熱の伝導状態を示す図である。
【図７】本発明の第１の実施の形態による空きノードキューの例を示す図である。
【図８】２次元トーラスの場合のノードＡからノードＢへ至る正回りと逆回りの経路を例を示す図である。
【図９】本発明の第１の実施の形態による、ジョブ起動時に計算ノードを確保する際の動作を説明するフローチャートである。
【図１０】第１の温度計算手段による確保したノードとその周囲の空きノードの温度を再計算する際の動作を説明するフローチャートである。
【図１１】本発明の第１の実施の形態による、ジョブ終了時に計算ノードを解放する際の動作を説明するフローチャートである。
【図１２】第２の温度計算手段による解放したノードとその周囲の空きノードの温度を再計算する際の動作を説明するフローチャートである。
【図１３】本発明の第１の実施の形態によってノードを確保する際の一例を示す図である。
【発明を実施するための最良の形態】
【００１９】
本発明の実施の形態について図面を参照して詳細に説明する。
（第１の実施の形態）
（構成の説明）
まず、本発明の第１の実施の形態による並列計算機システム全体の構成例を、図１を参照して説明する。
本実施の形態による並列計算機システムにおいては、基本的に、図１に示すように、ノード群１０００を、隣接する６方向のノードとネットワーク回線により接続（３次元トーラス）されている複数のノードで構成される、立方体の集まりとして表現している。
【００２０】
ノード群１０００には、ジョブサーバ１０、管理ノード２０、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）ノード３０、計算ノード４０などが含まれる。その他に、ファイルシステム７０とストレージ用ネットワーク６０、及び外部ネットワーク５０を含んでいる。
【００２１】
ジョブサーバ１０は、図２に示すジョブスケジューラ１１が動作するノードである。計算ノード４０は、エンドユーザが必要な計算を行うためのノードであり、ジョブスケジューラ１１によるスケジューリングの対象となるノードである。
【００２２】
Ｉ／Ｏノード３０は、計算ノード４０からの入出力要求を受け取り、その入出力要求をストレージ用ネットワーク６０を介してファイルシステム７０へ渡す役割を担う。
【００２３】
ファイルシステム７０は、一般に複数のストレージから構成される。複数のストレージサーバが複数のストレージを管理する形でファイルシステム７０を構成する場合もある。
【００２４】
管理ノード３０は、システム管理者がメンテナンスやシステムの設定変更などのためにログインして作業を行うノードである。
【００２５】
そして、エンドユーザは、外部ネットワーク５０を介して外部の端末からジョブサーバ１０に対してジョブの投入を行う。
【００２６】
ノード群１０００のネットワーク回線の接続形態の一例として、図３に２次元トーラスの接続例のイメージを示す。トーラス接続の特徴は、端に位置するノードは反対側の端に位置するノードと接続されており、ネットワーク的には端が存在しない点である。
【００２７】
なお、３次元トーラスの場合は、２次元の縦、横方向に加えて高さ方向が加わるだけで、上述した特徴は変わらない。図２に、３次元ではなく、２次元トーラスのイメージを示したのは、図を見やすくして理解を容易にするためである。
【００２８】
ノード群１０００における各ノードから隣接ノードへの接続イメージを図４に示す。図４に示すように、各ノードが小規模なスイッチを有しており、このスイッチにより３次元トーラスの場合は隣接する６方向のノードへ直接接続する。
【００２９】
また、計算ノード４０の構成例を図５に示す。３次元トーラスの場合、隣接する６ノードと自ノードを含め最低７ポートのスイッチ４１が必要となる。その他に、１つ又は複数のＣＰＵ４２内に複数のコア４２１と呼ばれる計算の単位があり、それらがメモリ４２２に接続されている。オペレーティングシステムについては、ノードの起動時にネットワーク回線を介してメモリへ転送される場合と、ノード毎に実装される外部記憶装置に格納される場合がある。後者の場合は、図５の構成に外部記憶装置が加わる。
【００３０】
また、ジョブサーバ１０、管理ノード２０、Ｉ／Ｏノード３０についても、計算ノード４０と類似の構成を有し、例えば外部記憶装置に格納したプログラムをそのＣＰＵにおいて実行することにより、各ノード固有の機能を実現する。
【００３１】
例えば、ジョブサーバ１０の場合であれば、ジョブスケジューラ１１の機能は、プログラムを組み込んだ、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することは勿論として、その機能を提供するプログラムを、メモリにロードしてＣＰＵで実行することにより、ソフトウェア的に実現することも可能である。
【００３２】
また、計算ノード４０以外のノードは、他に外部ネットワーク５０またはストレージネットワーク６０と接続するためのネットワークインタフェースをさらにもう１つ有している。
【００３３】
次に、本発明の実施の形態による空きノード確保方法について、その概要を説明する。なお、理解を容易にするために、図によっては、３次元トーラスではなく２次元トーラスの図を用いている場合もある。
【００３４】
本実施の形態においては、ジョブサーバ１０のジョブスケジューラ１１が複数の空きノード（以降、特に明示しない限り「ノード」とは計算ノード４０を指す）を確保する処理において、最初に空きノードの集合からノードを１つ選定し、その選択したノードに関する情報を参照するだけで、周りにどの程度空きノードが存在するかを推定できるようにする。例えば、１つのジョブが複数のノード（計算ノード）を確保する必要がある場合、それらノード間の通信時間を短くするために、できるだけネットワーク的な距離が近いノードを確保する必要があるが、その際に、ジョブスケジューラが空きノードの多い領域を効率よく見つけ出すことができるようにする。このために、熱伝導の概念を利用する。
【００３５】
本実施の形態では、使用中のノードを温度Ｔ＝Ｔ０の架空の熱源とし、周りの空きノードへ熱源からの距離に比例して熱が伝導するとした場合において、時刻ｔ＝ｔｎでの熱源の周囲の空きノードの温度を計算する。
【００３６】
次に、ジョブスケジューラ１１が複数の空きノードを確保する処理において、空きノードの集合からノードを１つ選定し、そのノードの温度高ければ周囲に空きノードは少なく、温度が低い場合は空きノードが多いと考える。
【００３７】
つまり、選定したノードの温度が低い場合は、３次元トーラス空間内での空きノードを確保する領域の候補になる。これにより、周囲のノードに空きノードがあるかどうかを調べることなく、周囲に多くの空きノードがある可能性が高い領域を抽出できる。
なお、本発明では、あくまでも熱伝導の概念を利用するのであって、実在する物質の熱伝導を扱うものではないことに留意したい。このため、実際の物理現象に一致していない場合があっても差し支えない。
【００３８】
熱伝導は、温度勾配を表すフーリエの法則（ｑ＝−ｋ（ｄＴ／ｄｘ））に依存する。ここで、ｑは単位時間当たりに伝達される熱量、ｋは熱伝導率、Ｔは温度、ｘは距離である。
【００３９】
一例として、ｘ＝０にある熱源は常に温度Ｔ０を維持でき、簡単のために温度勾配は一定とし、時刻ｔが「１」進む毎に熱が１／χ（χ：適当な正の実数）づつ伝導すると仮定した場合の温度を図６の表に示す。
【００４０】
ただし、空きノードの周囲に複数の熱源がある場合は、その空きノードの温度はそれら熱源から伝達される熱量の合計で決まるとする。また、熱源からある空きノードへの経路が複数ある場合でも、その内の最短経路の１つのみから熱が伝わることとする。
【００４１】
また、図６に示す表から、熱源の温度Ｔ０と「１」以上の任意の距離における温度Ｔには、Ｔ０＞Ｔの条件が必要となる。そして、このことから、時刻ｔ＝ｔｎ（ｔｎ：正の整数）における温度を対象とする場合、χはχ＞ｔｎを満たすように選ぶ必要がある。ただし、Ｔ０は、任意の正の実数でよい。
【００４２】
そして、温度変化は伝えられる熱量に比例する（熱量ｑ、比熱ｃ、質量ｍとした場合、温度Ｔとの間でＴ＝ｑ／（ｃ・ｍ）という関係が成り立つ。ここで、ｃ＝１、ｍ＝１とすると、Ｔ＝ｑとなる）ので、これによって周囲の空きノードの温度を決定することができる。
【００４３】
なお、上記のように温度を計算をするためには、ノード間の距離が必要である。しかし、本発明が対象とする距離は、いわゆるユークリッド距離（ｘ，ｙ，ｚ直行座標系で表される曲率ゼロの空間における距離）のことではない。
【００４４】
ノード間で通信する際には、各ノード毎に設置されたネットワークスイッチを経由する。そして、そのスイッチングには有限且つ一定の時間を要すると考えてよい。このため、任意の２ノード間の距離は、それらの間の経路に存在するノード数に基づいて定義される必要がある。
【００４５】
以下に、本実施の形態における距離の定義について説明する。
ここでは、あるノードから目的のノードに到達するまでに経由したノードのスイッチの数を２ノード間の距離と定義する。
【００４６】
一例として、３次元トーラス空間における任意の２ノード間の最短距離の計算方法を示す。
【００４７】
直行座標系（ｘ，ｙ，ｚ）において、ノードＮ１の座標（ｘ１，ｙ１，ｚ１）とノードＮ２の座標（ｘ２，ｙ２，ｚ２）との最短距離ｄ（Ｎ１，Ｎ２）は、ｘ，ｙ，ｚ成分の距離をそれぞれｄｘ（ｘ１，ｘ２），ｄｙ（ｙ１，ｙ２），ｄｚ（ｚ１，ｚ２）とすると、式（１）のように表すことができる。
【００４８】
ｄ（Ｎ１，Ｎ２）＝ｄｘ（ｘ１，ｘ２）＋ｄｙ（ｙ１，ｙ２）＋ｄｚ（ｚ１，ｚ２）        ・・・（１）
【００４９】
ここで、ｄｘ（ｘ１，ｘ２），ｄｙ（ｙ１，ｙ２），ｄｚ（ｚ１，ｚ２）は、それぞれ式（２）〜（４）で表すことができる。ただし、トーラス接続の場合、正回り、逆回りの２つの経路が存在するので、その短い方を選択する必要がある（逆回りの距離については、図８を参照）。図８は、２次元トーラスの場合のノードＡからノードＢへ至る正回りと逆回りの経路を例を示している。図８の例では、正回りの距離は「３」であるが、逆回りの距離は「１」となる。
【００５０】
【数１】
2011227747.tif 000003
【００５１】
【数２】
2011227747.tif 000004
【００５２】
【数３】
2011227747.tif 000005
【００５３】
【数４】
2011227747.tif 000006
は、それぞれ、Ｘの絶対値、及びＸを２ノード間の正回りの距離とした場合、その逆回りの距離を示す。
【００５４】
また、３次元トーラスに限らず、一般にｎ次元トーラス（ｎは２以上の有限の整数値）であっても、その座標軸の数に応じてｄ（Ｎ１，Ｎ２）の計算量が変化するだけで、基本的には同じ考え方で距離を計算できる。
【００５５】
さらに、トーラス以外の他のネットワークの接続形態（メッシュ、超立方体など）についても、それらの接続方法に見合った距離を定義すればよく、トーラス接続のみに限定されない。
【００５６】
次に、本発明の第１の実施の形態による並列計算機システムのジョブサーバ１０のジョブスケジューラ１１の構成について図面を参照して詳細に説明する。
図２を参照すると、ジョブサーバ１０が備えるジョブスケジューラ１１は、計算ノード確保／開放手段１０１と、スケジューラの既存機能１０２と、空き領域抽出手段１０３と、周辺ノード選択手段１０４と、第１の温度計算手段１０５と、第２の温度計算手段１０６と、距離計算手段１０７と、温度グループ判別手段１０８と、空きノードキュー更新手段１０９と、ノードステータス変更手段１１０と、空きノードキュー１１１と、ノード情報テーブル１１２を含んでいる。
【００５７】
これらの構成要素ははそれぞれ概略次のように動作する。
計算ノード確保／開放手段１０１は、空き領域の抽出、必要なノードの確保／解放及びそれに基づく周辺の空きノードの温度の再計算処理など全体の制御を行う。
【００５８】
スケジューラの既存機能１０２は、スケジューラの既存機能であり、ユーザが投入したジョブのキューイング、各ジョブが要求する計算資源や優先度に基づいた順序付け、確保した計算ノードへ必要なプログラムやデータの送信、該プログラムの起動、計算終了時点で計算結果の返送制御、障害監視等々のスケジューラが通常持っている一般的な機能である。ただし、本発明では、これらの機能については言及しない。
【００５９】
空き領域抽出手段１０３は、温度グループ判別手段１０８を制御して、要求されたノード数に見合った温度グループを選定し、空きノードキュー更新手段１０９を制御して、当該温度グループの空きノードキュー１１１の先頭から１つ空きノードを取り出す。
【００６０】
空きノードキュー１１１は、温度の低いノードから順にリンクされているので、キューの先頭が当該温度グループの中では最も温度の低い空きノードということになる。そして、この取り出したノードを中心ノードと称し、中心ノードの周囲に適当な空き領域がある可能性が高いと考える。
【００６１】
周辺ノード選択手段１０４は、選択した中心ノードを中心として、周辺のノードから順に必要数の空きノードを選択し、計算ノード確保／開放手段１０１へ返す。
【００６２】
ジョブ開始時、空きノードの確保処理において確保したノードの温度はＴ０に固定されるので、これに伴って周囲のノード温度は幾分上がるはずである。第１の温度計算手段１０５は、ジョブ開始時にその周囲のノードの温度の上昇分の再計算を行う。
【００６３】
ジョブ終了時、使用したノードの解放処理において解放したノードとその周囲のノードの温度は幾分下がるはずである。第２の温度計算手段１０６は、ジョブ終了時にその周囲のノードの温度の下降分の再計算を行う。
【００６４】
距離計算手段１０７は、ネットワーク的な距離を計算する機能を有する。温度の計算は距離に基づいて行うので、距離の計算が必要となる。この距離計算手段１０７による距離の計算は、一例として示した上述の計算方法に基づいて実行する。
【００６５】
温度グループ判別手段１０８は、図７に示すように、空きノードキュー１１１において、空きノードの温度をある範囲毎にグループに分けておき、ジョブが要求する計算ノード４０の数に見合った温度グループを選択する。そして、空き領域抽出手段１０３が、空きノードキュー更新手段１０９を制御して、選択した温度グループから中心ノード（空き領域の中心のノード）を選択する。
【００６６】
これは、要求する空きノードがそれほど多くない場合に、最も温度の低いノードを中心ノードに選んでしまうと、不必要に広い空き領域が周囲にある場所を中心ノードとしてしまうことになる。このため、その後に多くのノードを要求するジョブが十分な空き領域を確保できなくなる可能性がある。
【００６７】
本実施の形態では、空きノードキュー１１１を複数の温度グループに分け、温度グループ判別手段１０８が要求されるノード数に応じた温度グループを選定する。これにより、不必要に広い空き領域がある場所に中心ノードを確保しないようにしている。
【００６８】
ノードの挿入時、空きノードキュー更新手段１０９は、当該ノードが空きノードの場合は、温度グループ判別手段１０８を制御して、当該ノードの温度に応じた温度グループを選定し、その温度グループ内のキューに挿入する。その際のキューの挿入箇所は、当該キューが温度の低い順にリンクされるような位置とする。
【００６９】
ノードの削除時、空きノードキュー更新手段１０９は、温度グループ判別手段１０８を制御して、温度グループを特定し、当該温度グループの空きノードキュー１１１から当該ノードを削除する。
【００７０】
ノードステータス変更手段１１０は、ノードの確保、解放時に、計算ノード確保／解放手段１０１の制御によって、確保、解放するノードのステータスを変更する。
【００７１】
空きノードキュー１１１は、図７に示したように、温度グループ毎に温度の低い順に空きノードへのポインタをリンクしており、空きノードキュー更新手段１０９により更新される。
【００７２】
ノード情報テーブル１１２は、各ノードのステータス、計算ノード４０の温度など、ノード毎の情報を保持する。その詳細については後述する。
【００７３】
（動作の説明）
次に、本発明の実施例の動作について詳細に説明する。
なお、ジョブサーバ１０、計算ノード４０、管理ノード２０、Ｉ／Ｏノード３０は、それぞれのオペレーティングシステムとして、ＵＮＩＸやＬｉｎｕｘなどを前提とし、計算ノード４０以外のノードは、３次元トーラスなどのインターコネクト以外に、ＴＣＰ／ＩＰなど一般的な通信プロトコルを使用可能なネットワークインタフェースを有している。
【００７４】
最初に、ジョブスケジューラ１１は、ジョブサーバ１０のメモリ上にノード情報テーブル１１２を格納するための領域を確保している。ノード情報テーブル１１２は、計算ノード４０毎の情報を保持する３次元配列（３次元トーラスの場合）である。
【００７５】
この配列は、要素毎に、ノードのステータス（“ＲＵＮ”（使用中）、“ＦＲＥＥ”（空き）、“ＭＡＩＮＴＥＮＡＮＣＥ”（保守）、“ＢＲＯＫＥＮ”（故障）などノードの状態を示す）、ノードの種別（計算ノード、ジョブサーバ、Ｉ／Ｏノード、管理ノードなど）、ノードの座標位置、実行中のジョブのジョブＩＤ、ノードの温度の情報を有する。この３次元配列の添え字（ｉ，ｊ，ｋ）は、そのまま各ノードの座標位置に対応している。また、図６に示す表に基づいて、適当な時刻ｔ＝ｔｎ（ｔｎは、適当な正の整数）での各々の距離における温度の値を１次元配列Ｔｔｎ（ｘ）として、ジョブサーバ１０のメモリ上に確保しているものとする。
【００７６】
（ジョブ起動時の動作）
図９、図１０は、計算ノード４０を確保する際の動作を説明するフローチャートである。
【００７７】
まず、スケジューラの既存機能１０２により、次に実行を開始すべきジョブとして選ばれたジョブの処理に必要とするノード数が、計算ノード確保／解放手段１０１に渡される。
【００７８】
図９のステップＳ９０１、ステップＳ９０２において、計算ノード確保／解放手段１０１は、空き領域抽出手段１０３を制御して中心ノードを選択する。
【００７９】
この際、空き領域抽出手段１０３は、温度グループ判別手段１０８を制御し、ジョブの処理に必要とするノード数に応じて空きノードキュー１１１から適切な温度グループを決める（ステップＳ９０１）。この温度グループの決め方としては種々の方法が考えられるが、例えば、必要とするノード数がある一定数（上限として設定したノード数）以上の場合は常に最も低い温度グループを選択し、逆に必要とするノード数がある一定数（下限として設定したノード数）以下の場合は最も高い温度グループを選択するといった方法が可能である。そして、必要とするノード数がそれらの中間の場合は、温度グループの数と必要なノード数の関係から比例配分して決めるというという方法が考えられる。
【００８０】
そして、空き領域抽出手段１０３は、空きノードキュー更新手段１０９を制御し、選択した温度グループ内のノードキューの先頭から、中心ノードとして空きノードを１つ取り出す（ステップＳ９０２）。
【００８１】
次に、ステップＳ９０３、ステップＳ９０４において、計算ノード確保／解放手段１０１は、周辺ノード選択手段１０４を制御して、取り出した中心ノードを中心として近い距離にある空きノードから順に必要数のノードを確保する（ステップＳ９０３）。
【００８２】
また、計算ノード確保／解放手段１０１は、ノードステータス変更手段１１０を制御して、確保した必要数のノードのステータスを“ＦＲＥＥ”から“ＲＵＮ”に変更し、空きノードキュー更新手段１０９を制御して、空きノードキュー１１１からそれらのノードを削除する（ステップＳ９０４）。
【００８３】
次に、計算ノード確保／解放手段１０１は、第１の温度計算手段１０５を制御し、確保したノードとその周囲の空きノードの温度を再計算する（ステップＳ９０５）。
【００８４】
この温度の再計算処理を図１０に示す。計算ノード確保／解放手段１０１は、第１の温度計算手段１０５を制御し、確保したノードについて、距離ｘ＝１〜ｘ１までに位置するノードの温度を、Ｔｉｊｋ＝Ｔｉｊｋ＋Ｔｔｎ（ｘ）のように計算する（ステップＳ１００１〜Ｓ１００３）。ここで、Ｔｉｊｋは、座標（ｉ，ｊ，ｋ）のノードの温度を表す。確保したノード全ての温度再計算が終了すると、ノード確保／解放手段１０１は、空きノードキュー更新手段１０９を制御し、再計算した新たな温度に基づいて、空きノードキュー１１１を更新する（ステップＳ１００４）。
【００８５】
最後に、計算ノード確保／解放手段１０１は、確保したノードをスケジューラの既存機能１０２に渡す。
【００８６】
なお、図１０のフローチャートでは、便宜上使用中のノードの温度も再計算する。しかし、使用中のノードであるかはそのノードのステータスが“ＲＵＮ”か“ＦＲＥＥ”かによって判断するので、使用中のノードの温度が参照されることはなく、不都合が生じることはない。
【００８７】
図１３にノードを確保する際の一例を示す。簡単のため、既に確保されているノードを２ノードとし、温度の計算は距離３までとすると、各空きノードの温度は図に示すようになる。ここで、Ｔｉは、距離ｉだけ離れた使用中ノードから伝えられた熱量による温度とする。また、黒の正方形は使用中ノードを示し、白の正方形は空きノードを示す。また、温度はＴ１＞Ｔ２＞Ｔ３＞０であるとする。
【００８８】
ここで、新たに９ノードを確保するとする。９ノードに相当する温度グループのキューの先頭が○印の付いたノードであったとすると、これが中心ノードとなる。そして、中心ノードに近いノードから順に残りの８ノードを確保した場合の一例が図中の太い線で示されたノードである。この場合、全てのノードが距離２以内に確保できたことになる。
【００８９】
仮に、温度グループを使用せず、単に最も低い温度である温度０のノードを中心ノードとして選んだ場合、当然必要数のノードを確保することは可能であるが、不必要に広い空き領域を選択してしまうことがわかる。
【００９０】
（ジョブ終了時の動作）
図１１、図１２は、計算ノード４を解放する際の動作を説明するフローチャートである。
【００９１】
まず、スケジューラの既存機能１０２により、実行を終了したジョブが確保していたノードの座標位置が、計算ノード確保／解放手段１０１に渡される。
【００９２】
図１１のステップＳ１１０１において、計算ノード確保／解放手段１０１は、ノードステータス変更手段１１０を制御し、解放するノードのステータスを“ＲＵＮ”から“ＦＲＥＥ”に変更する。
【００９３】
次に、ステップＳ１１０２において、計算ノード確保／解放手段１０１は、第２の温度計算手段１０６を制御し、解放するノードとその周囲の空きノードの温度の再計算を行う。
【００９４】
この温度の再計算処理を図１２に示す。計算ノード確保／解放手段１０１は、第２の温度計算手段１０６を制御し、解放するノードについて、距離ｘ＝１〜ｘ１までに位置するノードの温度を、Ｔｉｊｋ＝Ｔｉｊｋ−Ｔｔｎ（ｘ）のように計算する（ステップＳ１１０１〜Ｓ１１０３）。解放するノード全ての温度再計算が終了すると、ノード確保／解放手段１０１は、空きノードキュー更新手段１０９を制御し、新たな温度に基づいて、空きノードキュー１１１を更新する（ステップＳ１１０４）。
【００９５】
なお、各配列やキューへの参照／追加／更新の際は、排他制御を行い一貫性が保たれているものとする。
【００９６】
（第１の実施の形態による効果）
上述した第１の実施の形態による効果について以下に説明する。
第１に、ノードの空き領域を見つけるために、あるノードの周囲のノード全てをスキャンして調べることなく、そのノードの温度を参照することにより、周囲に空きノードが多いかどうかを推定できるので、複数のノードを使用するジョブが複数存在する場合に、例えば３次元トーラス空間の中から、空き領域（空きノードが多く存在する領域）を効率よく見つけ出すことができる。
【００９７】
第２に、中心ノードに近い空きノードを順に確保するので、ジョブ起動時において、例えば、ＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）のマスターを中心ノードとし、その他のノードをスレーブとすれば、マスターから各スレーブへの距離を最短にすることができ、通信時間を短縮できる。
【００９８】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００９９】
また、上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、これに限定されない。
【０１００】
（付記１）
多数のノードをネットワークで接続したノード群を備える並列計算機システムであって、
前記ノード群のノードで実行するジョブのスケジューリングを行うジョブサーバのスケジューラが、
前記ノード群の各ノード間のネットワーク的な距離を計算する距離計算手段と、
前記ノード群の使用中のノードを架空の熱源とし、当該熱源から周囲のノードへ熱量が伝達されると仮定し、熱源からの距離に基づいて周囲の空きノードの温度を計算する温度計算手段と、
空きノードをある温度範囲毎にグループ分けして複数の温度グループから、ジョブが必要とする空きノードの数に見合った温度グループを選択し、選択した温度グループから１つの空きノードを中心ノードとして取り出す空き領域抽出手段と、
前記中心ノードを中心として距離の近い空きノードから順に必要とする数の空きノードを選択するノード選択手段と、
全体を制御し、前記ノード群からジョブの実行に必要なノードの確保と解放を行うノード確保／解放手段と、
を備えることを特徴とする並列計算機システム。
【０１０１】
（付記２）
前記ジョブスケジューラが、
前記ノード群の各ノード間のネットワーク的な距離を計算する距離計算手段と、
全体を制御し、前記ノード群からジョブの実行に必要なノードの確保と解放を行うノード確保／解放手段とを備えることを特徴とする請求項１に記載の並列計算機システム。
【０１０２】
（付記３）
前記ジョブスケジューラが、
温度グループ毎に温度の低い順に空きノードへのポインタをリンクした空きノードキューと、
前記空き領域抽出手段の制御によって前記空きノードキューから、必要とする空きノードの数に見合った温度グループを判別して選択する温度グループ判別手段を備えることを特徴とする付記１又は付記２に記載の並列計算機システム。
【０１０３】
（付記４）
前記ジョブスケジューラが、
空きノードの確保と解放に応じて、当該空きノードの温度に応じた温度グループの空きノードキューに空きノードを挿入し、又は空きノードキューから空きノードを削除する空きノードキュー更新手段を備えることを特徴とする付記３に記載の並列計算機システム。
【０１０４】
（付記５）
ノードの確保、解放時に、確保又は解放するノードのステータスを変更するノードステータス変更手段と、
前記ノード群の各ノードのステータス、ノードの温度を含むノード毎の情報を保持するノード情報テーブルを備えることを特徴とする付記１から付記４の何れかに記載の並列計算機システム。
【０１０５】
（付記６）
計算ノード確保／解放手段が、
前記温度計算手段を制御し、ノードの確保時、確保したノードと周囲の空きノードの温度を再計算すると共に、ノードの解放時、解放するノードと周囲の空きノードの温度の再計算し、
前記空きノードキュー更新手段を制御し、計算した温度に基づいて、前記空きノードキューを更新することを特徴とする付記３から付記５の何れかに記載の並列計算機システム。
【０１０６】
（付記７）
多数のノードをネットワークで接続したノード群を備える並列計算機システムにおけるジョブスケジューリング方法であって、
前記ノード群のノードで実行するジョブのスケジューリングを行うジョブサーバのスケジューラが、
前記ノード群の使用中のノードを架空の熱源とし、当該熱源から周囲のノードへ熱量が伝達されると仮定し、熱源からの距離に基づいて周囲の空きノードの温度を計算する温度計算ステップと、
空きノードをある温度範囲毎にグループ分けした複数の温度グループから、温度に応じてジョブが必要とする空きノードの数に見合った温度グループを選択し、選択した温度グループから最も温度の低い空きノードを中心ノードとして取り出す空き領域抽出ステップと、
前記中心ノードを中心として距離の近い空きノードから順に必要とする数の空きノードを選択するノード選択ステップと
を実行することを特徴とするジョブスケジューリング方法。
【０１０７】
（付記８）
前記ノード群の各ノード間のネットワーク的な距離を計算する距離計算ステップをさらに実行することを特徴とする請求項７に記載のジョブスケジューリング方法。
【０１０８】
（付記９）
前記空き領域抽出ステップが、
温度グループ毎に温度の低い順に空きノードへのポインタをリンクした空きノードキューから、必要とする空きノードの数に見合った温度グループを判別して選択する温度グループ判別ステップを有することを特徴とする付記７又は付記８に記載のジョブスケジューリング方法。
【０１０９】
（付記１０）
前記ジョブスケジューラが、
空きノードの確保と解放に応じて、当該空きノードの温度に応じた温度グループの空きノードキューに空きノードを挿入し、又は空きノードキューから空きノードを削除する空きノードキュー更新ステップを有することを特徴とする付記９に記載のジョブスケジューリング方法。
【０１１０】
（付記１１）
ノードの確保と解放時に、確保又は解放するノードのステータスを変更するノードステータス変更ステップと、
前記ノード群の各ノードのステータス、ノードの温度を含むノード毎の情報をノード情報テーブルに保持するステップを有することを特徴とする付記７から付記１０の何れかに記載のジョブスケジューリング方法。
【０１１１】
（付記１２）
前記温度計算ステップで、ノードの確保時、確保したノードと周囲の空きノードの温度を再計算すると共に、ノードの解放時、解放するノードと周囲の空きノードの温度の再計算し、
前記空きノードキュー更新ステップで、計算した温度に基づいて、前記空きノードキューを更新することを特徴とする付記９から付記１１の何れかに記載のジョブスケジューリング方法。
【０１１２】
（付記１３）
多数のノードをネットワークで接続したノード群を備える並列計算機システムにおいて、前記ノード群のノードで実行するジョブのスケジューリングを行うジョブスケジューラを備えるジョブサーバであって、
前記ジョブスケジューラが、
前記ノード群の各ノード間のネットワーク的な距離を計算する距離計算手段と、
前記ノード群の使用中のノードを架空の熱源とし、当該熱源から周囲のノードへ熱量が伝達されると仮定し、熱源からの距離に基づいて周囲の空きノードの温度を計算する温度計算手段と、
空きノードをある温度範囲毎にグループ分けした複数の温度グループから、温度に応じてジョブが必要とする空きノードの数に見合った温度グループを選択し、選択した温度グループから最も温度の低い空きノードを中心ノードとして取り出す空き領域抽出手段と、
前記中心ノードを中心として距離の近い空きノードから順に必要とする数の空きノードを選択するノード選択手段と、
全体を制御し、前記ノード群からジョブの実行に必要なノードの確保と解放を行うノード確保／解放手段と、
を備えることを特徴とするジョブサーバ。
【０１１３】
（付記１４）
前記ノード群の各ノード間のネットワーク的な距離を計算する距離計算手段と、
全体を制御し、前記ノード群からジョブの実行に必要なノードの確保と解放を行うノード確保／解放手段とを備えることを特徴とする付記１３に記載のジョブサーバ。
【０１１４】
（付記１５）
前記ジョブスケジューラが、
温度グループ毎に温度の低い順に空きノードへのポインタをリンクした空きノードキューと、
前記空き領域抽出手段の制御によって前記空きノードキューから、必要とする空きノードの数に見合った温度グループを判別して選択する温度グループ判別手段を備えることを特徴とする付記１３又は付記１４に記載のジョブサーバ。
【０１１５】
（付記１６）
前記ジョブスケジューラが、
空きノードの確保と解放に応じて、当該空きノードの温度に応じた温度グループの空きノードキューに空きノードを挿入し、又は空きノードキューから空きノードを削除する空きノードキュー更新手段を備えることを特徴とする付記１５に記載のジョブサーバ。
【０１１６】
（付記１７）
ノードの確保、解放時に、確保又は解放するノードのステータスを変更するノードステータス変更手段と、
前記ノード群の各ノードのステータス、ノードの温度を含むノード毎の情報を保持するノード情報テーブルを備えることを特徴とする付記１３から付記１６の何れかに記載のジョブサーバ。
【０１１７】
（付記１８）
計算ノード確保／解放手段が、
前記温度計算手段を制御し、ノードの確保時、確保したノードと周囲の空きノードの温度を再計算すると共に、ノードの解放時、解放するノードと周囲の空きノードの温度の再計算し、
前記空きノードキュー更新手段を制御し、計算した温度に基づいて、前記空きノードキューを更新することを特徴とする付記１５から付記１７の何れかに記載のジョブサーバ。
【０１１８】
（付記１９）
多数のノードをネットワークで接続したノード群を備える並列計算機システムにおけるジョブスケジューリングプログラムであって、
前記ノード群のノードで実行するジョブのスケジューリングを行うジョブサーバに、
前記ノード群の各ノード間のネットワーク的な距離を計算する距離計算処理と、
前記ノード群の使用中のノードを架空の熱源とし、当該熱源から周囲のノードへ熱量が伝達されると仮定し、熱源からの距離に基づいて周囲の空きノードの温度を計算する温度計算処理と、
空きノードをある温度範囲毎にグループ分けした複数の温度グループから、温度に応じてジョブが必要とする空きノードの数に見合った温度グループを選択し、選択した温度グループから最も温度の低い空きノードを中心ノードとして取り出す空き領域抽出処理と、
前記中心ノードを中心として距離の近い空きノードから順に必要とする数の空きノードを選択するノード選択処理と、を実行させることを特徴とするジョブスケジューリングプログラム。
【０１１９】
（付記２０）
前記ノード群の各ノード間のネットワーク的な距離を計算する距離計算手段と、
全体を制御し、前記ノード群からジョブの実行に必要なノードの確保と解放を行うノード確保／解放手段とを備えることを特徴とする請求項１に記載の並列計算機システム。
【０１２０】
（付記２１）
前記空き領域抽出処理が、
温度グループ毎に温度の低い順に空きノードへのポインタをリンクした空きノードキューから、必要とする空きノードの数に見合った温度グループを判別して選択する温度グループ判別処理を有することを特徴とする付記１９又は付記２０に記載のジョブスケジューリングプログラム。
【０１２１】
（付記２２）
前記ジョブサーバに、
空きノードの確保と解放に応じて、当該空きノードの温度に応じた温度グループの空きノードキューに空きノードを挿入し、又は空きノードキューから空きノードを削除する空きノードキュー更新処理を、実行させることを特徴とする付記２１に記載のジョブスケジューリングプログラム。
【０１２２】
（付記２３）
ノードの確保、解放時に、確保又は解放するノードのステータスを変更するノードステータス変更処理と、
前記ノード群の各ノードのステータス、ノードの温度を含むノード毎の情報をノード情報テーブルに保持する処理を有することを特徴とする付記１９から付記２２の何れかに記載のジョブスケジューリングプログラム。
【０１２３】
（付記２４）
前記温度計算処理で、ノードの確保時、確保したノードと周囲の空きノードの温度を再計算すると共に、ノードの解放時、解放するノードと周囲の空きノードの温度の再計算し、
前記空きノードキュー更新処理で、計算した温度に基づいて、前記空きノードキューを更新することを特徴とする付記２１から付記２３の何れかに記載のジョブスケジューリングプログラム。
【産業上の利用可能性】
【０１２４】
本発明は、ＨＰＣ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）のような分野において、単一のノード、単一のＣＰＵでは、現実的な時間での計算が不可能な多量の計算を多数のノードに計算の単位を分割して計算するような並列計算機において利用できる。
【符号の説明】
【０１２５】
１０：ジョブサーバ
２０：管理ノード
３０：Ｉ／Ｏノード
４０：計算ノード
５０：外部ネットワーク
６０：ストレージ用ネットワーク
７０：ファイルシステム
１１：ジョブスケジューラ
１０１：計算ノード確保／解放手段
１０２：スケジューラの既存機能
１０３：空き領域抽出手段
１０４：周辺ノード選択手段
１０５：第１の温度計算手段
１０６：第２の温度計算手段
１０７：距離計算手段
１０８：温度グループ判別手段
１０９：空きノードキュー更新手段
１１０：ノードステータス変更手段
１１１：空きノードキュー
１１２：ノード情報テーブル
１０００：ノード群
【図１】
2011227747.tif 000007
【図２】
2011227747.tif 000008
【図３】
2011227747.tif 000009
【図４】
2011227747.tif 000010
【図５】
2011227747.tif 000011
【図６】
2011227747.tif 000012
【図７】
2011227747.tif 000013
【図８】
2011227747.tif 000014
【図９】
2011227747.tif 000015
【図１０】
2011227747.tif 000016
【図１１】
2011227747.tif 000017
【図１２】
2011227747.tif 000018
【図１３】
2011227747.tif 000019