JP2016091069A - ジョブ管理プログラム、ジョブ管理方法、およびジョブ管理装置 - Google Patents

ジョブ管理プログラム、ジョブ管理方法、およびジョブ管理装置 Download PDF

Info

Publication number
JP2016091069A
JP2016091069A JP2014220910A JP2014220910A JP2016091069A JP 2016091069 A JP2016091069 A JP 2016091069A JP 2014220910 A JP2014220910 A JP 2014220910A JP 2014220910 A JP2014220910 A JP 2014220910A JP 2016091069 A JP2016091069 A JP 2016091069A
Authority
JP
Japan
Prior art keywords
nodes
range
node
axis
job
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014220910A
Other languages
English (en)
Other versions
JP6413634B2 (ja
Inventor
真 中島
Makoto Nakajima
真 中島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014220910A priority Critical patent/JP6413634B2/ja
Priority to US14/828,555 priority patent/US9329898B1/en
Priority to EP15182489.3A priority patent/EP3015982A1/en
Publication of JP2016091069A publication Critical patent/JP2016091069A/ja
Application granted granted Critical
Publication of JP6413634B2 publication Critical patent/JP6413634B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

【課題】ノードを有効活用しながらも、ジョブ間通信の性能低下を抑制できるようにする。【解決手段】コンピュータは、利用ノード数を指定したジョブ実行要求に応じて、複数のノードがメッシュ結合またはトーラス結合で接続されたネットワークを表すn(nは2以上の整数)次元の空間のn個の軸から、順番に決定対象軸を選択する。次にコンピュータは、決定対象軸の座標値の候補範囲の幅を所定値から広げていく。このときコンピュータは、範囲が決定した軸の座標値が該範囲内であり、決定対象軸の座標値が候補範囲内である利用可能なノードの数が、利用ノード数以上となったときの候補範囲を、決定対象軸の座標値の範囲に決定する。そしてコンピュータは、すべての軸について座標値の範囲が決定すると、各軸の決定した範囲内の座標値を有する利用可能な第1ノードの中から、ジョブに割り当てる第2ノードを決定する。【選択図】図1

Description

本発明は、ジョブ管理プログラム、ジョブ管理方法、およびジョブ管理装置に関する。
HPC(High Performance Computing)の分野では、多数のコンピュータ(以下ノードと呼ぶ)を接続して並列計算が行われる。ノードの接続形態には、メッシュ結合やトーラス結合がある。メッシュ結合は、複数の軸方向にメッシュ状にノードを並べ、各軸方向に隣接するノード同士をインターコネクトと呼ばれる高速ネットワークで接続する接続形態である。トーラス結合は、メッシュ結合の接続をした上で、各軸の両端のノード同士を接続する接続形態である。すべての軸がメッシュ結合またはトーラス結合であるネットワークや、一部の軸がメッシュ結合で残りの軸はトーラス結合であるような接続形態も存在する。
HPCで実行するジョブには、そのジョブを実行するノードの割り当てが行われる。複数のジョブを実行すると、複数のジョブそれぞれのノード間通信が、共通のノードを経由する場合がある。この場合、通信経路を共有する複数のジョブにおいて同時にデータが通信されると、通信干渉が発生する。通信干渉が発生すると、通信に想定以上の時間がかかる。このような通信干渉が度重なると、ジョブの処理が予定時間内に完了できない可能性がでてくる。
そこで、ネットワーク上で互いに隣接し、かつ、形状がサブメッシュやサブトーラス(矩形形状)となるようなノード群のみを選択して、そのノード群内のノードをジョブに割り当てる技術が存在する。この技術では、サブメッシュ/サブトーラスを1ジョブが専有する。そのため、異なるジョブのノード間通信が干渉することがなくなる。
なおジョブに対するノードの割り当てに関する他の技術としては、例えば、複数の単位ジョブを連続した長方形状又は直方体形状を割り当てる計算ノードである空きノードを、効率良く検索することができるジョブ管理装置が考えられている。また超並列型スーパーコンピュータでの問題レイアウトを最適化するための技術もある。
国際公開第2012/020474号 特表2008−516346号公報
しかし、ジョブに割り当てるノードの範囲形状をサブメッシュ/サブトーラスに限定すると、内包する全ノードが空き(ジョブを実行していない)であるサブメッシュ/サブトーラスが存在しない限りノードを割り当てることができない。そのため、結果として、ネットワーク全体としてはジョブの要求する数だけの空きノードが存在するにもかかわらず、十分なサイズのサブメッシュ/サブトーラスを用意できず、ジョブに対してノードを割り当てることができない状況が生じる。そのため、ノード資源が有効活用できない。
なお、ジョブに割り当てるノードの範囲形状をサブメッシュ/サブトーラスに限定せず、割り当てるノードを自由に選択すれば、ノードの有効活用は可能であるが、そうするとジョブ間での通信干渉が発生する。従来、ジョブに割り当てるノードの範囲形状をサブメッシュ/サブトーラスに限定せずに、ジョブ間での通信干渉による性能低下を抑制するための有効な技術が存在しない。
1つの側面では、本件では、ノードを有効活用しながらも、ジョブ間通信の性能低下を抑制することを目的とする。
1つの案では、コンピュータに、以下の処理を実行させるジョブ管理プログラムが提供される。
ジョブ管理プログラムに基づいて、コンピュータは、まず、利用ノード数を指定したジョブ実行要求に応じて、複数のノードがメッシュ結合またはトーラス結合で接続されたネットワークを表すn(nは2以上の整数)次元の空間のn個の軸から、順番に決定対象軸を選択する。次にコンピュータは、複数のノードそれぞれのn次元の座標値と利用可否を含む状態を示す状態情報とに基づいて、決定対象軸の座標値の候補範囲の幅を所定値から広げていき、範囲が決定した軸の座標値が該範囲内であり、決定対象軸の座標値が候補範囲内である利用可能なノードの数が利用ノード数以上となったときの候補範囲を、決定対象軸の座標値の範囲に決定する。そしてコンピュータは、すべての軸について座標値の範囲が決定すると、各軸の決定した範囲内の座標値を有する利用可能な第1ノードの中から、ジョブに割り当てる第2ノードを決定する。
1態様によれば、ノードを有効活用しながらも、ジョブ間通信の性能低下を抑制することができる。
第1の実施の形態に係るジョブ管理装置の例を示す図である。 第2の実施の形態のシステム構成例を示す図である。 ジョブ管理サーバのハードウェアの一構成例を示す図である。 ジョブ管理サーバの機能を示すブロック図である。 ノードを有効利用した割り当ての一例を示す図である。 通信の干渉の発生例を示す図である。 ルータ故障の影響範囲の一例を示す図である。 ルータが故障したノードがある場合のノード間通信の例を示す図である。 第2の実施の形態におけるノード割り当て例を示す図である。 第2の実施の形態におけるノードの割り当て処理を示すフローチャートである。 BB探索処理の手順を示すフローチャートである。 軸i範囲決定処理の手順の一例を示すフローチャートである。 探索範囲制限処理の手順の一例を示す図である。 第3の実施の形態における軸i範囲決定処理の手順の一例を示すフローチャートである。 第4の実施の形態におけるノードの結合例を示す図である。 隣接する単位ノード群内のノード間の接続例を示す図である。 ノード間の通信例を示す図である。 ルーティング機能が故障したノードがある場合のノード間通信の例を示す図である。 故障ノードの位置の射影例を示す図である。 ルーティング機能が故障したノードを含む単位ノード群内の通信例を示す図である。 ルーティング機能が故障したノードを含むもののノードの利用が可能な単位ノード群の例を示す図である。 通信規則ごとの利用可能ノード数の比較例を示す図である。 軸0の範囲決定例を示す図である。 軸1の範囲決定例を示す図である。 軸2の範囲決定例を示す図である。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るジョブ管理装置の例を示す図である。ジョブ管理装置10は、端末装置1と複数のノード2a,2b,2c,・・・とに接続されている。端末装置1は、例えばユーザが使用するコンピュータである。複数のノード2a,2b,2c,・・・は、ジョブの計算を行うコンピュータである。複数のノード2a,2b,2c,・・・は、n(nは2以上の整数)次元メッシュ結合またはn次元トーラス結合のネットワークを構成している。
ジョブ管理装置10は、ジョブ実行要求3に示される利用ノード数分のノードを、ジョブに割り当てる。そしてジョブ管理装置10は、割り当てたノードにジョブを実行させる。このような処理を実行するために、ジョブ管理装置10は、記憶部11と演算部12とを有する。
記憶部11は、複数のノード2a,2b,2c,・・・それぞれのn次元の座標値と、複数のノード2a,2b,2c,・・・それぞれの利用可否を含む状態を示す状態情報とを記憶する。図1では、記憶部11内の丸い図形11aが、ノードを表している。図形11aの位置が、対応するノードのネットワーク上での座標を表す。図形11a間を接続する線が、ノード間を接続するリンクを表す。網掛けを有する図形は、利用不可のノードを示している。例えば他のジョブを実行中のノードや、プロセッサが故障中のノードは、利用不可となる。網掛けの無い図形は、利用可能なノードを示している。なお状態情報には、ノードの故障の有無に関する情報を含めてもよい。
演算部12は、利用ノード数を指定したジョブ実行要求に応じて、ネットワークを表すn次元空間4のn個の軸から、順番に決定対象軸を選択する。次に演算部12は、決定対象軸の座標値の候補範囲の幅を所定値から広げていく。このとき、演算部12は、複数のノード2a,2b,2c,・・・それぞれの座標値と状態情報とに基づいて、範囲が決定した軸の座標値が決定されたその範囲内であり、決定対象軸の座標値が候補範囲内である、利用可能なノードの数を計数する。例えば演算部12は、範囲が決定した軸の座標値が決定されたその範囲であり、決定対象軸の座標値が候補範囲内である矩形領域を設定する。以下この矩形領域を、BB(Bounding Box)と呼ぶ。BB5は、範囲が未定の軸の座標値は全範囲を含む。
そして演算部12は、利用可能なノード数が利用ノード数以上となったときの候補範囲を、決定対象軸の座標値の範囲に決定する。すべての軸について座標値の範囲が決定すると、演算部12は、各軸の決定した範囲内の座標値を有する利用可能なノードの中から、ジョブに割り当てるノードを決定する。そして演算部12は、ジョブに割り当てたノードに対して、ジョブの実行指示を送信する。
このようなジョブ管理装置10にジョブ実行要求3が入力されると、演算部12が、利用ジョブ数分の利用可能ノードを含むBB5を探索する。その際、演算部12は、各軸の座標値の範囲を順に決定する。例えば、軸0、軸1、軸2の順で、範囲を決定するものとする。その場合、演算部12は、まず軸0の範囲の幅を所定値(例えば1)から広げていく。例えば演算部12は、軸0の所定値の幅の範囲を候補範囲として、軸0の座標値がその範囲内の利用可能なノード数が、ジョブの利用ノード数(例えば「7」)以上あるかどうかを判断する。利用可能なノード数がジョブの利用ノード数未満であれば、演算部12は、同じ幅のまま、範囲を軸0方向にずらしていき、利用可能なノード数がジョブの利用ノード数以上となる位置を探索する。すべての位置で利用可能なノード数がジョブの利用ノード数未満であれば、演算部12は、軸0の座標値の範囲の幅を広げ、同様に探索する。そして、演算部12は、探索過程で最初に利用可能なノード数がジョブの利用ノード数以上となったときの範囲を、軸0の座標値の範囲に決定する。
軸0の座標値の範囲が決定すると、演算部12は、軸1についても、同様の探索を行い、軸1の座標値の範囲を決定する。さらに演算部12は、軸2についても、同様の探索を行い、軸2の座標値の範囲を決定する。各軸の座標値の範囲が決定されるごとに、BB5が占める領域は狭くなる。例えば図1の例では、すべての軸の座標値の範囲決定後のBB5は、3軸方向それぞれに2ずつの幅しかもっていない。このBB5内に含まれる利用可能なノードが、ジョブに割り当てられる。そして割り当てられたノードに対して、ジョブの実行指示が出される。
このようにしてジョブにノードを割り当てることで、ネットワーク内のノードの有効利用が図れる。すなわちBB5内に、他のジョブを実行していて利用不可能なノードが存在することを許容しているため、BB5の各軸の座標値の範囲を広げていけば、最終的には、利用可能なノードのすべてが、いずれBB5内に含まれることになる。そのため、ジョブ実行要求3に示された利用ノード数分の利用可能ノードが、離れた位置に点在していたとしても、そのノードをジョブに割り当てることができる。
しかも第1の実施の形態のジョブ管理装置10では、各軸の幅を、所定値から徐々に広げるようにしたため、利用ノード数以上の利用可能なノードを含む、可能な限り小さいBB5を探索できる。BB5のサイズが小さければ、ジョブに割り当てられたノードは、互いの距離が短くなる。同じジョブに割り当てられたノード間の距離が近ければ、ノード間の通信効率が上がると共に、他のジョブのノード間通信との干渉が発生する可能性も低下する。その結果、ジョブの処理効率が向上する。
なお演算部12は、各軸の座標値の範囲を決定後、BB5内の利用可能なノード間で、全対全通信が可能かどうかを判断することもできる。その場合、記憶部11の状態情報に、複数のノードそれぞれの故障の有無を示す情報を含める。そして演算部12は、すべての軸の範囲を決定したとき、複数のノードの位置と状態情報とに基づいて、BB5内の利用可能なノード間で全対全通信が保証できるかどうかを判断する。例えば利用可能なノード間の通信経路上に、ルーティング機能が故障したノードが存在しないことが確認される。少なくとも1対のノード間の通信経路上に、ルーティング機能が故障したノードが存在すれば、全対全通信は保証できない。演算部12は、全対全通信が保証できると判断された場合に、BB5内の利用可能なノードの中から、ジョブに割り当てるノードを決定する。
このように事前にBB5内の利用可能なノード間で全対全通信が保証できることを確認しておくことで、BB5内からどのような組み合わせで割り当てるノードを選択しても、割り当てたノード間の通信が保証される。そのため、割り当てるノードを選択する度に、通信が可能かどうかを判定せずに済み、割り当てるノードを選択する際の処理効率が向上する。
なお演算部12は、すべての軸の範囲を決定した後に、BB5内の利用可能なノード間で全対全通信が保証できないと判断された場合、例えば、少なくとも一部の軸において範囲が変更されるように、範囲決定をやり直す。これにより、全対全通信を保証したBB5を探索できる。
決定対象軸の座標値の範囲の幅を変えずに範囲の位置を移動しても、すべての位置においてBB5内の利用可能なノード間で全対全通信が保証できないと判断される場合もある。この場合、決定対象軸の座標値の範囲の幅をそれ以上広げても、全対全通信を保証できない領域を包含してしまい、全対全通信を保証できるようにはならない。そこで、このような場合には、演算部12は、決定対象軸の座標値の範囲の決定を取りやめ、既に範囲が決定された軸の少なくとも一部において範囲が変更されるように、範囲決定をやり直してもよい。これにより、無駄な探索処理を行わずに済み、処理効率が向上する。
メッシュ結合またはトーラス結合のn次元ネットワークは、階層的にすることもできる。例えば、ノード集合である単位ノード群内のノードがu(uは1以上の整数)次元メッシュ結合またはu次元トーラス結合で接続された第1ネットワークを下位構造とする。そして、複数の単位ノード群がv(vは1以上の整数)次元メッシュ結合またはv次元トーラス結合で接続された第2ネットワークを上位構造とする。このとき、第2ネットワークでは、例えば隣接する単位ノード群内のu次元の座標値が同じノード同士が接続される。
このような階層的なネットワークトポロジーの場合、第2ネットワークにおける単位ノード群間の通信の保証を、効率的に行うことができる。例えば演算部12は、複数の単位ノード群内の各ノードのu次元の座標値のうち、複数の単位ノード群それぞれにおけるルーティング機能が故障した故障ノードのu次元の座標値と重複しない座標値が少なくとも1つあることを確認する。このような重複しない座標値が少なくとも1つあれば、すべての単位ノード群内で、その座標値を有するノードはルーティングを行うことができる。すなわち、ルーティング機能が故障したノードのu次元の座標値と重複しない座標値のノードが、複数の単位ノード群内にあれば、そのノードを介して単位ノード群間の通信ができる。このような重複しない座標値が検出できた場合、演算部12は、第2ネットワークを介した単位ノード群間の全対全通信が保証できると判断する。これにより、第2ネットワークにおける単位ノード群間の通信が保証できるかどうかの判定を、容易に行うことができる。
利用ノード数が多いため、決定対象軸の座標値の範囲の幅が狭いと、BB5内に、利用ノード数分の利用可能ノードが含まれないことが明らかな場合もある。その場合、演算部12は、例えば、座標値の範囲を、最初から全範囲としてもよい。例えば演算部12は、範囲が決定した軸の座標値が決定された範囲内である利用可能なノードの数から、範囲が決定した軸の座標値が該範囲内であり、決定対象軸の座標値が所定座標値である利用可能なノードの数を減算する。減算した結果が、利用ノード数に満たない場合、演算部12は、候補範囲の幅の初期値を、決定対象軸の座標値の全範囲とする。これにより、不要な探索を行わずに済み、処理が効率化される。
なお、演算部12は、例えばジョブ管理装置10が有するプロセッサにより実現することができる。また、記憶部11は、例えばジョブ管理装置10が有するメモリにより実現することができる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。
図2は、第2の実施の形態のシステム構成例を示す図である。第2の実施の形態では、複数の端末装置31,32,33,・・・がネットワーク30を介してジョブ管理サーバ100に接続されている。端末装置31,32,33,・・・は、並列ジョブの実行指示をするユーザが使用するコンピュータである。
ジョブ管理サーバ100は、端末装置31,32,33,・・・から受信したジョブ実行要求で指定されたジョブに対する、実行資源としてのノードの割り当てを管理する。ジョブ管理サーバ100は、管理ネットワーク20を介して複数のノード41〜46,・・・に接続されている。複数のノード41〜46,・・・は、ジョブを実行するコンピュータである。複数のノード41〜46,・・・は、インターコネクトによるn(nは2以上の整数)次元のメッシュ結合またはトーラス結合で接続されている。
このようなシステムにおいて、いずれかの端末装置からジョブ管理サーバ100にジョブ実行要求が入力されると、ジョブ管理サーバ100が、受信したジョブ実行要求で要求されているジョブの並列度に応じて、そのジョブに割り当てるノードを決定する。例えばジョブ管理サーバ100は、並列度が「4」のジョブに対して、4つのノードを割り当てる。そしてジョブ管理サーバ100は、各ジョブの実行指示を、そのジョブに割り当てたノードに対して出力する。ジョブの実行指示を受け取ったノードは、指示に従ってジョブを実行する。なお複数のノードが並列ジョブを実行する場合、そのジョブを実行するノード間で、計算結果の受け渡しなどのデータ通信が行われる。
図3は、ジョブ管理サーバのハードウェアの一構成例を示す図である。ジョブ管理サーバ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、ジョブ管理サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に必要な各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
周辺機器としては、HDD(Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108a,108bがある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、ジョブ管理サーバ100の補助記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、ジョブ管理サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108aは、ネットワーク30に接続されている。ネットワークインタフェース108aは、ネットワーク30を介して、端末装置31,32,33,・・・との間でデータの送受信を行う。
ネットワークインタフェース108bは、管理ネットワーク20に接続されている。ネットワークインタフェース108bは、管理ネットワーク20を介して、ノード41〜46,・・・との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示したジョブ管理装置10も、図3に示したジョブ管理サーバ100と同様のハードウェアにより実現することができる。また複数のノード41〜46,・・・も、ジョブ管理サーバ100と同様のハードウェアで実現できる。ただし、複数のノード41〜46,・・・は、他のノードと接続するためのインターコネクトのインタフェースをさらに有している。
ジョブ管理サーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。ジョブ管理サーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、ジョブ管理サーバ100に実行させるプログラムをHDD103に格納しておくことができる。プロセッサ101は、HDD103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またジョブ管理サーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、HDD103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
このようなシステムにおいて、ジョブ管理サーバ100は、並列ジョブを実行する複数のノード間のデータ通信が効率的に実行できるように、ジョブに対してノードを割り当てる。
図4は、ジョブ管理サーバの機能を示すブロック図である。ジョブ管理サーバ100は、ノード情報記憶部110、ジョブ実行要求受け付け部120、スケジューラ130、およびジョブ実行指示部140を有する。
ノード情報記憶部110は、ジョブの計算に使用するノードに関する情報(ノード情報111)を記憶する。ノード情報111には、例えば各ノードの識別子、位置、及び状態が含まれる。位置は、n次の軸ごとの座標で表される。ノードの状態には、例えばジョブ実行中、ルータ故障中、プロセッサ故障中、空きなどの状態がある。プロセッサが故障しておらず、ジョブ実行中でない空きノードが、ジョブに新たに割り当て可能なノードである。またルータ故障中のノードを経由したノード間通信は行うことができない。そのため、矩形領域内のノード間の全対全通信が可能かどうかを判断する際には、ルータ故障中のノードを経由せずに全対全通信ができるかどうかが判断される。なおノード情報記憶部110としては、例えばメモリ102またはHDD103の記憶領域の一部が使用される。
ジョブ実行要求受け付け部120は、端末装置31,32,33,・・・からのジョブ実行要求を受信する。ジョブ実行要求受け付け部120は、受信したジョブ実行要求を、スケジューラ130に転送し、ジョブ実行要求に応じたジョブに対して、そのジョブの実行に用いるノードの割り当てを依頼する。
スケジューラ130は、ノード情報111を参照し、ジョブ実行要求に応じたジョブに対して、そのジョブを実行するノードを割り当てる。例えばスケジューラ130は、メッシュ結合またはトーラス結合のネットワーク内から、ジョブの利用ノード数分の利用可能なノードが存在する、できるだけ小さい矩形領域を選択し、その矩形領域内のノードをジョブに割り当てる。これにより、並列ジョブを実行する際のノード間の通信距離が短くなり、通信効率が向上する。ノード間の通信距離が短くなれば、通信経路上のノードの故障により通信障害が発生する可能性も抑制できる。なおスケジューラ130は、選択する矩形領域(BB)内に、他のジョブに既に割り当てられているノードが含まれることを許容する。これにより、システム内のノードを有効利用したノードの割り当てが可能となる。スケジューラ130は、ジョブに対して割り当てるノードを決定すると、決定したノードをジョブ実行指示部140に通知する。
ジョブ実行指示部140は、ジョブに割り当てられたノードに対して、そのジョブの実行を指示する。ジョブ実行指示部140は、ジョブの実行を指示したノードのノード情報における状態を、ジョブ実行中に更新する。またジョブ実行指示部140は、ノードにおいてジョブの実行が完了すると、そのノードのノード情報における状態を、空きに更新する。さらにジョブ実行指示部140は、各ノード41,42,43,・・・の動作状況を監視し、プロセッサまたはルータの機能の不具合を検出する。そしてジョブ実行指示部140は、不具合を検出したノードのノード情報における状態として、不具合の内容を設定する。
なお、図4に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図4に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
このようなジョブ管理サーバ100により、ノード資源を有効に利用しながらもノード間通信の性能低下を抑制した割り当てが行われる。例えばスケジューラ130は、BBをサブメッシュ/サブトーラスとするのではなく、ジョブごとのBBが重なり合うことを許容する。そのため、ジョブごとにサブメッシュ/サブトーラスを決め、サブメッシュ/サブトーラス内のノードを割り当てる場合と異なり、ノードを有効利用することが可能となる。
図5は、ノードを有効利用した割り当ての一例を示す図である。図5の例では、複数の端末装置31〜34それぞれから、4つのジョブに関するジョブ実行要求が入力されている。端末装置31からは、6つのノードを利用する「ジョブA」の実行要求が入力されている。端末装置32からは、3つのノードを利用する「ジョブB」の実行要求が入力されている。端末装置33からは、4つのノードを利用する「ジョブC」の実行要求が入力されている。端末装置34からは、3つのノードを利用する「ジョブD」の実行要求が入力されている。ここで、「ジョブA」、「ジョブB」、「ジョブC」、「ジョブD」の順で、ノードを割り当てるものとする。
ジョブに対するノードの割り当てを、サブメッシュまたはサブトーラス内から行った場合、ジョブA、ジョブB、ジョブCへのノードの割り当て後、空きノードが3つあるにもかかわらず、ジョブDにノードを割り当てることができない。すなわち、サブメッシュまたはサブトーラスは、他のサブメッシュ/サブトーラスと領域が重ならないことが前提となるため、3つの空き領域を囲むサブメッシュ/サブトーラスを生成できない。
他方、第2の実施の形態では、ネットワークトポロジーがメッシュ/トーラスでのノード割り当てに際して、1ジョブへの割り当て範囲をサブメッシュやサブトーラスに限定しない。すなわちスケジューラ130は、ジョブごとに、そのジョブの利用ノード数以上の空きノードを含む、できるだけ小さいBBを生成し、そのBB内のノードをジョブに割り当てる。BBは、他のBBと領域が重なることが許容される。そのため、サブメッシュ/サブトーラスを生成できなかった3つの空きノードを囲むBBを生成し、そのBB内のノードをジョブDに割り当てることができる。
また第2の実施の形態では、できるだけ小さいBBを生成することで、ジョブ間の通信の干渉や経由ルータ数の増加によるジョブ性能の低下が抑制される。以下、ジョブ間の通信の干渉について説明する。
図6は、通信の干渉の発生例を示す図である。例えば、4つのノード51〜54が1つのジョブ(ジョブA)に割り当てられた後、ノード55,56が別のジョブ(ジョブB)に割り当てられた場合を考える。またノード間のデータ転送は、x方向へ転送後、y方向に転送されるものとする。この場合、ノード52からノード53へのデータ転送では、ノード52・ノード51・ノード53という順でデータが転送される。またノード55からノード56へのデータ転送では、ノード55・ノード52・ノード51・ノード53・ノード56という順でデータが転送される。この2つのデータ転送の転送経路のうち、ノード52からノード51への経路と、ノード51からノード53への経路とが重複する。経路が重複する場合、データ転送が同時に発生したときに、通信の干渉が生じ、いずれかのデータ転送が待たされる。その結果、一方のジョブの処理に想定以上の時間がかかってしまう。
このような通信の干渉は、通信するノード間の距離が離れているほど発生しやすい。第2の実施の形態では、ジョブへのノードの割り当ての際に、できるだけ小さいBBを生成するため、ジョブに割り当てるノードが分散することが抑制され、可能な限り近い場所に集約される。その結果、通信の干渉の発生が抑制される。
また、できるだけ小さいBBを生成することで、ノード内のルーティング機能の故障の影響を受けるジョブの数を抑制する効果も期待できる。
図7は、ルータ故障の影響範囲の一例を示す図である。ネットワークトポロジーがメッシュ/トーラスで、かつ、プロセッサ間通信におけるパケットの経路選択(ルーティング)が静的であるものとする。すなわち、予め決められた経路でデータ通信が行われる。図7の例では、ジョブAに割り当てられたノード間の通信と、ジョブBに割り当てられたノード間の通信と、ジョブCに割り当てられたノード間の通信とがいずれもノード57を経由している。この場合、ノード57のルーティング機能が故障すると、ノード57を経由したノード間通信を行う全てのジョブに影響が及ぶ。このように通信経路の重なりが多いほど、1台のノードの故障の影響範囲が大きくなりやすい。
第2の実施の形態では、できるだけ小さいBBを生成するため、割り当て済みのジョブが利用するルータ/リンクに故障箇所が発生した際に、故障の影響を受けるジョブの数をできるだけ少なくすることができる。
なお、パケットの経路選択が静的であり、ジョブへのノード割り当て前にルーティング機能が故障したノードがある場合、そのノードを含むBBを生成すると、そのBB内のノードをジョブに割り当てたとき、ノード間の通信が保証されない可能性がある。
図8は、ルータが故障したノードがある場合のノード間通信の例を示す図である。図8の例では、ノード58のルーティング機能に障害があることが事前に判明している。このとき、ノード59とノード60とを同じジョブに割り当てると、そのジョブに割り当てたノード間の通信が保証できなくなる。他方、ノード61とノード62であれば、同じジョブに割り当てても、ノード間通信を保証できる。
第2の実施の形態では、1ジョブに割り当てた全てのプロセッサ間で通信が可能なことを保証できるBBを選択し、そのBB内のノードをジョブに割り当てる。これにより、ノードの割り当て後に通信障害が判明し、再割り当てとなるような事態の発生を抑止できる。
以上のように、第2の実施の形態では、ノードを有効利用しながらも、干渉の発生の抑止、ルーティング機能故障時の影響範囲の抑止、およびノード間の通信が保証されない割り当ての抑止が実現される。
図9は、第2の実施の形態におけるノード割り当て例を示す図である。図9の例では、4つのノードで並列処理を行うジョブの実行要求が入力されている。この場合、スケジューラ130は、ジョブの利用ノード数以上の利用可能ノードを含むBB71を決定する。図9の例では、BB71内に5個の利用可能なノードが含まれる。スケジューラ130は、BB71に含まれる利用可能なノードを、ジョブに割り当てる。
またスケジューラ130は、BB探索に際しては、サイズの小さいものから順番に探索し、最初に発見したものの範囲でジョブ割り当てを行う。これにより、可能な限り小さいBBから、ノードの割り当てを行うことができる。
例えば、ネットワークトポロジーがn次元のメッシュ/トーラスであるとする。スケジューラ130は、n個の軸について任意の優先順位を定める。そしてスケジューラ130は、優先順位の高い軸方向のサイズが小さいものから順番に適切なBBを探索し、探索で得られたBB内のノードをジョブに割り当てる。
例えば、n=3の場合であり、軸0,1,2の順に優先度が高いものとする。この場合は、以下の順番でBBが探索される。
・軸0方向のサイズの小さい順
・軸0方向のサイズが同じ場合、軸1方向のサイズの小さい順
・軸0,1方向のサイズが同じ場合、軸2方向のサイズの小さい順
軸の優先順位は、ネットワークトポロジーに基づいて、その軸方向への通信を行うノードのペアの数が多くなる軸ほど高くすることができる。例えば、あるノードを選択し、当該ノードを通過する通信を行い得る任意のノードのペア(パケット送信ノードとパケット受信ノード)の集合を考える。このとき、ノードのペア間の通信が、どの軸方向の移動により選択したノードを通過するかによって分類する。そして、最もペアの数が多い軸から順番に高優先度となるように設定する。
また通信の方向が、x方向、y方向、z方向の順番で通信が行われることが決まっている場合がある。この場合、過去の統計情報などから、例えばy方向の通信が他の軸よりも多く発生することが分かっていれば、y軸の優先順を最も高くしてもよい。
これにより、ノードに故障箇所が発生した際に、当該ルータを通過するジョブの数ができるだけ少なくなるようにBBが選択される。結果として故障の影響を受けるジョブの数をできるだけ少なくすることが、適正な処理時間の範囲で可能となる。
以下、効率的な探索処理を伴う、ジョブへのノードの割り当て処理について詳細に説明する。以下では、特に断りの無い限り、ネットワークトポロジーがn次元のメッシュ/トーラスであり、n個の軸の優先度については、所与であるとする。ここでは、軸の優先度は軸0が最も高く、軸1,軸2,・・・の順に低くなっていき、軸(n−1)が最も低い優先度をもつものとする。なお、任意の軸優先度をもつシステムにおいて、優先度順に上記の通り軸名を設定すれば本手法は適用可能である。
当該システムに属するノードの位置はn次元の座標を用いて(x0,x1,・・・,xn-1)と表せるものとする。ここでxiは、当該ノードの軸i方向の座標値を表わす0以上の整数値である。原点O=(0,0,・・・,0)軸iサイズ Si=max{xi+1|x∈X},S=(S0,S1,・・・,S(n-1))と定義する。ここで、Xはシステムに属するノードの集合である。原点がxであり、軸i方向の大きさがsiであるn次元の矩形領域を、s=(s0,s1,・・・,s(n-1))を用いてR(x,s)と表記する。R(x,s)={(x0+d0,x1+d1,・・・,x(n-1)+d(n-1))|d0∈[0,s0),d1∈[0,s1),・・・,d(n-1)∈[0,s(n-1))]}である。以下では、R(O,S)=Xを満たす、すなわち、矩形領域R(O,S)に内の任意の座標値について対応するノードが存在すると仮定する。本仮定を満たさないようなシステムの場合、ノードが存在しない座標値には、ジョブの割り当ておよび通信経路として利用することのできないノードが存在しているとみなすことで本手法を適用することが可能である。
任意のBBは原点xとサイズsを用いてR(x,s)と表わすことが可能であることに注意されたい。BB内の利用可能ノードの個数を、N(x,s)と表わす。ここでは単一ジョブへのノード割り当てのみを考え、当該ジョブの利用ノード数をpと記載する。pは1以上の整数である。複数のジョブに対して資源割り当てを行う場合は、本処理を繰り返し実施すれば可能である。
図10は、第2の実施の形態におけるノードの割り当て処理を示すフローチャートである。この処理は、利用ノード数を指定したジョブ実行要求に応じて実行される。
[ステップS101]スケジューラ130は、BBの開始位置を示すxの初期値として原点Oを設定する。またBBのサイズsの初期値として、最小の値(1,1,・・・,1)を設定する。
[ステップS102]スケジューラ130は、ジョブの利用ノード数分の割り当て可能なノードを含むBB探索処理を実行する。この処理の詳細は後述する(図11参照)。
[ステップS103]スケジューラ130は、BB探索処理により、ジョブの利用ノード数分の割り当て可能なノードを含むBBが検出できたか否かを判断する。該当BBが検出できた場合、処理がステップS104に進められる。該当BBが検出できなかった場合、処理がステップS105に進められる。
[ステップS104]スケジューラ130は、検出したBB内の空きノードのうち、ジョブの利用ノード数分のノードを選択し、選択したノードをジョブに割り当てる。その後、割り当て処理が終了する。
[ステップS105]スケジューラ130は、割り当て失敗と判断し、割り当て処理を終了する。割り当てが失敗した場合、例えばスケジューラ130は、既に実行されている他のジョブが終了するのを待ち、他のジョブが終了したら再度割り当て処理を実行する。
次に、BB探索処理の詳細を説明する。
図11は、BB探索処理の手順を示すフローチャートである。
[ステップS111]スケジューラ130は、軸0に関する探索範囲の制限処理を行う。探索範囲の制限処理は、判断対象の軸方向のBBのサイズを最大にしないと、ジョブの利用ノード数分の空きノードを含むBBを生成できない場合、判断対象の軸方向のBBの幅を、最大値にする処理である。これにより、判断対象の軸方向の幅が狭いBBについての探索処理が不要となり、処理が効率化される。探索範囲制限処理の詳細は後述する(図13参照)。
[ステップS112]スケジューラ130は、i=0としたときの軸i範囲決定処理を実行する。これにより、BBの0軸方向の範囲(開始位置とサイズ)が決定される。軸i範囲決定処理の詳細は後述する(図12参照)。
[ステップS113]スケジューラ130は、軸0の軸i範囲決定処理において、範囲決定が成功したか否かを判断する。範囲決定が成功した場合、処理がステップS114に進められる。範囲決定が失敗した場合、スケジューラ130は、BBを検出できないと判断し、BB探索処理を終了する。
ステップS114〜S116では、軸1に関してステップS111〜S113と同様の処理が行われる。そして軸1に関して範囲決定が成功すれば(ステップS116でYES)、処理がステップS118に進められる。軸1に関して範囲決定が失敗すれば(ステップS116でNO)、処理がステップS117に進められる。
[ステップS117]スケジューラ130は、軸1に関して範囲決定に失敗した場合、x0の値を1だけカウントアップする。またスケジューラ130は、x1を0に初期化し、s1を1に初期化する。その後、処理がステップS112に進められる。これにより、軸0の範囲の開始位置を変えて、0軸の範囲決定から処理がやり直される。
ステップS118〜S121では、軸2に関してステップS114〜S117と同様の処理が行われる。そして軸2に関して範囲決定が成功すれば(ステップS120でYES)、次の軸3に関する処理に、処理が進められる。軸2に関して範囲決定が失敗すれば(ステップS120でNO)、x1の値のカウントアップ、x2の初期化、s2の初期化が行われ(ステップS121)、処理がステップS115に進められる。
その後、軸n−2までBBの範囲が決定すると、処理がステップS122に進められる。ステップS122〜S125では、軸n−1に関してステップS114〜S117と同様の処理が行われる。そして軸n−1に関して範囲決定が成功すれば(ステップS124でYES)、スケジューラ130は、現在決定している各軸の範囲を有するBBを、探索結果として検出したBBとして、BB探索処理を成功終了する。軸n−1に関して範囲決定が失敗すれば(ステップS124でNO)、xn-2の値のカウントアップ、xn-1の初期化、sn-1の初期化が行われ(ステップS125)、軸n−2に関する処理に、処理が進められる。
次に、軸i範囲決定処理について詳細に説明する。
図12は、軸i範囲決定処理の手順の一例を示すフローチャートである。
[ステップS131]スケジューラ130は、軸iがトーラスであり、かつsi<Siであるか否かを判断する。これらの条件が満たされれば、処理がステップS132に進められる。条件が満たされなければ、処理がステップS133に進められる。
[ステップS132]スケジューラ130は、xi endにSi−1を設定する。xi endは、BBの開始位置xiをずらしていくときの終点となる位置である。その後、処理がステップS134に進められる。
[ステップS133]スケジューラ130は、xi endにSi−siを設定する。
[ステップS134]スケジューラ130は、siがSi以下であるとの条件が満たされるか否かを判断する。条件が満たされれば、処理がステップS135に進められる。条件が満たされなければ、軸iの範囲決定失敗として、軸i範囲決定処理が終了する。
[ステップS135]スケジューラ130は、xiがxi end以下であるとの条件が満たされるか否かを判断する。条件が満たされれば、処理がステップS137に進められる。条件が満たされなければ、処理がステップS136に進められる。
[ステップS136]スケジューラ130は、現在のsiの幅でxiをずらしていきxi endに達しても、所定の条件を満たすBBが見つからない場合、siの値を1だけカウントアップして、BBの軸i方向の幅を広げる。またスケジューラ130は、xiの値を0に初期化する。その後、処理がステップS134に進められる。
[ステップS137]スケジューラ130は、(s0,s1,…,si,Si+1,Si+2,…,Sn-1)を、stmpに設定する。これは判定対象のBBのサイズstmpとして、軸iまでの各軸方向には、これまでの処理で選択した幅をとり、軸i+1以降の各軸方向には、最大の幅をとることを示している。
[ステップS138]スケジューラ130は、i=n−1が満たされるか否かを判断する。この条件が満たされる場合、現在、最後の軸に関する範囲決定処理を行っているため、処理がステップS139に進められる。条件が満たされなければ、処理がステップS140に進められる。
[ステップS139]スケジューラ130は、判定対象のBB内のすべてのノードについて、全対全通信が保証されるか否かが判断される。全対全通信が保証される場合とは、BB内の全てのノードペア間の通信経路上に、ルーティング機能が故障したノードが存在しない場合である。全対全通信が保証されれば、処理がステップS140に進められる。全対全通信が保証されなければ、処理がステップS141に進められる。
[ステップS140]スケジューラ130は、N(x,stmp)≧pが満たされるか否かを判断する。すなわち判定対象のBB内の利用可能ノードの個数が、ジョブの利用ノード数p以上か否かが判断される。なおBB内の各ノードが利用可能かどうかは、ノード情報記憶部110内のノード情報111に基づいて判断される。
なお、N(x,s)の算出処理は、前回の算出結果を有効利用することで効率化することができる。例えば、軸iの探索処理では、si=1から1ずつ順番に探索が行われる。そこでスケジューラ130は、xi,siについての探索処理においてN(x,s)値を2次元配列などのデータ構造に記録しておく。これにより、si>2となる場合のN(x,s)の算出を以下のように1回の加算操作で算出することが可能になる。
i(xi,si)=Ni(xi,si−1)+Ni(xi+si−1,1)
ここで、
i(xi,si)=N((x0,x1,・・・,xi,0,0,・・・,0),(s0,s1,・・・,si,Si+1,Si+2,・・・,Sn-1))
である。
N(x,stmp)≧pの条件が満たされた場合、軸iの範囲決定が成功したものとして、軸i範囲決定処理が終了する。条件が満たされない場合、処理がステップS141に進められる。
[ステップS141]スケジューラ130は、xiの値を1だけカウントアップして、処理をステップS135に進める。
以上のような処理によって、ジョブの利用ノード数p以上の利用可能ノードを含む、できるだけ小さなBBが探索される。
次に、探索範囲制限処理(図11のステップS111,S114,S118,S122)について詳細に説明する。例えばスケジューラ130は、範囲が決定した軸の座標値がその範囲内である利用可能なノードの数から、範囲が決定した軸の座標値が決定された範囲内であり、軸iの座標値が所定座標値(xi)である利用可能なノードの数を減算する。減算結果が、利用ノード数pに満たない場合、スケジューラ130は、軸iの範囲を全範囲とする。詳細には、以下の通りである。
スケジューラ130は、軸iの探索処理において、以下の条件Xを満たした場合にSi→siを実施し、最大サイズの探索より開始する。これにより、軸iにおける探索処理のループ回数を削減し、処理の高速化が実現できる。
条件X
∀xi∈[0,si),N(ai(0),bi(Si))N(ai(xi),bi(1))<p
ここで
i(k)=x0,x1,・・・,xi-1,k,0,0,・・・,0
i(k)=(s0,s1,・・・,si-1,k,Si+1,Si+2,・・・,Si-1
である。上記条件式を満たす場合、N(x,s)≧pを満たすのはsi=Siのみであるため、si<Siについての探索を省略してもよい。
図13は、探索範囲制限処理の手順の一例を示す図である。
[ステップS151]スケジューラ130は、軸iについて、条件Xを満たすか否かを判断する。条件Xが満たされる場合、処理がステップS152に進められる。条件Xが満たされなければ、探索範囲制限処理が終了する。
[ステップS152]スケジューラ130は、siにSiを設定する。その後、探索範囲制限処理が終了する。
このように、ある軸方向について、BBの幅を最大にしないと、ジョブの利用ノード数以上の利用可能ノードをBB内に含めることができない場合、その軸方向の幅を最初から最大にしてBBの探索が行われる。これにより、探索処理の効率化を図ることができる。
[第3の実施の形態]
次に第3の実施の形態について説明する。第3の実施の形態は、BBの探索に際して、以前の探索結果より全プロセッサ間での通信が保証されないことが明らかなBBについては、全プロセッサ間で通信可能かどうかの検証を省略するものである。これにより、BB探索処理の効率化が図れる。
例えば、スケジューラ130は、ネットワークトポロジーがn次元のメッシュ/トーラス結合であるとしたとき、BBの探索過程で生成したBBについて、BB内全域の全ノードで相互に通信可能なこと(全対全通信)が保証されるか検証する。スケジューラ130は、保証されない場合は次のBBの探索を行う。スケジューラ130は、次のBBの探索に際して、以前の探索結果より全プロセッサ間での通信が保証されないことが明らかなBBについては、全プロセッサ間で通信可能かどうかの検証は行わない。
例えばsiを変えずにxiを変更しても、すべてのxiにおいて全対全通信が保証できないと判断された場合、siの値を大きくしても、現在のsiで検証したいずれかのBBの範囲を含むこととなる。すると全対全通信が保証できない領域を含むこととなり、全体としても全対全通信が保証できない。この場合、スケジューラ130は、例えば現在の軸iにおける範囲決定処理は、範囲決定失敗として終了させ、既に範囲が決定された軸の少なくとも一部において範囲が変更されるように、範囲決定をやり直す。
図14は、第3の実施の形態における軸i範囲決定処理の手順の一例を示すフローチャートである。なお図14のステップS201〜S208,S210,S211,S213の処理は、それぞれ図12のステップS131〜S135,S137〜S141,S136の処理と同様である。以下、図12と異なる処理について説明する。
[ステップS209]スケジューラ130は、判定対象のBB内のすべてのノードについて、全対全通信が保証されない場合、diの値を1だけカウントアップする。diは、ある軸iのsiについて、全対全通信を保証することのできないxiの数である。このdiの数がxiの取り得る値の数と一致する場合、軸iのサイズがsiとなるBBすべてで全対全通信が保証されないこととなる。カウントアップ後、処理がステップS211に進められる。
[ステップS212]スケジューラ130は、xiがxi endに至るまでBBの開始位置を移動させても範囲が決定できない場合(ステップS205でNO)、di=xi end+1が満たされるかどうかを判断する。この式が満たされなければ、処理がステップS213に進められ、軸i方向の幅を広げたBBについて、探索が行われる。他方、di=xi end+1が満たされた場合、軸iのサイズがsiとなるBBすべてで全対全通信が保証されない。この場合、軸i方向にBBの幅を広げても、全対全通信が満たされるようにはならない。そこで、処理がステップS214に進められる。
[ステップS214]スケジューラ130は、si=1かつi>0の条件が満たされるか否かを判断する。この条件が満たされる場合、処理がステップS215に進められる。この条件が満たされなければ、範囲決定失敗として軸iの範囲決定処理が終了する。
[ステップS215]スケジューラ130は、di-1の値を1だけカウントアップし、範囲決定失敗として軸iの範囲決定処理を終了する。
このようにBBの軸i方向の幅がsiのときに、xiをどこにとっても全対全通信が保証できない場合、幅がsi+1,si+2のBBを続けて探索しても全対全通信は必ず保証されず、これ以上探索する意味がないため軸iに対する探索が打ち切られる。
これにより、ノードに故障箇所が発生した際に、1ジョブに割り当てた全てのノード間で通信が可能なことを保証するための検証処理の実施を最低限の回数に抑えることが可能となる。結果として、1ジョブに割り当てた全てのノード間で通信が可能なことを保証することが、適切な処理時間の範囲で可能となる。
〔第4の実施の形態〕
次に第4の実施の形態について説明する。第4の実施の形態は、ネットワークトポロジーがn=u+v(u,vは、1以上の整数)次元のメッシュ/トーラス結合の例である。
図15は、第4の実施の形態におけるノードの結合例を示す図である。第4の実施の形態では、単位ノード群80が、v次元(例えば3次元)空間内に、各軸方向に並べられている。各単位ノード群80は、ノード81が、u次元(例えば3次元)空間内に、各軸方向に並べられている。
ここで、u次元空間の軸を、軸a、軸b、軸cとする。v次元空間の軸を、軸x、軸y、軸zとする。この場合、3次元+3次元の6次元のメッシュ/トーラス結合となる。各ノードの位置は、軸a、軸b、軸cにおける座標値と、軸x、軸y、軸zにおける座標値とにより特定される。
図16は、隣接する単位ノード群内のノード間の接続例を示す図である。x−y−z空間で隣接する単位ノード群80a,80b間は、a−b−c空間で同じ座標となるノード81a,81b同士が接続されている。図16の例では、1つの単位ノード群に12個のノードが含まれているため、隣接する単位ノード群80a,80b間は、インターコネクトによる12本のリンクが存在する。
このようなネットワークトポロジーでノードが接続されているとき、ノード間の通信では、例えば、軸b→軸c→軸a→軸x→軸y→軸z→軸a→軸c→軸bの順で、各軸方向にデータが移動する。
図17は、ノード間の通信例を示す図である。単位ノード群80c内のノード81cと、単位ノード群80d内のノード81dとの間で、相互に通信する場合について説明する。図中、ノード81cからノード81dへのデータの移動経路を、実線の矢印で示す。また、ノード81dからノード81cへのデータの移動経路を、点線の矢印で示す。
ノード81cからノード81dへのデータは、まず単位ノード群80c内のネットワークを、軸b→軸c→軸aの順で各軸方向に移動(bcaルーティング)し、ノード82cに到達する。そのデータは、ノード82cから、他の単位ノード群内のノード82cに対応する位置(軸a、軸b、軸cの座標値が同じ)のノード間を移動(xyzルーティング)し、単位ノード群80d内のノード82dに到達する。そして、そのデータは、軸a→軸c→軸bの順で各軸方向に移動(acbルーティング)し、目的のノード81dに到達する。
ノード81dからノード81cへのデータは、まず単位ノード群80d内のネットワークを軸c方向に移動し、ノード83dに到達する。そのデータは、ノード83dから、他の単位ノード群内のノード83dと対応する位置のノード間を移動し、単位ノード群80c内のノード83cに到達する。そして、そのデータは、軸c→軸bの順で各軸方向に移動し、目的のノード81cに到達する。
このような経路でデータ通信が行われる場合、単位ノード群間の移動の際に、移動経路上の単位ノード群内にルーティング機能が故障したノードが存在しても、多くの場合は通信できる。
図18は、ルーティング機能が故障したノードがある場合のノード間通信の例を示す図である。図18には、単位ノード群80e内のノード81eからの単位ノード群80h内のノード81hへのデータ転送例が示されている。単位ノード群80e〜80h間のデータの移動は、82e〜82hを介して行われる。このときデータを中継する単位ノード群80f,80g内のノード82f,82g以外のノード83f,83gが故障しているが、データ通信には影響しない。
このように、データを中継する単位ノード群内に故障したノードがあっても、通信は可能である。ノード間のデータ移動には、各単位ノード群80e〜80h内の対応する位置にあるノードを経由する。そのため各単位ノード群80e〜80h内のノード数が12であれば、ノード間移動経路は12通り存在する。12通りの移動経路のうち、少なくとも1つにおいて、単位ノード群80e〜80h内の対応する位置の全ノードが正常にルーティングできていれば、ノード間のデータの移動を保証できる。換言すると、12通りの移動経路すべてにおいて、単位ノード群80e〜80h内の対応する位置のノードのうちの少なくとも1つでルーティング機能が故障していれば、ノード間のデータの移動が保証できない。
そこで第4の実施の形態では、BB内の全対全通信が保証できるかどうかの検証処理において、n次元メッシュ/トーラス空間上で表現されたノードのルーティング機能の故障箇所をu次元サブメッシュ/トーラス上に射影する。射影結果から、全対全通信を保証できるかどうかを判断できる。
図19は、故障ノードの位置の射影例を示す図である。図19の例では、スケジューラ130は、単位ノード群80i〜80tの配列のある軸方向に、故障ノードの位置を射影し、射影結果91〜94を得る。射影結果91〜94では、各単位ノード群内の故障ノードの座標に対応する位置に、故障を示すフラグ(図中、×印)が示される。次に、スケジューラ130は、射影結果91〜94をさらに射影し、射影結果95を得る。射影結果95において、少なくとも一カ所でも、故障を示すフラグが付いていない位置があれば、その位置のノードを用いて、単位ノード群間の通信を保証することができる。他方、射影結果95において、すべての箇所に故障を示すフラグが付与されていれば、単位ノード群間の通信は保証されない。
このようにして、ルーティング機能の故障が発生した際に、1ジョブに割り当てた全てのノード間で通信が可能なことを保証するための検証を、簡単な処理で行うことができる。すなわち、n(u+v)次元メッシュ/トーラスであるものの、u次元での射影で検証ができ、検証対象の次元数が低減されている。その結果、1ジョブに割り当てた全てのプロセッサ間で通信が可能なことを保証することが、適切な処理時間の範囲で可能となる。
なお、ルーティング機能が故障したノードを含む単位ノード群については、単位ノード群内でのノード間の全対全通信ができない可能性がある。
図20は、ルーティング機能が故障したノードを含む単位ノード群内の通信例を示す図である。単位ノード群80uでは、ノード81uのルーティング機能が故障しているものとする。このときノード82uからノード83uへの通信は可能である。しかしノード82uからノード84uへは通信できない。
そこでスケジューラ130は、例えば、ルーティング機能が故障したノードを含む単位ノード群からは、ジョブへのノードの割り当てを行わないようにする。これにより、全対全通信が保証できるかどうかの判断時に、単位ノード群内での通信状況を考慮せずに済み、効率的な処理が可能となる。
この場合の全対全通信可否の検証は、以下のようにして行われる。以下では簡単のため、システムのネットワークトポロジーは6次元のメッシュ/トーラスであると仮定して説明する。任意のn次元のメッシュ/トーラスについても以下と同様の手法を適用することは可能である。
ノードの座標は(x0,x1,x2,x3,x4,x5)と表せる。ノード間のパケットは、以下の経路を通過するようルーティングされるものとする。
1.軸3,4,5からなる3次元サブメッシュ/トーラス内の移動(移動時に通過するプロセッサの軸0,1,2の座標値はすべて同一)
2.軸0,1,2からなる3次元サブメッシュ/トーラス内の移動(移動時に通過するプロセッサの軸3,4,5の座標値はすべて同一)
3.軸3,4,5からなる3次元サブメッシュ/トーラス内の移動(移動時に通過するプロセッサの軸0,1,2の座標値はすべて同一)
BB内のルーティング機能の故障が存在するノードの座標値の集合をBとする。また、集合Bの軸3,4,5からなるサブメッシュ/トーラス空間への射影B’を以下のように定義する。
B’={(x3,x4,x5)|∀(x0,x1,x2,x3,x4,x5)∈B}
このとき、以下の条件を満たす場合、全対全通信が保証されると判断する。
(B’の補集合)≠(空集合)、かつルーティング機能が故障したノードと(x0,x1,x2)座標値がすべて同一であるノードをジョブへは割り当てない。
上記条件を満たすノード集合を本手法で探索するには、スケジューラ130は、ルーティング機能が故障したノードと(x0,x1,x2)座標値が同じになるノードは利用不可であるとみなし、その上で探索を行う。
軸4がトーラスであり、S4=3である場合、スケジューラ130は、以下条件を満たす場合に全対全通信が保証されると判断する。
{x|x∈B,x4=0}=(空集合)または、
{x|x∈B,x4=1}=(空集合)
{x|x∈B,x4=2}=(空集合)
以上のようにして、ネットワークトポロジーがn(=u+v)次元のメッシュ/トーラス結合の場合において、全対全通信が可能かどうかを、効率的に判断することができる。
なお、ルーティング機能が故障したノードを含むというだけで、単位ノード群内のすべてのノードについて利用できなくなると、ノードの利用効率が低下する。スケジューラ130は、例えば、単位ノード群内の軸b=1の面上のノードすべてについて、ルーティング機能が正常であれば、その単位ノード群内のノードを利用可能とすることができる。
図21は、ルーティング機能が故障したノードを含むもののノードの利用が可能な単位ノード群の例を示す図である。単位ノード群80v,80w,80xは、いずれもルーティング機能が故障したノードを含んでいる。このとき単位ノード群80vのb=1の面上のノード82v,83v,84v,85vが正常にルーティングできれば、単位ノード群80v内の他のノードは、1ホップでb=1面上のいずれかのノードと通信できる。b=1の面上のノード82v,83v,84v,85vのいずれかを用いて、単位ノード間の通信を行うようにすれば、単位ノード群80v内のノードは、ルーティング機能が故障したノードを経由せずに他のノードと通信できることが保証される。これは、他の単位ノード群80w,80xにおいても同様である。
すなわち、単位ノード群80v,80w,80xそれぞれのb=1の面上のノードがすべて正常にルーティングできれば、以下のことが保証できる。
・bcaルーティング:送信元ノードからb=1面へは1ホップで移動可能
・xyzルーティング:b=1面の4ノードのうちいずれかで移動可能
・acbルーティング:b=1面から送信先ノードへは1ホップで移動可能
これにより、例えば単位ノード群80v内のノード81vから単位ノード群80x内のノード81xへのデータ送信も可能であることが分かる。その結果、ルーティング機能が故障したノードを含む単位ノード群80v,80w,80x内のノードを、ジョブに割り当てることが可能となる。
ここで軸bがトーラス結合であれば、b=0面上のノードがすべて正常にルーティングできる場合、またはb=2面上のノードがすべて正常にルーティングできる場合にも、単位ノード群80v,80w,80x内のノードをジョブに割り当て可能となる。
このように、ルーティング機能が故障したノードを含む単位ノード群であっても、その単位ノード群内のノードを利用可能としたことで、ノードの有効利用が可能となる。
図22は、通信規則ごとの利用可能ノード数の比較例を示す図である。図22には、以下の4種類の通信規則ごとに、利用可能ノード数が示されている。
・規則「ALL」:xyzルーティングに任意ノードを利用(故障を含む単位ノード群へはプロセスを割り当てない)
・規則「b0」:xyzルーティングにb=0面内のノードを利用(BB内でb=0のノードに故障が無いこと)
・規則「b1」:xyzルーティングにb=1面内のノードを利用(BB内でb=1のノードに故障が無いこと)
・規則「b2」:xyzルーティングにb=2面内のノードを利用(BB内でb=2のノードに故障が無いこと)
単位ノード群96の場合、ルーティング機能が故障したノードを含んでいない。そのため、いずれの規則であっても、空きノードすべてが利用可能となる。
単位ノード群96の場合、b=0の面上のノードにおいて、ルーティング機能が故障している。規則「ALL」では利用可能ノード数「0」である。規則「b0」は適用できない。規則「b1」と「b2」では、9台のノードが利用可能となる。
単位ノード群97の場合、b=2の面上のノードにおいて、ルーティング機能が故障している。規則「ALL」では利用可能ノード数「0」である。規則「b2」は適用できない。規則「b0」と「b1」では、9台のノードが利用可能となる。
このように、ルーティング機能が故障したノードを含む単位ノード群内のノードを利用可能とすることで、ノードの有効利用が促進される。
次に、ネットワークトポロジーが6(=3+3)次元のメッシュ/トーラス結合のBB探索の具体例を、図23〜図25を参照して説明する。以下の例では、単位ノード群ごとに利用可能ノード数が集計されているものとする。またBBの軸a、軸b、軸cの範囲は全範囲として、軸x、軸y、軸zの範囲を、順番に決定するものとする。軸x、軸y、軸zのうち、優先順位が最も高い軸を軸0、次に優先順位が高い軸を軸1、最も優先順位が低い軸を軸2として、軸ごとの範囲が決定される。
図23は、軸0の範囲決定例を示す図である。この例では、要求ノード数は「250」である。また軸は、すべてメッシュ結合である。
軸0方向には、3つの単位ノード群が並べられている。そして軸0=0の面上の単位ノード群、軸0=1の面上の単位ノード群、および軸0=2の面上の単位ノード群それぞれについて、利用可能ノード数が集計されている。軸0=0の面上の単位ノード群の利用可能ノードの総数は「20」である。軸0=1の面上の単位ノード群の利用可能ノードの総数は「90」である。軸0=2の面上の単位ノード群の利用可能ノードの総数は「240」である。
まず、軸0方向の幅が1(s0=1)の場合に、利用ノード数を満足するBBが生成できるかが検討される。この例では、軸0方向の幅が1(s0=1)では、利用ノード数を満たすことができない。
次に、軸0方向の幅が2(s0=2)の場合に、利用ノード数を満足するBBが生成できるかが検討される。この例では、軸0の範囲の開始位置をx0=1とすれば、利用ノード数を満たすことができる。そこで、軸0の範囲が「x0=1,s0=2」に決定する。
図24は、軸1の範囲決定例を示す図である。決定した軸0の範囲内の軸0の値ごとの各単位ノード群内の利用可能ノード数が、軸1−軸2平面の位置ごとに合計(マージ)される。
軸1方向には、5つの単位ノード群が並べられている。軸1=0の面上の単位ノード群の利用可能ノードの総数は「73」である。軸1=1の面上の単位ノード群の利用可能ノードの総数は「89」である。軸1=2の面上の単位ノード群の利用可能ノードの総数は「68」である。軸1=3の面上の単位ノード群の利用可能ノードの総数は「48」である。軸1=4の面上の単位ノード群の利用可能ノードの総数は「52」である。
まず、軸1方向の幅が1(s1=1)から徐々に広げながら、利用ノード数を満足するBBが生成できるかが検討される。この例では、軸1方向の幅が1(s1=1)〜3(s1=3)では、利用ノード数を満たすことができない。
その後、軸1方向の幅が4(s1=4)の場合に、利用ノード数を満足するBBが生成できるかが検討される。この例では、軸1の範囲の開始位置をx1=0とすれば、利用ノード数を満たすことができる。そこで、軸1の範囲が「x1=0,s1=4」に決定する。
図25は、軸2の範囲決定例を示す図である。決定した軸1の範囲内の軸1の値ごとの各単位ノード群内の利用可能ノード数が、軸2の位置ごとに合計(マージ)される。
軸2方向には、4つの単位ノード群が並べられている。軸2=0である単位ノード群の利用可能ノードの総数は「71」である。軸2=1である単位ノード群の利用可能ノードの総数は「63」である。軸2=2である単位ノード群の利用可能ノードの総数は「79」である。軸2=3である単位ノード群の利用可能ノードの総数は「65」である。
まず、軸2方向の幅が1(s2=1)から徐々に広げながら、利用ノード数を満足するBBが生成できるかが検討される。この例では、軸2方向の幅が1(s2=1)〜3(s2=3)では、利用ノード数を満たすことができない。
その後、軸2方向の幅が4(s2=4)の場合に、利用ノード数を満足するBBが生成できるかが検討される。この例では、軸2の範囲の開始位置をx2=0とすれば、利用ノード数を満たすことができる。そこで、軸2の範囲が「x2=0,s2=4」に決定する。その結果、BBの領域は、「x(1,0,0)、s(2,4,4)」に決定される。
このように、各軸方向に、狭い範囲から徐々に幅を広げてBBの領域を決定することで、利用ノード数以上の利用可能なノードを含む、できるだけ小さいサイズのBBを生成できる。その結果、ジョブに割り当てたノード間の通信を効率的に行うことができ、処理効率が向上する。また、BB内に利用できないノードが含まれることを許容しているため、利用ノード数以上の利用可能なノードを含むようになるまでBBのサイズを最大値まで広げていくことができ、ノードの有効利用が可能である。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 端末装置
2a,2b,2c ノード
3 ジョブ実行要求
4 n次元空間
5 BB(Bounding Box)
10 ジョブ管理装置
11 記憶部
12 演算部
1つの側面では、本件では、ノードを有効活用しながらも、ノード間通信の性能低下を抑制することを目的とする。
1態様によれば、ノードを有効活用しながらも、ノード間通信の性能低下を抑制することができる。
このようなジョブ管理装置10にジョブ実行要求3が入力されると、演算部12が、利用ノード数分の利用可能ノードを含むBB5を探索する。その際、演算部12は、各軸の座標値の範囲を順に決定する。例えば、軸0、軸1、軸2の順で、範囲を決定するものとする。その場合、演算部12は、まず軸0の範囲の幅を所定値(例えば1)から広げていく。例えば演算部12は、軸0の所定値の幅の範囲を候補範囲として、軸0の座標値がその範囲内の利用可能なノード数が、ジョブの利用ノード数(例えば「7」)以上あるかどうかを判断する。利用可能なノード数がジョブの利用ノード数未満であれば、演算部12は、同じ幅のまま、範囲を軸0方向にずらしていき、利用可能なノード数がジョブの利用ノード数以上となる位置を探索する。すべての位置で利用可能なノード数がジョブの利用ノード数未満であれば、演算部12は、軸0の座標値の範囲の幅を広げ、同様に探索する。そして、演算部12は、探索過程で最初に利用可能なノード数がジョブの利用ノード数以上となったときの範囲を、軸0の座標値の範囲に決定する。
ジョブに対するノードの割り当てを、サブメッシュまたはサブトーラス内から行った場合、ジョブA、ジョブB、ジョブCへのノードの割り当て後、空きノードが3つあるにもかかわらず、ジョブDにノードを割り当てることができない。すなわち、サブメッシュまたはサブトーラスは、他のサブメッシュ/サブトーラスと領域が重ならないことが前提となるため、3つの空きノードを囲むサブメッシュ/サブトーラスを生成できない。
また、できるだけ小さいBBを生成することで、ノード内のルーティング機能の故障の影響を受けるジョブの数を抑制する効果も期待できる。
図7は、ルータ故障の影響範囲の一例を示す図である。ネットワークトポロジーがメッシュ/トーラスで、かつ、ノード間通信におけるパケットの経路選択(ルーティング)が静的であるものとする。すなわち、予め決められた経路でデータ通信が行われる。図7の例では、ジョブAに割り当てられたノード間の通信と、ジョブBに割り当てられたノード間の通信と、ジョブCに割り当てられたノード間の通信とがいずれもノード57を経由している。この場合、ノード57のルーティング機能が故障すると、ノード57を経由したノード間通信を行う全てのジョブに影響が及ぶ。このように通信経路の重なりが多いほど、1台のノードの故障の影響範囲が大きくなりやすい。
第2の実施の形態では、1ジョブに割り当てた全てのノード間で通信が可能なことを保証できるBBを選択し、そのBB内のノードをジョブに割り当てる。これにより、ノードの割り当て後に通信障害が判明し、再割り当てとなるような事態の発生を抑止できる。
これにより、ノードに故障箇所が発生した際に、当該ノードを通過するジョブの数ができるだけ少なくなるようにBBが選択される。結果として故障の影響を受けるジョブの数をできるだけ少なくすることが、適正な処理時間の範囲で可能となる。
当該システムに属するノードの位置はn次元の座標を用いて(x0,x1,・・・,xn-1)と表せるものとする。ここでxiは、当該ノードの軸i方向の座標値を表わす0以上の整数値である。原点O=(0,0,・・・,0)軸iサイズ Si=max{xi+1|x∈X},S=(S0,S1,・・・,S(n-1))と定義する。ここで、Xはシステムに属するノードの集合である。原点がxであり、軸i方向の大きさがsiであるn次元の矩形領域を、s=(s0,s1,・・・,s(n-1))を用いてR(x,s)と表記する。R(x,s)={(x0+d0,x1+d1,・・・,x(n-1)+d(n-1))|d0∈[0,s0),d1∈[0,s1),・・・,d(n-1)∈[0,s(n-1))]}である。以下では、R(O,S)=Xを満たす、すなわち、矩形領域R(O,S)内の任意の座標値について対応するノードが存在すると仮定する。本仮定を満たさないようなシステムの場合、ノードが存在しない座標値には、ジョブの割り当ておよび通信経路として利用することのできないノードが存在しているとみなすことで本手法を適用することが可能である。
[第3の実施の形態]
次に第3の実施の形態について説明する。第3の実施の形態は、BBの探索に際して、以前の探索結果より全ノード間での通信が保証されないことが明らかなBBについては、全ノード間で通信可能かどうかの検証を省略するものである。これにより、BB探索処理の効率化が図れる。
例えば、スケジューラ130は、ネットワークトポロジーがn次元のメッシュ/トーラス結合であるとしたとき、BBの探索過程で生成したBBについて、BB内全域の全ノードで相互に通信可能なこと(全対全通信)が保証されるか検証する。スケジューラ130は、保証されない場合は次のBBの探索を行う。スケジューラ130は、次のBBの探索に際して、以前の探索結果より全ノード間での通信が保証されないことが明らかなBBについては、全ノード間で通信可能かどうかの検証は行わない。
図18は、ルーティング機能が故障したノードがある場合のノード間通信の例を示す図である。図18には、単位ノード群80e内のノード81eからの単位ノード群80h内のノード81hへのデータ転送例が示されている。単位ノード群80e〜80h間のデータの移動は、ノード82e〜82hを介して行われる。このときデータを中継する単位ノード群80f,80g内のノード82f,82g以外のノード83f,83gが故障しているが、データ通信には影響しない。
このようにして、ルーティング機能の故障が発生した際に、1ジョブに割り当てた全てのノード間で通信が可能なことを保証するための検証を、簡単な処理で行うことができる。すなわち、n(u+v)次元メッシュ/トーラスであるものの、u次元での射影で検証ができ、検証対象の次元数が低減されている。その結果、1ジョブに割り当てた全てのノード間で通信が可能なことを保証することが、適切な処理時間の範囲で可能となる。
ノードの座標は(x0,x1,x2,x3,x4,x5)と表せる。ノード間のパケットは、以下の経路を通過するようルーティングされるものとする。
1.軸3,4,5からなる3次元サブメッシュ/トーラス内の移動(移動時に通過するノードの軸0,1,2の座標値はすべて同一)
2.軸0,1,2からなる3次元サブメッシュ/トーラス内の移動(移動時に通過するノードの軸3,4,5の座標値はすべて同一)
3.軸3,4,5からなる3次元サブメッシュ/トーラス内の移動(移動時に通過するノードの軸0,1,2の座標値はすべて同一)
BB内のルーティング機能の故障が存在するノードの座標値の集合をBとする。また、集合Bの軸3,4,5からなるサブメッシュ/トーラス空間への射影B’を以下のように定義する。
B’={(x3,x4,x5)|∀(x0,x1,x2,x3,x4,x5)∈B}
このとき、以下の条件を満たす場合、全対全通信が保証されると判断する。
(B’の補集合)≠(空集合)、かつルーティング機能が故障したノードと(x0,x1,x2)座標値がすべて同一であるノードをジョブへは割り当てない。
図21は、ルーティング機能が故障したノードを含むもののノードの利用が可能な単位ノード群の例を示す図である。単位ノード群80v,80w,80xは、いずれもルーティング機能が故障したノードを含んでいる。このとき単位ノード群80vのb=1の面上のノード82v,83v,84v,85vが正常にルーティングできれば、単位ノード群80v内の他のノードは、1ホップでb=1面上のいずれかのノードと通信できる。b=1の面上のノード82v,83v,84v,85vのいずれかを用いて、単位ノード間の通信を行うようにすれば、単位ノード群80v内のノードは、ルーティング機能が故障したノードを経由せずに他のノードと通信できることが保証される。これは、他の単位ノード群80w,80xにおいても同様である。
このように、ルーティング機能が故障したノードを含む単位ノード群であっても、その単位ノード群内のノードを利用可能としたことで、ノードの有効利用が可能となる。
図22は、通信規則ごとの利用可能ノード数の比較例を示す図である。図22には、以下の4種類の通信規則ごとに、利用可能ノード数が示されている。
・規則「ALL」:xyzルーティングに任意ノードを利用(故障を含む単位ノード群へはジョブを割り当てない)
・規則「b0」:xyzルーティングにb=0面内のノードを利用(BB内でb=0のノードに故障が無いこと)
・規則「b1」:xyzルーティングにb=1面内のノードを利用(BB内でb=1のノードに故障が無いこと)
・規則「b2」:xyzルーティングにb=2面内のノードを利用(BB内でb=2のノードに故障が無いこと)
単位ノード群96の場合、ルーティング機能が故障したノードを含んでいない。そのため、いずれの規則であっても、空きノードすべてが利用可能となる。
単位ノード群97の場合、b=0の面上のノードにおいて、ルーティング機能が故障している。規則「ALL」では利用可能ノード数「0」である。規則「b0」は適用できない。規則「b1」と「b2」では、9台のノードが利用可能となる。
単位ノード群98の場合、b=2の面上のノードにおいて、ルーティング機能が故障している。規則「ALL」では利用可能ノード数「0」である。規則「b2」は適用できない。規則「b0」と「b1」では、9台のノードが利用可能となる。
図23は、軸0の範囲決定例を示す図である。この例では、利用ノード数は「250」である。また軸は、すべてメッシュ結合である。
軸0方向には、3つの単位ノード群が並べられている。そして軸0=0の面上の単位ノード群、軸0=1の面上の単位ノード群、および軸0=2の面上の単位ノード群それぞれについて、利用可能ノード数が集計されている。軸0=0の面上の単位ノード群の利用可能ノードの総数は「20」である。軸0=1の面上の単位ノード群の利用可能ノードの総数は「90」である。軸0=2の面上の単位ノード群の利用可能ノードの総数は「240」である。

Claims (8)

  1. コンピュータに、
    利用ノード数を指定したジョブ実行要求に応じて、複数のノードがメッシュ結合またはトーラス結合で接続されたネットワークを表すn(nは2以上の整数)次元の空間のn個の軸から、順番に決定対象軸を選択し、
    前記複数のノードそれぞれのn次元の座標値と利用可否を含む状態を示す状態情報とに基づいて、前記決定対象軸の座標値の候補範囲の幅を所定値から広げていき、範囲が決定した軸の座標値が該範囲内であり、前記決定対象軸の座標値が前記候補範囲内である利用可能なノードの数が前記利用ノード数以上となったときの前記候補範囲を、前記決定対象軸の座標値の範囲に決定し、
    すべての軸について座標値の範囲が決定すると、各軸の決定した範囲内の座標値を有する利用可能な第1ノードの中から、前記ジョブに割り当てる第2ノードを決定する、
    処理を実行させるジョブ管理プログラム。
  2. 前記コンピュータに、さらに、
    前記状態情報には、前記複数のノードの故障の有無が含まれており、すべての軸の範囲を決定したとき、前記複数のノードの前記座標値と前記状態情報とに基づいて、前記第1ノード間で全対全通信が保証できるかどうかを判断する処理を実行させ、
    前記第2ノードの決定では、全対全通信が保証できると判断された場合に、前記第1ノードの中から、前記ジョブに割り当てる第2ノードを決定する、
    請求項1記載のジョブ管理プログラム。
  3. 前記範囲の決定では、前記第1ノード間で全対全通信が保証できないと判断された場合、既に範囲が決定された軸の少なくとも一部において範囲が変更されるように、範囲決定をやり直す請求項2記載のジョブ管理プログラム。
  4. 前記範囲の決定では、前記決定対象軸の座標値の範囲の幅を変えずに範囲の位置を移動しても、すべての位置において前記第1ノード間で全対全通信が保証できないと判断された場合、前記決定対象軸の座標値の範囲の決定を取りやめ、既に範囲が決定された軸の少なくとも一部において範囲が変更されるように、範囲決定をやり直す請求項2または3記載のジョブ管理プログラム。
  5. 前記ネットワークは、ノード集合である単位ノード群内のノードがu(uは1以上の整数)次元メッシュ結合またはu次元トーラス結合で接続された第1ネットワークと、複数の単位ノード群がv(vは1以上の整数)次元メッシュ結合またはv次元トーラス結合で接続された第2ネットワークとで構成されており、前記第2ネットワークでは、隣接する単位ノード群内のu次元の座標値が同じノード同士が接続されており、
    前記判断では、前記複数の単位ノード群内の各ノードのu次元の座標値のうち、前記複数の単位ノード群それぞれにおけるルーティング機能が故障した故障ノードのv次元の座標値と重複しない座標値が少なくとも1つあれば、前記第2ネットワークを介した単位ノード群間の全対全通信が保証できると判断する請求項2乃至4のいずれかに記載のジョブ管理プログラム。
  6. 前記範囲の決定では、範囲が決定した軸の座標値が該範囲内である利用可能なノードの数から、範囲が決定した軸の座標値が該範囲内であり、前記決定対象軸の座標値が所定座標値である利用可能なノードの数を減算した結果が、前記利用ノード数に満たない場合、前記候補範囲の幅の前記所定値を、前記決定対象軸の座標値の全範囲とする請求項1乃至5のいずれかに記載のジョブ管理プログラム。
  7. コンピュータが、
    利用ノード数を指定したジョブ実行要求に応じて、複数のノードがメッシュ結合またはトーラス結合で接続されたネットワークを表すn(nは2以上の整数)次元の空間のn個の軸から、順番に決定対象軸を選択し、
    前記複数のノードそれぞれのn次元の座標値と利用可否を含む状態を示す状態情報とに基づいて、前記決定対象軸の座標値の候補範囲の幅を所定値から広げていき、範囲が決定した軸の座標値が該範囲内であり、前記決定対象軸の座標値が前記候補範囲内である利用可能なノードの数が前記利用ノード数以上となったときの前記候補範囲を、前記決定対象軸の座標値の範囲に決定し、
    すべての軸について座標値の範囲が決定すると、各軸の決定した範囲内の座標値を有する利用可能な第1ノードの中から、前記ジョブに割り当てる第2ノードを決定する、
    ジョブ管理方法。
  8. 複数のノードがメッシュ結合またはトーラス結合で接続されたネットワーク内の前記複数のノードそれぞれのn(nは2以上の整数)次元の座標値と利用可否を含む状態を示す状態情報とを記憶する記憶部と、
    利用ノード数を指定したジョブ実行要求に応じて、前記ネットワークを表すn次元の空間のn個の軸から、順番に決定対象軸を選択し、前記複数のノードそれぞれのn次元の座標値と利用可否を含む状態を示す状態情報とに基づいて、前記決定対象軸の座標値の候補範囲の幅を所定値から広げていき、範囲が決定した軸の座標値が該範囲内であり、前記決定対象軸の座標値が前記候補範囲内である利用可能なノードの数が前記利用ノード数以上となったときの前記候補範囲を、前記決定対象軸の座標値の範囲に決定し、すべての軸について座標値の範囲が決定すると、各軸の決定した範囲内の座標値を有する利用可能な第1ノードの中から、前記ジョブに割り当てる第2ノードを決定する演算部と、
    を有するジョブ管理装置。
JP2014220910A 2014-10-30 2014-10-30 ジョブ管理プログラム、ジョブ管理方法、およびジョブ管理装置 Active JP6413634B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014220910A JP6413634B2 (ja) 2014-10-30 2014-10-30 ジョブ管理プログラム、ジョブ管理方法、およびジョブ管理装置
US14/828,555 US9329898B1 (en) 2014-10-30 2015-08-18 Method and apparatus for job management
EP15182489.3A EP3015982A1 (en) 2014-10-30 2015-08-26 Program, method, and apparatus for job management

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014220910A JP6413634B2 (ja) 2014-10-30 2014-10-30 ジョブ管理プログラム、ジョブ管理方法、およびジョブ管理装置

Publications (2)

Publication Number Publication Date
JP2016091069A true JP2016091069A (ja) 2016-05-23
JP6413634B2 JP6413634B2 (ja) 2018-10-31

Family

ID=54035138

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014220910A Active JP6413634B2 (ja) 2014-10-30 2014-10-30 ジョブ管理プログラム、ジョブ管理方法、およびジョブ管理装置

Country Status (3)

Country Link
US (1) US9329898B1 (ja)
EP (1) EP3015982A1 (ja)
JP (1) JP6413634B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020174840A1 (ja) * 2019-02-28 2020-09-03 ソニー株式会社 情報処理装置及び情報処理方法
JP2022522320A (ja) * 2019-03-06 2022-04-18 グーグル エルエルシー 光ネットワークを用いた再構成可能な計算ポッド

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108304261B (zh) * 2017-12-29 2022-05-24 曙光信息产业(北京)有限公司 一种基于6D-Torus网络的作业调度方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63245553A (ja) * 1987-03-31 1988-10-12 Toshiba Corp 並列処理システム
JP2006146864A (ja) * 2004-11-17 2006-06-08 Raytheon Co 高性能計算(hpc)システムにおけるスケジューリング

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8117288B2 (en) 2004-10-12 2012-02-14 International Business Machines Corporation Optimizing layout of an application on a massively parallel supercomputer
WO2012020474A1 (ja) 2010-08-10 2012-02-16 富士通株式会社 ジョブ管理装置及びジョブ管理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63245553A (ja) * 1987-03-31 1988-10-12 Toshiba Corp 並列処理システム
JP2006146864A (ja) * 2004-11-17 2006-06-08 Raytheon Co 高性能計算(hpc)システムにおけるスケジューリング

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020174840A1 (ja) * 2019-02-28 2020-09-03 ソニー株式会社 情報処理装置及び情報処理方法
JP2022522320A (ja) * 2019-03-06 2022-04-18 グーグル エルエルシー 光ネットワークを用いた再構成可能な計算ポッド
JP7242847B2 (ja) 2019-03-06 2023-03-20 グーグル エルエルシー 光ネットワークを用いた再構成可能な計算ポッド

Also Published As

Publication number Publication date
US9329898B1 (en) 2016-05-03
EP3015982A1 (en) 2016-05-04
JP6413634B2 (ja) 2018-10-31

Similar Documents

Publication Publication Date Title
US10594591B2 (en) Information processing apparatus, method and non-transitory computer-readable storage medium
US7543252B2 (en) Migration of integrated circuit layout for alternating phase shift masks
US9350633B2 (en) Dynamic optimization of command issuance in a computing cluster
JP6241300B2 (ja) ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
KR100998391B1 (ko) 데이터 처리 시스템을 관리하는 규정 설정 방법, 컴퓨터 판독 가능한 저장 매체 및 시스템
CN107851043B (zh) 快捷外围部件互连网络中资源组的动态分配
JP5402226B2 (ja) 管理装置、情報処理システム、情報処理システムの制御プログラムおよび情報処理システムの制御方法
US20130219022A1 (en) Hypothetical policy and event evaluation
US9678800B2 (en) Optimum design method for configuration of servers in a data center environment
JP6413634B2 (ja) ジョブ管理プログラム、ジョブ管理方法、およびジョブ管理装置
JP6468499B2 (ja) 分散コンピューティングアーキテクチャ
US9996391B2 (en) Parallel computer system, method of controlling parallel computer system, and recording medium
US20160301754A1 (en) Distributed file system using torus network and method for configuring and operating distributed file system using torus network
EP3731093A1 (en) Service location management in computing systems
JP2016024612A (ja) データ処理制御方法、データ処理制御プログラムおよびデータ処理制御装置
Ungureanu et al. Kubernetes cluster optimization using hybrid shared-state scheduling framework
JP5515889B2 (ja) 仮想マシンシステム、自動マイグレーション方法および自動マイグレーションプログラム
JP6459630B2 (ja) データ転送制御装置、データ転送制御プログラム、および並列計算システム
US20120246512A1 (en) Parallel computer system, control device, and controlling method
JP6666553B2 (ja) 情報処理装置、ジョブ管理方法およびジョブ管理プログラム
US11294591B2 (en) Apparatus configured to create extended configuration proposal of storage system including multiple notes
CN116260876A (zh) 基于K8s的AI应用调度方法、装置及电子设备
US10061624B2 (en) Parallel computing system, job management device, and job management method
KR20200013129A (ko) 클라우드 컴퓨팅 시스템에서 가상 머신 재배치 방법
JP2021086178A (ja) 情報処理装置および並列演算プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180703

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180831

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180904

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180917

R150 Certificate of patent or registration of utility model

Ref document number: 6413634

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150