(57)【要約】【課題】ジョブを実行するシステムの使用率を向上させることを課題とする。【解決手段】ジョブスケジューリング装置は、実行中のジョブが割り当てられ、メッシュ構造を有するＣＤＡを用いて、未割り当てである待機ジョブを割り当てる場合に、ジョブに対する割当イベントと解放イベントとにかかる情報を有するイベントリストを走査して、当該待機ジョブに対応するサブメッシュを予約する座標と時刻とを決定し、ＣＤＡに重ね合わせて配置させる。【選択図】図２
2010267025.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置の各々にジョブを割り当てるジョブスケジューリングプログラムにおいて、
前記複数の情報処理装置の各々に割り当てるジョブを、前記複数の情報処理装置にそれぞれ対応する配列要素に数値化して記憶する２次元配列を用いて、前記２次元配列においてジョブが割り当てられる配列要素に記憶された数値に基づいて、ジョブが相互に干渉する度合いを表す深度値を算出する深度値算出手順と、
前記深度値算出手順によって算出された深度値に基づいて、前記割り当てるジョブに対応する割り当て可能な配列要素を、前記２次元配列から検索する検索手順と、
前記検索手順によって割り当て可能な配列要素が存在する場合に、前記割り当てるジョブを前記割り当て可能な配列要素に数値化して配置する配置手順と、
をコンピュータに実行させることを特徴とするジョブスケジューリングプログラム。
【請求項２】
前記ジョブスケジューリングプログラムはさらに、
前記割り当てるジョブの割当イベントを走査する第一のポインタと、前記割り当てるジョブの解放イベントを走査する第二のポインタとを用いて、前記割当イベントおよび／または前記解放イベントの情報を含むイベントリストを走査する走査手順と、
前記走査手順による前記イベントリストの走査において、前記第一のポインタと前記第二のポインタとの期間内に、前記割り当てるジョブの割り当てが可能か否かを判定する割当判定手順とを、前記コンピュータに実行させることを特徴とする請求項１に記載のジョブスケジューリングプログラム。
【請求項３】
前記走査手順は、前記第二のポインタに基づいて前記イベントリストの走査を終了することを特徴とする請求項２に記載のジョブスケジューリングプログラム。
【請求項４】
前記深度値算出手順は、配列の一端から順番に前記深度値が変化する要素について差分値をさらに算出することを特徴とする請求項１に記載のジョブスケジューリングプログラム。
【請求項５】
複数の情報処理装置の各々にジョブを割り当てるジョブスケジューリング装置において、
前記複数の情報処理装置の各々に割り当てるジョブを、前記複数の情報処理装置にそれぞれ対応する配列要素に数値化して記憶する２次元配列を格納する記憶手段と、
前記記憶手段に格納された２次元配列を用いて、前記２次元配列においてジョブが割り当てられる配列要素に記憶された数値に基づいて、ジョブが相互に干渉する度合いを表す深度値を算出する深度値算出手段と、
前記深度値算出手段によって算出された深度値に基づいて、前記割り当てるジョブに対応する割り当て可能な配列要素を、前記２次元配列から検索する検索手段と、
前記検索手段によって割り当て可能な配列要素が存在する場合に、前記割り当てるジョブを前記割り当て可能な配列要素に数値化して配置する配置手段と、
を有することを特徴とするジョブスケジューリング装置。
【請求項６】
複数の情報処理装置の各々にジョブを割り当てるジョブスケジューリング方法において、
前記複数の情報処理装置の各々に割り当てるジョブを、前記複数の情報処理装置にそれぞれ対応する配列要素に数値化して記憶する２次元配列を用いて、前記２次元配列においてジョブが割り当てられる配列要素に記憶された数値に基づいて、ジョブが相互に干渉する度合いを表す深度値を算出するステップと、
前記深度値を算出するステップによって算出された深度値に基づいて、前記割り当てるジョブに対応する割り当て可能な配列要素を、前記２次元配列から検索するステップと、
前記割り当て可能な配列要素を検索するステップによって割り当て可能な配列要素が存在する場合に、前記割り当てるジョブを前記割り当て可能な配列要素に数値化して配置するステップと、
を含んだことを特徴とするジョブスケジューリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブスケジューリングプログラム、ジョブスケジューリング装置及びジョブスケジューリング方法に関する。
【背景技術】
【０００２】
近年、科学技術計算等を行う情報処理装置としてのスーパーコンピュータは、例えば、数万という数のノードを有している。そして、各ノードそれぞれは、網状のメッシュネットワークで接続される。このメッシュネットワークは、一つの態様として、複数のビルディングブロック単位が集合することによりメッシュネットワーク全体が構成されるため、ビルディングブロック単位で拡張することができるという特性、すなわち高拡張性であるという特性を有する。
【０００３】
また、スーパーコンピュータは、ジョブ間の通信干渉を防ぐために、システムをメッシュネットワークの一部を構成する長方形若しくは直方体の部分領域（以下、「サブメッシュ」と言う。）に区切り、区切られたシステムにジョブを割り当てて実行する。ところが、サブメッシュへのジョブの割当は、システムの断片化を引き起こし、ジョブが割り当てられないサブメッシュの存在により、システムの使用率低下の要因となり得る。
【０００４】
このようなスーパーコンピュータで運用される科学技術計算分野（いわゆるＨＰＣ（High  Performance  Computing）分野）においては、様々なジョブを実行しつつ、連続して稼動していることにより、特にサブメッシュにおける断片化の影響が深刻である。そこで、断片化を緩和するために、ジョブのスケジューリングにおいてバックフィルを行う技術がある。
【０００５】
ジョブの実行制御を行うスケジューリングでは、先行する規模が大きいジョブ又は当初の優先順位が上位のジョブが実行中のため、待機時間が長くなっている規模が小さいジョブ又は当初の優先順位が下位のジョブを、当該先行するジョブよりも優先順位を上げて実行させる方法がある。ここで、「規模が大きい」とは、「処理時間が長い」と同義であり、「規模が小さい」とは、「処理時間が短い」と同義である。このスケジューリング方法をバックフィル（Backfilling）という。
【０００６】
ここで、バックフィルには、保守的と積極的との２つのアルゴリズムが提案されている。例えば、積極的なバックフィルは、最も優先度の高い待機ジョブの実行開始時刻のみを保証し、保守的なバックフィルは、全ての待機ジョブの実行開始時刻を保証する。これらのことから、保守的なバックフィルは、特定のジョブがいつまでも開始されないスターベーション現象を回避することができるとともに、待機ジョブの実行開始時刻をユーザに提示することができるという長所がある。但し、一方で、保守的なバックフィルは、積極的なバックフィルと比較して計算量が大きくなるため、スケジューリング性能に影響を与えるという短所がある。
【０００７】
また、積極的なバックフィルでは、実行開始が不可能な待機ジョブに対しては何もしないため、積極的なバックフィルにおける計算量は、待機ジョブ数に比例する。一方、保守的なバックフィルでは、未来における計算資源（ハードウェア資源）の予約を行う。保守的なバックフィルにおける資源の予約は、資源獲得と資源解放との２つのイベントを有し、当該イベントは、時刻でソートされ、イベントリストと呼ばれるリストで管理される。
【０００８】
そして、保守的なバックフィルによるアルゴリズムでは、イベントリストを走査して、ジョブが必要とする計算資源（ハードウェア資源）を必要な期間確保できる時刻を探索してスケジューリングを行う。よって、保守的なバックフィルにおける計算量は、待機ジョブ数の二乗に比例することとなる。なお、積極的と保守的との双方のバックフィルでは、待機ジョブが実行開始可能か否かについて、優先度の高い待機ジョブから順番に判定される。
【０００９】
また、サブメッシュの割当は、計算量の大きい処理であり、サブメッシュの割当において同時にバックフィルを実施する場合には計算量がさらに大きくなる。このため、従来では、メッシュトポロジを意識した保守的なバックフィルの実用的な手法の開発が困難であり、積極的なバックフィル若しくはより簡易な手法が用いられている。例えば、簡易な手法としては、サブメッシュの予約を取り扱わずに、時間的に早く完了する小さいジョブについて、優先度を考慮することなく先に実行させる技術がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００５−３１０１３９号公報
【非特許文献】
【００１１】
【非特許文献１】Y．Zhu，  “Efficient  Processor  Allocation  Strategies  for  Mesh‐Connected  Parallel  Computers”，  Journal  of  Parallel  and  Distributed  Computing，  vol．16，  issue  4，  pp．328‐337，  Dec  1992．
【非特許文献２】Lifka，  D．A．  1995．  The  ANL／IBM  SP  Scheduling  System．  In  Proceedings  of  the  Workshop  on  Job  Scheduling  Strategies  For  Parallel  Processing  D．G．Feitelson  and  L．Rudolph，  Eds．  Lecture  Notes  In  Computer  Science，  vol．  949．  Springer‐Verlag，  London，  295‐303．
【非特許文献３】Mu’alem，  A．W．  and  Feitelson，  D．G．  2001．  Utilization，  Predictability，  Workloads，  and  User  Runtime  Estimates  in  Scheduling  the  IBM  SP2  with  Backfilling．  IEEE  Trans．  Parallel  Distrib．  Syst．  12，  6  （Jun．2001），  529‐543．
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述した従来技術では、ジョブを実行するシステムの使用率が低下するという課題がある。具体的には、優先度を考慮することなく小さいジョブを先に実行させる技術では、時間のかかる大きいジョブのスターベーションが発生し得るため、実行開始が遅れたジョブの優先度を上げるなどのポリシーの導入を要する。このとき、優先度の操作は、実行開始が遅れたジョブに対して行なわれるため、大きいジョブの実行開始が遅れることを避けることができない。さらに、優先度が高まった大きいジョブに対しては、バックフィルによる追い越しが実質的に不可となる。この結果、上述した従来技術では、ジョブを実行するシステムの使用率が低下する。
【００１３】
そこで、本願に開示する技術は、上記に鑑みてなされたものであって、ジョブを実行するシステムの使用率を向上させることが可能であるジョブスケジューリングプログラム、ジョブスケジューリング装置及びジョブスケジューリング方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するため、本願に開示するジョブスケジューリングプログラムは、複数の情報処理装置の各々にジョブを割り当てるジョブスケジューリングプログラムにおいて、前記複数の情報処理装置の各々に割り当てるジョブを、前記複数の情報処理装置にそれぞれ対応する配列要素に数値化して記憶する２次元配列を用いて、前記２次元配列においてジョブが割り当てられる配列要素に記憶された数値に基づいて、ジョブが相互に干渉する度合いを表す深度値を算出する深度値算出手順と、前記深度値算出手順によって算出された深度値に基づいて、前記割り当てるジョブに対応する割り当て可能な配列要素を、前記２次元配列から検索する検索手順と、前記検索手順によって割り当て可能な配列要素が存在する場合に、前記割り当てるジョブを前記割り当て可能な配列要素に数値化して配置する配置手順と、をコンピュータに実行させる。
【発明の効果】
【００１５】
本願に開示するジョブスケジューリングプログラム、ジョブスケジューリング装置及びジョブスケジューリング方法の一つの様態によれば、ジョブを実行するシステムの使用率を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、ジョブスケジューリング装置を含む構成の例について説明するための図である。
【図２】図２は、待機ジョブの割り当てについて説明するための図である。
【図３】図３は、実施例１に係るジョブスケジューリング装置の構成例を示す図である。
【図４】図４は、実行中ジョブリストの例を示す図である。
【図５】図５は、待機ジョブリストの例を示す図である。
【図６】図６は、イベントリストの例を示す図である。
【図７】図７は、実施例１に係る待機ジョブ割当処理の流れを説明するためのフローチャートである。
【図８】図８は、待機ジョブ割当処理に沿ったＣＤＡの例を示す図である。
【図９】図９は、待機ジョブ割当処理に沿ったＣＤＡの例を示す図である。
【図１０】図１０は、待機ジョブ割当処理に沿ったＣＤＡの例を示す図である。
【図１１】図１１は、待機ジョブ割当処理に沿ったＣＤＡの例を示す図である。
【図１２】図１２は、待機ジョブ割当処理に沿ったＣＤＡの例を示す図である。
【図１３】図１３は、ジョブ割当期間のタイムチャートを示す図である。
【図１４】図１４は、待機ジョブ割当処理に沿ったイベントリストの例を示す図である。
【図１５】図１５は、待機ジョブ割当処理に沿ったイベントリストの例を示す図である。
【図１６】図１６は、待機ジョブ割当処理に沿ったイベントリストの例を示す図である。
【図１７】図１７は、差分値を格納するＣＤＡの例を説明するための図である。
【図１８】図１８は、ジョブスケジューリングプログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１７】
以下に添付図面を参照して、本願に開示するジョブスケジューリングプログラム、ジョブスケジューリング装置及びジョブスケジューリング方法の実施例を説明する。なお、以下の実施例により本発明が限定されるものではない。
【実施例１】
【００１８】
最初に、図１を用いて、本願に開示するジョブスケジューリング装置を含むシステム構成について説明する。図１は、ジョブスケジューリング装置を含む構成の例について説明するための図である。
【００１９】
本願に開示するジョブスケジューリング装置は、図１に示すように、例えば、並列計算機に接続され、当該並列計算機に対してジョブの実行を指示する。一方、並列計算機は、複数のノードを有し、ジョブスケジューリング装置からのジョブ実行指示に従って、該当するジョブを各ノードで実行させる。ここで、並列計算機は、例えば、複数の情報処理装置を有するシステム、複数の制御ユニット（システムボード又はブレード）を有する情報処理装置等の密結合型システムであっても、複数の情報処理装置がネットワークで接続されるいわゆる疎結合型システムであっても良い。
【００２０】
また、ジョブスケジューリング装置は、複数のユーザが所有するＰＣ（Personal  Computer）等の端末装置からのジョブ投入を受け付ける。図１では、複数のユーザの例として、ユーザＡ、ユーザＢおよびユーザＣを図示している。これらのユーザは、並列計算機で実行させるジョブをＰＣが有するキーボードやマウスなどの入力装置を利用して入力する。
【００２１】
そして、ジョブスケジューリング装置からのジョブ実行指示に従って、該当するジョブを各ノードで実行させた並列計算機は、ジョブ実行指示などに対する応答メッセージ、ジョブの完了および異常通知のイベント通知メッセージなどをジョブスケジューリング装置に対して送信する。
【００２２】
上述した構成において、ジョブスケジューリング装置は、待機ジョブに対して優先度の高い順に計算資源（ハードウェア資源）としてのサブメッシュの予約を付与する。具体的には、ジョブスケジューリング装置は、最初に空のイベントリストを作成し、実行中ジョブのサブメッシュ解放イベントを追加し、次に待機ジョブから優先度の高い順にサブメッシュの予約を行う。
【００２３】
そして、ジョブスケジューリング装置は、サブメッシュの予約としてイベントリストを走査し、サブメッシュを予約する座標と時刻とが決定すると、当該イベントリストにサブメッシュ獲得イベントとサブメッシュ解放イベントとを追加する。サブメッシュ獲得イベントは、例えば、待機ジョブを割り当てる位置と時刻との指定を含むものである。また、サブメッシュ解放イベントは、例えば、実行中ジョブを解放する時刻の指定を含むものである。なお、ジョブスケジューリング装置は、これらの処理を繰り返し実施することにより、全ての待機ジョブに対してサブメッシュの予約を付与する。
【００２４】
ここで、図２を用いて、待機ジョブの割り当てについて説明する。図２は、待機ジョブの割り当てについて説明するための図である。
【００２５】
例えば、待機ジョブの割り当てについては、前面アンカー・ポインタ「ＦＰ（Front  anchor  Pointer）」、背面アンカー・ポインタ「ＲＰ（Rear  anchor  Pointer）」およびカバレッジ深度配列「ＣＤＡ（Coverage  Depth  Array）」を利用する。
【００２６】
このうち、ＦＰおよびＲＰは、イベントリストを走査するポインタである。そして、ＣＤＡは、図２に示すように、サブメッシュ割り当ての可否判定であるカバレッジを重ね合わせて保持する。イベントリストは、時刻でソートされており、ＲＰはＦＰを追い越さないように、すなわち、ＲＰのイベント時間がＦＰのイベント時間より先の時間にならないように走査される。
【００２７】
このＣＤＡの各要素には、対応するノードを原点として待機ジョブを実行すると、イベントリストに登録されたジョブと干渉する数が格納されている。そして、ジョブスケジューリング装置は、ＦＰでサブメッシュ獲得イベントを処理する際に、対応するカバレッジをＣＤＡに重ね合わせ、ＲＰでサブメッシュ獲得イベントを処理する際に、対応するカバレッジをＣＤＡから除去する。要するに、ＣＤＡでは、所定の座標に格納された数を調べることで、当該所定の座標に待機ジョブを割り当てると、ＦＰとＲＰとの間に存在する割り当て済みのジョブと干渉するかどうかがわかる。
【００２８】
図２において、ＣＤＡは、８×８のサブメッシュ構造を有しており、当該サブメッシュに４つのジョブが割り当てられている。そして、図２では、このＣＤＡに対して４×３のジョブを割り当てる場合を示している。また、図２の左図では、４つのジョブが割り当てられているサブメッシュが示されており、サブメッシュ割り当ての可否判定であるカバレッジを重ね合わせているために、サブメッシュ同士に重なりが生じている。
【００２９】
そして、ジョブスケジューリング装置は、４×３のジョブを割り当てる場合に、図２の右図に示すように、８×８のメッシュという制限に基づき、４×３のサブメッシュを、各ノードの原点に割り当てることができないノードを「Ｒｅｊｅｃｔ  Ｓｅｔ」とする。続いて、ジョブスケジューリング装置は、図２の左図に示したサブメッシュに対応するカバレッジを作成する。図２の左図に示したサブメッシュに対応するカバレッジは、図２の右図における破線の長方形となる。
【００３０】
このカバレッジは、４×３のサブメッシュを割り当てる場合に、既に割り当てられたサブメッシュと４×３のサブメッシュが重なることにより、互いに干渉する範囲を示している。すなわち、８×８のメッシュにおいて縦軸と横軸から、割り当てる４×３のサブメッシュの各辺の長さを１減じた領域、すなわち既に割り当てられたサブメッシュを原点方向に（３，２）だけ拡張した長方形である。
【００３１】
このようにして待機ジョブが割り当てられた結果、ＣＤＡにおいて、「０」の値を有するノードが出現し、当該ノードがサブメッシュの割り当てが可能な原点となる。図２では、座標（４，０）のノードが「０」の値を有するノードとして該当する。要するに、ジョブスケジューリング装置は、ＣＤＡにおいて、Ｒｅｊｅｃｔ  Ｓｅｔ以外、かつ当該ＣＤＡで「０」の値を持つノードをサブメッシュの割り当てが可能な原点として、待機ジョブを割り当てる。なお、ジョブスケジューリング装置は、待機ジョブの数だけ上記処理を実行して、待機ジョブの割り当てを行う。
【００３２】
つまり、ジョブスケジューリング装置は、実行中のジョブが配置されたＣＤＡに未割当の待機ジョブを配置する場合に、割り当て可能なメッシュの位置と時刻とを重ね合わせて配置するので、ジョブを実行するシステムの使用率を向上させることができる。
【００３３】
［ジョブスケジューリング装置の構成］
次に、図３を用いて、実施例１に係るジョブスケジューリング装置の構成を説明する。図３は、実施例１に係るジョブスケジューリング装置の構成例を示す図である。
【００３４】
図３に示すように、ジョブスケジューリング装置１００は、入力部１０１と、表示部１０２と、記憶部１１０と、制御部１２０とを有する。そして、このジョブスケジューリング装置１００は、例えば、各種ジョブを実行する並列計算機に接続され、当該並列計算機に対してジョブの実行を指示する。また、ジョブスケジューリング装置は、例えば、複数のＰＣと接続され、当該ＰＣからのジョブの投入を受け付ける。
【００３５】
入力部１０１は、例えば、キーボードやマウスなどを有し、ジョブスケジューリング装置１００における各種情報の入力を受け付ける。また、表示部１０２は、例えば、表示装置としてのモニタ（若しくはディスプレイ、タッチパネルなど）やスピーカなどを有し、ジョブスケジューリング装置１００における各種情報を表示出力する。
【００３６】
記憶部１１０は、制御部１２０による各種処理に必要なデータや、制御部１２０による各種処理結果を記憶する。例えば、記憶部１１０は、実行中ジョブリストと、待機ジョブリストと、イベントリストと、ＣＤＡ（図２参照）とを記憶する。
【００３７】
記憶部１１０によって記憶される実行中ジョブリストは、例えば、図４に示すように、並列計算機において実行されているジョブの情報を有し、開始時刻、座標、大きさ、利用時間およびユーザ名などを含む。
【００３８】
このうち、開始時刻は、ジョブが並列計算機において実行開始された時刻の情報である。また、座標および大きさは、ＣＤＡにおけるジョブの原点と当該ジョブの大きさとを表す情報である。また、利用時間は、ジョブの実行にかかる時間の情報である。また、ユーザ名は、ジョブスケジューリング装置１００に接続されるＰＣのユーザ名を表す情報である。なお、図４は、実行中ジョブリストの例を示す図である。
【００３９】
また、待機ジョブリストは、例えば、図５に示すように、ジョブスケジューリング装置１００に接続されるＰＣからのジョブ投入にかかる情報を有し、ジョブ投入時刻、優先度、大きさ、利用時間およびユーザ名などを含む。
【００４０】
このうち、ジョブ投入時刻は、ジョブスケジューリング装置１００に接続されるＰＣからのジョブ投入時刻の情報である。また、優先度は、実行するジョブの優先度合いを表す情報であり、数値が大きいほど優先度が高くなる。また、大きさは、ＣＤＡにおけるジョブの大きさを表す情報である。また、利用時間は、ジョブの実行にかかる時間の情報である。また、ユーザ名は、ジョブスケジューリング装置１００に接続されるＰＣのユーザ名を表す情報である。なお、図５は、待機ジョブリストの例を示す図である。
【００４１】
また、イベントリストは、例えば、図６に示すように、実行中ジョブおよび待機ジョブそれぞれにおけるアドレス、次アドレス、時刻、種別、座標および大きさなどの情報を含む。そして、イベントリストは、時刻でソートされている。
【００４２】
このうち、アドレスは、イベントを識別する情報であり、次アドレスは、当該イベントの次に実行されるイベントを示す識別情報である。また、時刻は、イベントが実行される時刻の情報である。また、種別は、イベントの種別を表す情報であり、例えば、「解放」或いは「割当」の情報を有する。また、座標および大きさは、ＣＤＡにおけるジョブの原点と当該ジョブの大きさとを表す情報である。
【００４３】
要するに、イベントリストには、実行中ジョブである場合に種別が「解放」であるイベント、待機ジョブである場合に種別が「割当」および「解放」であるイベントの情報が含まれることとなる。例えば、イベントリストにおける座標と大きさとが同一である情報は、一つのジョブに対する割当イベントと解放イベントとを表している。なお、図６は、イベントリストの例を示す図である。
【００４４】
制御部１２０は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有するとともに、特に、メッセージ送受信部１２１と、リスト制御部１２２と、ジョブ割当制御部１２３と、ポインタ制御部１２４とを有する。より具体的には、制御部１２０は、演算処理装置としてのＣＰＵ（Central  Processing  Unit）を、メッセージ送受信部１２１、リスト制御部１２２、ジョブ割当制御部１２３、及び、ポインタ制御部１２４として機能させることにより、実現することができる。
【００４５】
メッセージ送受信部１２１は、ジョブスケジューリング装置１００に接続される並列計算機との間でやり取りされる各種情報を送受信する。例えば、メッセージ送受信部１２１は、後述するジョブ割当制御部１２３によって割り当てられたジョブの実行開始のタイミングで、並列計算機に対してジョブの実行を指示する旨のメッセージを送信する。また、例えば、メッセージ送受信部１２１は、ジョブスケジューリング装置１００に接続される並列計算機からジョブの実行が完了した旨のメッセージを受信して、後述するリスト制御部１２２に対して当該完了した旨のメッセージを通知する。
【００４６】
リスト制御部１２２は、記憶部１１０に記憶される各種リストの制御を実施する。例えば、リスト制御部１２２は、ジョブスケジューリング装置１００に接続されるＰＣからのジョブ投入を受け付けて、受け付けたジョブを待機ジョブリストに追加して、待機ジョブリストにジョブを追加した旨をジョブ割当制御部１２３およびポインタ制御部１２４に通知する。
【００４７】
また、例えば、リスト制御部１２２は、メッセージ送受信部１２１によって受信された並列計算機からのジョブ完了のメッセージの通知に従って、実行中ジョブリストから該当するジョブを削除して、実行中ジョブリストからジョブを削除した旨をジョブ割当制御部１２３およびポインタ制御部１２４に通知する。また、例えば、リスト制御部１２２は、ジョブ割当制御部１２３或いはポインタ制御部１２４からの通知に従って、イベントリストを作成したり更新したりする。
【００４８】
ジョブ割当制御部１２３は、待機ジョブリストに含まれる待機ジョブの割り当てを、ＣＤＡを更新することにより実施する。例えば、ジョブ割当制御部１２３は、リスト制御部１２２によって待機ジョブが追加された旨を通知された場合に、当該追加された待機ジョブの割り当てをＣＤＡに配置させることにより行う。そして、ジョブ割当制御部１２３は、ポインタ制御部１２４と連携しつつＣＤＡへの待機ジョブの配置に伴い、リスト制御部１２２に対してイベントリストの更新を依頼したり、割り当てられたジョブの実行開始タイミングでメッセージ送受信部１２１に当該ジョブの実行指示を並列計算機に対して送信する指示を行なったりする。
【００４９】
ポインタ制御部１２４は、イベントリストを走査するポインタを制御する。例えば、ポインタ制御部１２４は、サブメッシュ獲得イベントを走査する前面アンカー・ポインタＦＰと、サブメッシュ解放イベントを走査する背面アンカー・ポインタＲＰとを用いて、イベントリストを走査させる。
【００５０】
［待機ジョブ割当処理］
次に、図７を用いて、実施例１に係る待機ジョブ割当処理の流れを説明する。図７は、実施例１に係る待機ジョブ割当処理の流れを説明するためのフローチャートである。なお、以下では、実行中ジョブの解放にかかる情報を含むイベントリストが予め作成されており、当該イベントリストは、時間の早い順でソートされているものとする。また、以下の処理は、ジョブスケジューリング装置１００に接続される並列計算機によるジョブ完了のメッセージの通知、または接続されるＰＣからのジョブ投入による待機ジョブの登録が実施された場合に、待機ジョブの数だけ実行される処理である。
【００５１】
例えば、図７に示すように、ジョブスケジューリング装置１００は、接続される並列計算機によるジョブ完了のメッセージの通知または接続されるＰＣによるジョブ投入が実施された場合に、ＣＤＡを０にクリアする（ステップＳ１０１）。そして、ジョブスケジューリング装置１００は、イベントリストに含まれるジョブのサブメッシュのカバレッジをＣＤＡに足し合わせる（ステップＳ１０２）。このカバレッジをＣＤＡに足し合わせるとは、サブメッシュ同士の重なり度合い、すなわち互いのジョブが干渉し合う深さを値で示したものである。例えば、この時点において、２つのサブメッシュが重なり合っている場合には、値「２」となり、１つのサブメッシュのみの配列である場合には、値「１」となる。
【００５２】
続いて、ジョブスケジューリング装置１００は、ＲＰをイベントリストの先頭を指し示すように初期化する（ステップＳ１０３）。その後、ジョブスケジューリング装置１００は、ＦＰをイベントリストにおける最初のサブメッシュ獲得イベントを指し示すように初期化する（ステップＳ１０４）。
【００５３】
そして、ジョブスケジューリング装置１００は、ＦＰがイベントリストの末尾に到達しているか否かを判定し（ステップＳ１０５）、ＦＰがイベントリストの末尾に到達していない場合に（ステップＳ１０５否定）、ＦＰとＲＰとの間のイベント時刻差が待機ジョブの割当期間以上であるか否かを判定する（ステップＳ１０６）。
【００５４】
続いて、ジョブスケジューリング装置１００は、ＦＰとＲＰとの間のイベント時刻差が待機ジョブの割当期間未満である場合に（ステップＳ１０６否定）、ＦＰが位置するサブメッシュ獲得イベントの処理として、当該ＦＰに該当するサブメッシュのカバレッジをＣＤＡに足し合わせる（ステップＳ１０７）。このカバレッジをＣＤＡに足し合わせるとは、この時点において、ＦＰによって指し示されたサブメッシュのカバレッジの値それぞれに「１」を加算することである。
【００５５】
その後、ジョブスケジューリング装置１００は、ＦＰの位置を次のサブメッシュ獲得イベントに移動して（ステップＳ１０８）、ステップＳ１０５の処理を実施する。また、ジョブスケジューリング装置１００は、ＦＰがイベントリストの末尾に到達している場合（ステップＳ１０５肯定）、または、ＦＰとＲＰとの間のイベント時刻差が待機ジョブの割当期間以上である場合に（ステップＳ１０６肯定）、ＣＤＡ上に０値の要素があるか否かを判定する（ステップＳ１０９）。
【００５６】
そして、ジョブスケジューリング装置１００は、ＣＤＡ上に０値の要素がない場合に（ステップＳ１０９否定）、ＲＰの位置を次のサブメッシュ解放イベントに移動する（ステップＳ１１０）。続いて、ジョブスケジューリング装置１００は、ＲＰが位置するサブメッシュ解放イベントの処理として、当該ＲＰに該当するサブメッシュのカバレッジをＣＤＡから差し引く（ステップＳ１１１）。このカバレッジをＣＤＡから差し引くとは、この時点において、ＲＰによって指し示されたサブメッシュのカバレッジの値それぞれから「１」を減算することである。
【００５７】
その後、ジョブスケジューリング装置１００は、ＦＰとＲＰとの間の時刻差が待機ジョブの割当期間以上であるか否かを判定する（ステップＳ１１２）。そして、ジョブスケジューリング装置１００は、ＦＰとＲＰとの間の時刻差が待機ジョブの割当期間未満である場合に（ステップＳ１１２否定）、ステップＳ１０５の処理を実施する。また、ジョブスケジューリング装置１００は、ＦＰとＲＰとの間の時刻差が待機ジョブの割当期間以上である場合に（ステップＳ１１２肯定）、ステップＳ１０９の処理を実施する。
【００５８】
また、ジョブスケジューリング装置１００は、ステップＳ１０９において、ＣＤＡ上に０値の要素がある場合に（ステップＳ１０９肯定）、処理を終了する。なお、ジョブスケジューリング装置１００は、上記処理を待機ジョブの数だけ繰り返し実施する。
【００５９】
ここで、図８〜図１６を用いて、図７に示した処理フローに従って待機ジョブを割り当てる具体例を説明する。図８〜図１２は、待機ジョブ割当処理に沿ったＣＤＡの例を示す図である。また、図１３は、ジョブ割当期間のタイムチャートを示す図である。また、図１４〜図１６は、待機ジョブ割当処理に沿ったイベントリストの例を示す図である。
【００６０】
そして、以下では、図４に示した実行中ジョブリストと、図５に示した待機ジョブリストとを用いて、イベントリストを作成しつつ、待機ジョブをＣＤＡに配置する例を説明することとする。なお、実行中ジョブのサブメッシュは、実行中ジョブリストより、図８に示すようなものとなる。図８では、各メッシュに番号（１）〜（３）を割り振っている。
【００６１】
例えば、ジョブスケジューリング装置１００は、実行中ジョブリストに基づいて、イベントリストを作成する（図１４参照）。図１４に示したイベントリストは、時刻の早い順にソートされており、種別としては、全てのジョブが実行中であるため、「解放」のイベントのみが登録される。なお、図１４では、各イベントをＣＤＡ（図８参照）におけるメッシュに対応した番号（１）〜（３）を割り振っている。
【００６２】
続いて、ジョブスケジューリング装置１００は、ＣＤＡを０にクリアする。その後、ジョブスケジューリング装置１００は、待機ジョブリストに含まれる大きさ（８，３）の待機ジョブを割り当てる場合に、図９に示すように、実行中ジョブのサブメッシュを原点方向に（７，２）拡張するとともに、この時点でのカバレッジをＣＤＡに足し合わせる。
【００６３】
そして、ジョブスケジューリング装置１００は、ＲＰをイベントリストの先頭に初期化して、ＲＰ＝「８１Ｂ４００２０ｈ」とする。また、ジョブスケジューリング装置１００は、ＦＰを最初のサブメッシュ獲得イベントに初期化して、ＦＰ＝「００００００００ｈ」とする。なお、この時点で、イベントリストには、実行中のジョブだけが含まれているため、サブメッシュ獲得イベントが存在しない。このため、ＦＰのサブメッシュ獲得イベントへの初期化では、イベントリストにおいて、未割当のアドレスを表す「００００００００ｈ」にＦＰを位置させることとなる。
【００６４】
続いて、ジョブスケジューリング装置１００は、ＦＰ＝「００００００００ｈ」がイベントリストの末尾に到達していることにより、ＣＤＡ上（図９参照）で０値の要素があるか否かを判定する。その後、ジョブスケジューリング装置１００は、ＣＤＡ上で０値の要素がないことにより、ＲＰを次のサブメッシュ獲得イベントに移動させて、ＲＰ＝「８１Ｂ４００１０ｈ」とする。
【００６５】
そして、ジョブスケジューリング装置１００は、ＲＰ＝「８１Ｂ４００１０ｈ」が位置するサブメッシュ解放イベントの処理として、当該ＲＰに該当するサブメッシュ「（２）」のカバレッジをＣＤＡから差し引く（図１０参照）。続いて、ジョブスケジューリング装置１００は、ＦＰとＲＰとの間の時刻差「１２時間４３秒」が待機ジョブの割当期間「４時間」以上であることにより、ＣＤＡ上（図１０参照）で０値の要素があるか否かを判定する。
【００６６】
その後、ジョブスケジューリング装置１００は、ＣＤＡ上で０値の要素が座標（０，０）に存在することにより、処理を終了する。このようにして割り当てられた待機ジョブを（４）とすると、当該待機ジョブは、図１１に示すように、座標（０，０）を原点とし、（８，３）の大きさを有するサブメッシュとなる。また、（４）をイベントリストに追加する場合には、図１５に示すように、（２）と（１）との解放イベントの間に、（４）の割当イベントと解放イベントとが含まれることとなる。
【００６７】
また、ジョブスケジューリング装置１００は、待機ジョブリストに含まれる大きさ（５，３）の待機ジョブに対しても、上記と同様の処理を実施してＣＤＡ上に配置させる。大きさ（５，３）の待機ジョブを（５）とすると、当該待機ジョブは、図１２に示すように、座標（３，５）を原点とするサブメッシュとなる。また、（５）をイベントリストに追加する場合には、図１６に示すように、（３）と（２）との解放イベントの間に（５）の割当イベント、（１）の解放イベント以降に（５）の解放イベントが含まれることとなる。
【００６８】
以上より、（１）〜（５）のジョブ割当期間のタイムチャートは、図１３に示すように、（３）の解放イベントと同時に（５）の割当イベントが開始され、（２）の解放イベントと同時に（４）の割当イベントが開始される。また、（４）のジョブは、（２）の解放イベントと（１）の解放イベントとの間に割当イベントおよび解放イベントが実行される。そして、（５）の解放イベントは、（１）の解放イベント以降に実行される。
【００６９】
［実施例１による効果］
上述したように、ジョブスケジューリング装置１００は、割り当てジョブ同士の干渉度合いを示すＣＤＡを用いて、サブメッシュの割り当てを重ね合わせて配置させることにより、小さい計算量で待機ジョブを割り当てるので、ジョブを実行するシステムの使用率を向上させることができる。
【実施例２】
【００７０】
さて、これまで本願に開示するジョブスケジューリング装置の実施例について説明したが、上述した実施例以外にも種々の異なる形態にて実施されてよいものである。そこで、（１）ＲＰの走査範囲を制限、（２）ＣＤＡに差分値を格納、（３）ジョブスケジューリング装置の構成、（４）プログラム、において異なる実施例を説明する。
【００７１】
（１）ＲＰの走査範囲を制限
上記実施例１では、該当するジョブのサブメッシュの予約を行うまでＲＰを走査する場合を説明したが、ＲＰの走査範囲を制限することにより、積極的なバックフィルを実現することができる。
【００７２】
例えば、ジョブスケジューリング装置１００は、図７のステップＳ１１０において、ＲＰが走査範囲を逸脱した場合に、その時点で割当可能なサブメッシュの検索を中止して、該当ジョブにサブメッシュの予約を実施しない。また、さらに、ＲＰの走査については、当該ＲＰの走査を一切行うことなく、図７のステップＳ１１０において、サブメッシュの検索を中止することとしても良く、この場合が最も積極的なバックフィルとなる。
【００７３】
（２）ＣＤＡに差分値を格納
また、上記実施例１では、あるノードを原点とするサブメッシュ割当の可否判定をＣＤＡ上で実現する場合を説明したが、カバレッジの端の要素に差分値を格納することにより、ＣＤＡの更新をより高速化することができる。
【００７４】
図１７を用いて、差分値を格納するＣＤＡを説明する。図１７は、差分値を格納するＣＤＡの例を説明するための図である。なお、以下では、ＣＤＡ上で０値の要素を検索する順序が決まっている場合について説明する。
【００７５】
例えば、図１７の上段に示したカバレッジには、３つのジョブが含まれている。そして、３つのジョブ分のカバレッジを全要素更新した場合には、図１７の中段に示すように、ＣＤＡの更新において、加算１４回分の更新を要することとなる。一方で、差分値を格納する場合には、図１７の下段に示すように、ＣＤＡの更新において、加算が３回および減算が２回の計５回の更新を要する。なお、差分値の格納では、ＣＤＡ上で順番に値を加算し、当該加算後に加算の結果が０値となる要素が検索されることとなる。
【００７６】
（３）ジョブスケジューリング装置の構成
また、上記文書中や図面中などで示した処理手順、制御手順、具体的名称、各種のデータやパラメタなどを含む情報（例えば、「イベントリスト」に含まれるデータなど）については、特記する場合を除いて任意に変更することができる。
【００７７】
また、図示した各装置の各構成要素は、機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は、図示のものに限られず、例えば、メッセージ送受信部１２１を、メッセージ送信部とメッセージ受信部とに分散するなど、その全部または一部を各種の負担や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合することができる。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、演算処理装置としてのＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、或いは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７８】
（４）プログラム
ところで、上記実施例では、ハードウェアロジックによって各種の処理を実現する場合を説明したが、予め用意されたプログラムをコンピュータで実行することによって実現するようにしても良い。そこで、以下では、図１８を用いて、上記実施例に示したジョブスケジューリング装置１００と同様の機能を有するジョブスケジューリングプログラムを実行するコンピュータの一例を説明する。図１８は、ジョブスケジューリングプログラムを実行するコンピュータを示す図である。
【００７９】
図１８に示すように、ジョブスケジューリング装置１００としてのコンピュータ１１は、バス１８で接続されるＨＤＤ１３、ＣＰＵ１４、ＲＯＭ１５およびＲＡＭ１６などを有する。
【００８０】
ＲＯＭ１５には、上記実施例１に示したジョブスケジューリング装置１００と同様の機能を発揮するジョブスケジューリングプログラム、つまり、図１８に示すように、メッセージ送受信プログラム１５ａと、リスト制御プログラム１５ｂと、ジョブ割当制御プログラム１５ｃと、ポインタ制御プログラム１５ｄとが、予め記憶されている。なお、これらのプログラム１５ａ〜プログラム１５ｄについては、図３に示したジョブスケジューリング装置１００の各構成要素と同様、適宜統合または分散しても良い。
【００８１】
そして、ＣＰＵ１４がこれらのプログラム１５ａ〜プログラム１５ｄをＲＯＭ１５から読み出して実行することで、図１８に示すように、プログラム１５ａ〜プログラム１５ｄは、メッセージ送受信プロセス１４ａと、リスト制御プロセス１４ｂと、ジョブ割当制御プロセス１４ｃと、ポインタ制御プロセス１４ｄとして機能するようになる。なお、プロセス１４ａ〜プロセス１４ｄは、図３に示した、メッセージ送受信部１２１と、リスト制御部１２２と、ジョブ割当制御部１２３と、ポインタ制御部１２４とに対応する。
【００８２】
そして、ＣＰＵ１４はＲＡＭ１６に記録されたデータ（例えば、実行中ジョブリスト、待機ジョブリスト、イベントリストおよびＣＤＡなど）に基づいてジョブスケジューリングプログラムを実行する。
【００８３】
なお、上記各プログラム１５ａ〜プログラム１５ｄについては、必ずしも最初からＲＯＭ１５に記憶させておく必要はなく、例えば、コンピュータ１１に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」、またはコンピュータ１１の内外に備えられるＨＤＤなどの「固定用の物理媒体」、さらには公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１１に接続される「他のコンピュータ（またはサーバ）」などに各プログラムを記憶させておき、コンピュータ１１がこれから各プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００８４】
１００  ジョブスケジューリング装置
１０１  入力部
１０２  表示部
１１０  記憶部
１２０  制御部
１２１  メッセージ送受信部
１２２  リスト制御部
１２３  ジョブ割当制御部
１２４  ポインタ制御部
【図１】
2010267025.tif 000003
【図２】
2010267025.tif 000004
【図３】
2010267025.tif 000005
【図４】
2010267025.tif 000006
【図５】
2010267025.tif 000007
【図６】
2010267025.tif 000008
【図７】
2010267025.tif 000009
【図８】
2010267025.tif 000010
【図９】
2010267025.tif 000011
【図１０】
2010267025.tif 000012
【図１１】
2010267025.tif 000013
【図１２】
2010267025.tif 000014
【図１３】
2010267025.tif 000015
【図１４】
2010267025.tif 000016
【図１５】
2010267025.tif 000017
【図１６】
2010267025.tif 000018
【図１７】
2010267025.tif 000019
【図１８】
2010267025.tif 000020