JP6446989B2 - 計算機システム,処理方法及びジョブ処理プログラム - Google Patents
計算機システム,処理方法及びジョブ処理プログラム Download PDFInfo
- Publication number
- JP6446989B2 JP6446989B2 JP2014211692A JP2014211692A JP6446989B2 JP 6446989 B2 JP6446989 B2 JP 6446989B2 JP 2014211692 A JP2014211692 A JP 2014211692A JP 2014211692 A JP2014211692 A JP 2014211692A JP 6446989 B2 JP6446989 B2 JP 6446989B2
- Authority
- JP
- Japan
- Prior art keywords
- job
- reference point
- node
- nodes
- coordinates
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
Description
その理由の一つは、単一のジョブが複数のプロセッサを使用して並列処理を行ない、且つ、複数のジョブがシステム上で実行されている時に、ジョブ間で通信が干渉する事で各ジョブの性能が低下しないようにするためである。このため、各ジョブを、通信トラフィックが他の部分と干渉しない領域内でそれぞれ実行させる。
大規模な並列計算機システムのネットワークは、ネットワーク上での「近さ」が複数の独立なパラメータで表される場合が多い。例えば、ファットツリー(Fat Tree)のように階層的な接続構成を持つネットワークでは、「第N層の接続での近さ」は、Nが異なれば相互に独立な「近さ」を表すパラメータと考える事ができる。なお、例えばFat Treeの場合では、各ノードから数えてN段目のスイッチ同士の間で互いに何段のスイッチを介して接続されているかが「第N層の接続での近さ」に相当する。
このようにアドレスがN次元空間上の格子点として与えられる並列計算機システムのネットワークとしては、他に3次元クロスバなどの別の例もある。
図37(a),(b)はネットワークトポロジーを例示する図であり、(a)はメッシュを、また、(b)はトーラスをそれぞれ示す。
これらの2つのネットワークトポロジーにおいては、ノードの座標の付け方は共通であり、2つのノードを直接結ぶ通信リンクの存在条件だけが異なる。
2N個の整数L(1),..., L(N), M(1),...., M(N) (ただし1≦i≦N なる全ての整数についてL(i)<M(i))を所与として、システムのノードの座標が、{{x(1),...x(N)}| 1≦i≦N かつL(i)≦x(i)≦M(i)} というN 個の整数の組で与えられるとする。
そして、システムのネットワークトポロジーが(N次元)メッシュであるとは、2つのノード間を直接結ぶリンクが存在する条件が、各ノードの座標を(x(1), x(2),..., x(N)), (y(1), y(2),..., y(N)) として、座標の差の絶対値の集合{|x(i)-y(i)|1≦i≦N} の中で1つのi に対応する要素だけが1であり、他は0となる場合を指す。
ここで、各属性のジョブが必要なノード数に関して事前に情報がない場合には、システム内のノードを、ほぼ同じ大きさの連結性を持つ領域に分割する事が妥当と考えられる。また、各領域の形状が大きく異ならないようにするためには、領域内のある基準点からの近さないし遠さが、領域毎に大きく異ならないようにする事が望ましい。
さらに、ジョブが投入される時にはそのジョブが必要とする大きさおよび特定の配置形状を持つ領域を割り当て、終了時には回収する事を繰り返す中で、フラグメンテーションをできるだけ抑えながら、属性値が同じジョブを近くに配置し続ける手順は、例えば予め割り当て範囲を完全に固定したとしても、明らかではない。
従って、従来においては、ジョブをネットワーク上の領域に割り振る際には、例えば空いている領域に順次ジョブを割り振り、これにより、属性毎にジョブをまとめて配置することができない。
図1は実施形態の一例としての並列計算機システム1の構成を示す図である。
並列計算機システム1は、図1に示すように、複数の計算ノード200がネットワーク20を介して相互に通信可能に接続され、これにより相互結合網が構成されている。また、ネットワーク20には、ジョブスケジューラノード100が接続されている。
計算ノード200は情報処理装置であり、互いに同様の構成をそなえる。各計算ノード200は、図1に示すように、それぞれ、CPU(Central Processing Unit)201,メモリ202およびNIC(Network Interface Card)203を備える。
メモリ202はROM(Read Only Memory)及びRAM(Random Access Memory)を含む記憶装置である。メモリ202のROMには、各種演算に係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ202上のソフトウェアプログラムは、CPU201に適宜読み込まれて実行される。又、メモリ202のRAMは、一次記憶メモリあるいはワーキングメモリとして利用される。
ジョブスケジューラノード100は、計算ノード200に実行させるジョブを決定する。すなわち、計算ノード200に対するジョブの割り当てを行なう。
ジョブスケジューラノード100は、情報処理装置であり、CPU101,メモリ102およびNIC103を備える。
メモリ102はROM及びRAMを含む記憶装置である。メモリ102のROMには、ジョブスケジューリングに係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ102上のソフトウェアプログラムは、CPU101に適宜読み込まれて実行される。又、メモリ102のRAMは、一次記憶メモリあるいはワーキングメモリとして利用される。
なお、このジョブスケジューラ10としての機能を実現するためのプログラム(ジョブ処理プログラム)は、例えばフレキシブルディスク,CD(CD−ROM,CD−R,CD−RW等),DVD(DVD−ROM,DVD−RAM,DVD−R,DVD+R,DVD−RW,DVD+RW,HD DVD等),ブルーレイディスク,磁気ディスク,光ディスク,光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
図2は実施形態の一例としての並列計算機システム1のジョブスケジューラ10の機能構成を示す図である。
ノード間情報設定部11は、本並列計算機システム1における異なる2つのノード座標(例えばE,F)の「近さ(nearness)」あるいは「遠さ(farness)」を定める。
遠隔度関数としては、例えば、N次元トーラスやN次元メッシュでのマンハッタン距離やユークリッド距離等の2つのノード座標の間の「距離関数」を使用できる。具体的な例については後述する。
遠隔度関数の実質的な意味は「通信時間の見積もり指標」であり、例えば、中継点の個数やホップ数や直近での通信時間の測定値などとしてもよく、これらの例は三角不等式を満たさない場合がある。
遠隔度関数は、単一のシステムに対して複数使い分けてもよい。例えば、システム内での配分比率を変更する際に、時刻別あるいは基準点別に遠隔度関数を変更してもよい。
領域の形状(より一般的には、あるトポロジーでのノード座標を、より単純なトポロジーでの座標の組で書く場合の座標の集合の関係S(1) = S(2)×S(3) ないしS(1) ⊂ S(2) × S(3))に応じて、各部分座標を異なった重み付けで組み合わせて計算してもよい。
このように、ノード間情報設定部11は、本並列計算機システム1を構成するネットワークトポロジーに含まれる各ノード位置(ノード座標)を、2つのノード座標間の遠隔度関数で表す。
基準点決定部12は、m個の相違なるジョブ属性値{a(i)|1≦i≦m}の各々のa(i)に対し、「ノード割り当て基準点」となる特定のノード座標の集合c(i)を対応させる。
各属性値に対応するノード割り当て基準点に対しての遠隔度関数ないし近接度関数の値を入力として、後述する割り当て候補ノード集合探索部13が機能する。
基準点決定部12は、以下に示すような初期配置決定部121としての機能を備える。
初期配置決定部121は、各ジョブ属性値に対し、少なくとも1つの基準点を設定する。すなわち、c(i) は空集合ではない。
なお、各ジョブ属性値に対応する基準点は複数であってもよい。例えば、2つの基準点を設定し、2つの座標間のユークリッド距離を「遠隔度関数」として、「各基準点までの「遠隔度関数」の和が特定の値以下」という条件を使って、後述する割り当て候補ノード集合探索部13の探索範囲を「各平面での断面が楕円になる領域」に限定してもよい。また、「ある基準点からの遠隔度関数が一定値以上で、別の基準点からの遠隔度関数が一定値以下」のように限定してもよい。
T(1) での座標の集合をS(1) 、T(2) およびT(3) での座標の集合をS(2)およびS(3) とするとき、S(1) = S(2) × S(3) 、または、S(1) ⊂ S(2) × S(3)となる。
例えば、Fat Treeなども、ネットワーク20を構成するスイッチ(図示省略)の階層を区分してこのように扱える。スイッチを使う間接網の場合には、同じスイッチに接続されている場合は等距離と見なせる。「遠隔度関数」としては、例えばFat Tree などの規則的な接続構成の場合、「通信時に通過するスイッチの数」を使用できる。スイッチ間の接続が不規則の場合は、各スイッチへの負荷集中のパターンが一様とは限らないため、実際の通信時間の測定値などを「遠隔度関数」として使用する必要性が高まる。
以下では、“^ ”は冪乗、“*” は乗法を表す記号とする。数学の一般的な慣例の通り、数に対しては“+”は加法、“| |”は絶対値を表す記号とする。ただし、集合に対しては“| |”で要素数を表す記号とする。また、整数とは限らない実数に対し、“[ ]” を、その数を越えない最大の整数を表す記号とする。いわゆるガウスの記号である。さらに、例えば、“[x]”を関数として表す場合は、“floor(x)” と表記する。
基準点決定部12は、k^N と書ける場合の基準点の配置を「頂点」、2つの基準点の間のリンクの集合を「辺」とする(グラフ理論の意味での)グラフで、ハミルトン路またはハミルトン閉路に沿って、一定間隔でk^N-m個の点を取り除く事で、m個の基準点を選ぶ。
図3はハミルトン路を例示する図である。ハミルトン路に沿って等間隔でグラフの頂点を基準点の集合から除く事で、属性の数が正の整数の冪でない場合や、より小さい数の倍数の形に書けない(割って余りが出る)場合の基準点の数を調整する。
特にs次元の単位立方体のハミルトン路(ハミルトン閉路でもある)については、s bit のGray コードと対応している事が利用できる。それ以外の場合、図4(a)〜(c)および図5(a)〜(c)に示すように、より低い次元のハミルトン路を順次接続する。これにより始点と終点とが1つの座標軸では一方が最小値、他方が最大値で、他の座標値は全て等しいハミルトン路が取れる。従ってトーラスの場合、始点と終点が異なる値を持つ座標軸のwrap around link を最後に使う事により、ハミルトン閉路が取れる。
(手法2)N-2次元の直方体と2次元の直方体の「直積」としてN次元の直方体を表す事により、Nがより小さい場合の処理に順次帰着する。
また、一般に2より大きい正の整数nについてnまたはn+1の一方は素数でない事を利用し、mまたはm+1を因数分解して、各次元の座標範囲を分割し、Nがより小さい場合に順次帰着する事もできる。
属性値の数の方が多ければ、部分ネットワークに対し基準点を割り振って、各部分ネットワークでの基準点の配置に帰着する。一方、部分ネットワークの方が多ければ、複数のネットワークを属性値の数のグループにまとめ、グループ毎に共通する基準点を割り当てる。
割り当て候補ノード集合探索部13は、ジョブ属性値a(i)を持つジョブが投入された際に、割り当てが必要なノードの集合が正の整数kに対し、k個の数値パラメータの組B= {b(1), b(2),..., b(k)}で規定される条件を必要とする時、Bで指定された条件および「ノード割り当て基準点」からの「遠隔度」に関する所定の条件を満たすノード集合(割り当て候補ノード集合)を探索する。
割り当て候補ノード集合探索部13は、空き領域探索を基準点に近い空き領域から順に行なう事により、同じ属性のジョブを出来るだけ基準点の近くに保つ。
図6〜図9は、それぞれ実施形態の一例としての並列計算機システム1の割り当て候補ノード集合探索部13によるジョブの割り当て方法を示す図である。なお、図6および図7は、ネットワークトポロジーがメッシュの例を示す図であり、図8および図9は、ネットワークトポロジーがトーラスである例を示す。なお、これらの図中において、斜線の網がけがされた矩形が実行中のジョブを示しており、横線の網がけがされた矩形が新規に割り当てるジョブを示している。
割り当て候補ノード制限部14は、図6及び図8に示すように、実行中ジョブから見て基準点との遠隔度が小さい方向に新規ジョブ用に指定された形状の空き領域がある場合、その領域に新規ジョブを割り当てる。
割り当て候補ノード制限部14は、各属性値のジョブに割り当て可能とするノード集合を制限する。値別の割り当て候補ノード制限は、必要に応じて行なわれ、必ずしも実行する必要はない。この制限は、ノードの座標に関する連立不等式で与える。なお、ここでの不等式は等式の場合も含むものとする。
上述の如く構成された実施形態の一例としての並列計算機システム1におけるジョブスケジュール手法を詳細に説明する。
実施例の処理手順は、一般に以下に示す処理手順(P), (Q)のいずれか、あるいは組み合わせの特別な例をm の大きさに合わせて適用しているとみなす事ができる。
図10は基準点座標の集合を2組の座標群の直積に分解することにより、より小さい次元の場合に帰着する例を示す。
すなわち、座標を2組に分け、各組の次元の座標を各々p等分、q等分すると、全体の領域はp*q等分され、格子点の数は各次元で(p+1),(q+1)の時(p+1)*(q+1)になる。
例えば、3次元の場合、方体を構成するの8つ「隅」の点を2つの長方形の4つずつ「隅」の点に分けておく。例えば、高さ方向の座標値が同じもの同士に分ける。
そして、夫々の組の4つの格子点を3つ、あるいは2つの格子点で置き換える事により、
全体の点の数をある程度の点の配置の均等性を保ちながら減らす。
処理手順(Q)は、図11の原理に基づく(図11はN=2として図示)。
例えば、後述する第1実施例の場合5の3(k^N<m<(k+1)^N)の場合)は、処理手順(P) でs=N,A(1)=A(2)=...A(N)=k+1とし、r= (k+1)^N-mとして、ハミルトン路に沿ってr個の点を取り除いている事に相当する。
第1実施例の場合4は、処理手順(Q)の再帰的適用に相当する。
第2実施例の場合5は、処理手順(P)でN=s=2として、mが素数でないならr=0,mが素数ならr=1とした場合に相当する。
処理手順(P)は以下の処理を備える。
(1)2以上N以下の任意の整数sに対し、ある整数rと、s個の2以上の整数A(1),..., A(s) を取って、次のように表せる事に注意する。何故なら、rを0から順次大きくしていけば、m+rをs個以上の素因数を持つ数に必ずできるからである。
なお、mが十分大きければ、rを0から順次減らしてs個以上の素因数を持つ数を作れる場合もある。すなわち、rは負の数であってもよい。
(2)座標軸の集合をs個のグループG(f) (1≦f≦s) に分ける。
G(1) = {i(1), ....}, G(2) = {i(e),...}, G(s) = {..., i(N)} (1≦e≦N)
(3)全てのG(f) (1≦f≦s) に対して、それらの座標軸の組に対応する部分集合T(f) (1≦f≦s) から、各々A(f) 個の(1≦f≦s) の要素からなる部分集合U(f) (1≦f≦s) を選ぶ。
[処理手順(Q)]
処理手順(Q)は、以下の処理を備える。
(1)座標軸g を固定し、対応する座標の集合をV(g)とし、g以外の座標軸に対応する座標の組からなる集合をW(g)として、全体の座標の集合Xと、直積集合V(g)×W(g)とを1対1に対応させる。すなわち、X=V(g)×W(g)と見なせる。
(3)mを2つの正の整数の和としてm=m(1)+m(2)のように表しておき、Z(g,1)×W(g) からm(1)個、Z(g,2)×W(g) からm(2)個を各々定めて、その和集合を全体での基準点とする。
(方法1)上記処理手順(P)を適用する。
(方法2)|Z(g,1)|=|Z(g,2)| = 1とする事で次元を下げる、すなわち座標軸の数を1つ減らす事により、上記処理手順(Q) 自体を再帰的に適用する。
sqrt((e(1)-f(1))^2+(e(2)-f(2))^2+ ... +(e(N)-f(N))^2)
また、重み付けによる一般化を行なう場合には、以下の式で表される。
sqrt(c(1)*(e(1)-f(1))^2+c(2)*(e(2)-f(2))^2+ ... +(c(N)*e(N)-f(N))^2))
(b)マンハッタン距離は、各次元の座標の差の絶対値の和で求められ、以下の式で表される。
また、重み付けによる一般化を行なう場合には、以下の式で表される。
d(1)*|e(1)-f(1)|+d(2)*|e(2)-f(2)|+ ... +d(N)*|e(N)-f(N)|))
(c)チェビシェフ距離は、各次元の座標の差の絶対値の最大値で求められ、以下の式で表される。
なお、以下での記述も含め、maxは、複数の引数の中での最大値を表す関数とする。
また、重み付けによる一般化を行なう場合には、以下の式で表される。
max(d(1)*|e(1)-f(1)|, d(2)*|e(2)-f(2)|, ..., d(N)*|e(N)-f(N)|))
また、以下ではジョブの1つの属性の取りうる値の集合をA で表す。以下では、
|A| = m > 1
とする。これは、属性のとりうる値がm個である事を意味する。一般にA={a(1), a(2), ..., a(m)} となるが、以下では、簡単のためA={1, 2, ...., m} とする。こうしても処理の実質的な内容には違いがない。
min((M(i)-L(i)+1-|e(i)-f(i)|), |e(i)-f(i)|)
により置き換える。以下での記述も含め、minは複数の引数の中での最小値を表す関数とする。
(A)第1実施例
本第1実施例では、ネットワークトポロジーがN次元メッシュあるいはN次元トーラスとする。
本第1実施例においては、基準点決定部12は、mの値に関する次の条件に応じて、以下の(1)〜(8)に示すように場合分けして、基準点の集合を変更する。なお、場合5では、mまたはNがより小さい場合に順次帰着させて処理するものとする。
(1)場合1: m = 2^N
(2)場合2: m = 2^q かつN/2 ≦ q < N
(3)場合3: m < 2^(N/2)
(4)場合4: 2^(N/2)≦m<2^Nかつmは2の冪ではない。
(5)場合5: m > 2^N
(6)場合5の1: m = 2^N + 1
(7)場合5の2: あるk > 2 なる整数に対してm = k^N
(8)場合5の3: 上記以外
(1)場合1:m = 2^N
プロセッサの座標は、2N個の整数L(1),..., L(N), M(1),....M(N) (ただし1≦i≦N なる全ての整数iについてL(i)<M(i) )として、{{x(1),...x(N)}| 1≦i≦N かつL(i)≦x(i)≦M(i)} で表す。
C = {(x(1),...x(N))| 1≦i≦N なる全てのi について、x(i) = L(i) またはx(i) = M(i)}
Cの要素とAの要素とを、次のようにして1対1に対応させる。
まず、「N次元の単位立方体の頂点」がなす2^N個の点の集合Gを以下のように定める。
次に、Cの要素とGの要素とを、次のように1対1に対応させる。
(x(1),...x(N))←→(y(1),...y(N))
Cでx(i)=L(i) ならGでy(i)=0となり、Cでx(i)=M(i)ならGでy(i) = 1となる。
ここで、Gの要素の座標は、「0または1をN個、特定の順序に並べたもの」である。従って、座標を整数の2進数表記と見なすと、Gの要素は「0以上2^N-1以下の整数の集合」であるK = {0, 1, 2, ... 2^N-1} と1対1に対応する。さらにKの各要素kに1を加えると全てAの要素となり、Aの要素から1を引いたものは全てKの要素であるため、KとA とは1対1に対応する。
A → C
a |→ L(i) + ((a-1) & (1<<(i-1))) * (M(i) - L(i))
以上のm=2^Nの場合の処理を、m≠2^Nの場合の処理のサブルーチンとしても利用するので、一般にn次元(n はN とは限らない)のメッシュあるいはトーラスのプロセッサの座標の集合に対して、以上の手順により2^n 個の点を定める方法に関連する記号を定めておく。
MB = {M(1), ... M(n)} : プロセッサ座標の各次元の座標の最大値の集合
(ただし1≦i≦n なる全ての整数i でL(i)<M(i))
XX(LB, MB, n) = {{x(1),...x(n)}| 1≦i≦n かつL(i)≦x(i)≦M(i)}
CC(LB, MB, n) = {(x(1),...x(n))| 1≦i≦n なる整数i について、x(i) = L(i) またはx(i) = M(i)}
GG(n) = {(y(1),...y(n))| 1≦i≦n なる整数i について、y(i) = 0 またはy(i) = 1}
上述のm = 2^N の場合の記号との対応は、C = CC(LB, MB, N), G = GG(N) である。
m = 2^q であり、N - q = s とおくと、s は1以上の整数になり、2^N / m = (2^N / 2^q) = 2^s であり、s ≦ q となる。
全体のN次元座標の集合の要素を、q次元座標の集合の要素とs次元座標の集合の要素との組で表しておく。
YYY(LB, MB, N, q) = {{x(1),...x(q)}| 1≦i≦q かつL(i)≦x(i)≦M(i)}
ZZZ(LB, MB, N, q) = {{x(q+1),...x(N)}| q+1≦i≦N かつL(i)≦x(i)≦M(i)}
すなわち、N次元座標の集合XX を、q次元座標の集合YYYとs次元座標の集合ZZZとの直積と見なす。
XX(LB, MB, N) → YYY(LB, MB, N, q) × ZZZ(LB, MB, N, q)
x |→ (y, z)
各次元の最小値、最大値の集合を次のように分割する。
MB = MBY ∪ MBZ
ただし,LBY, LBZ, MBY, MBZ は以下のように定める。
LBY = {L(1), ... L(q)}
MBY = {M(1), ... M(q)}
LBZ = {L(q+1), ..., L(N)}
MBZ = {M(q+1), ..., M(N)}
s < q の場合は、次のようになる。
{(M(1), M(q+1)), (M(2), M(q+2)), ..., (M(s), M(q+s))}
必要な基準点の数はm = |A| = 2^q = 2^N / 2^s なので、s個の「2つの座標軸の組」に対しては、2つの座標軸のどちらか一方の対角線上の頂点だけを座標とする事により、組み合わせの数が1/2^sとなり、丁度m個の基準点を得る。すなわち、次の2つの条件を組み合わせて、単位立方体G(N)の2^q個の要素を持つ部分集合H(q,s)を定め、H(q,s)に対応する点を基準点とする。
Q(q,s) : s+1≦j≦q なる整数j についてy(j) = 0 またはy(j) = 1
これらの2つの条件を満たす点の集合をH(q,s) とすると、
|H(q,s)| = 2^N/2^s = 2^(N-s) = 2^q = m
H(q,s) = {(y(1),...y(N))| P(q,s) かつQ(q,s)}
s = qの場合は、Q(q,s) の条件に意味がないので、P(q,q)だけを指定すると
|H(q,q)| = m
となる。
単位立方体の各隅の点をメッシュないしトーラスの隅の点に前述した方法で対応させる。
どちらの場合も対応する基準点の第i座標は、次の3通りに場合分けした式で表される。
L(i) (1≦i≦s)
L(i) + ((a-1) & (1<<(i-1))) * (M(i) - L(i)) (s+1≦i≦q またはq+s+1≦i≦N)
M(i) (q+1≦i≦q+s)
(3)場合3: m < 2^(N/2)
m = 2 の時、N次元単位立方体の中で「全ての次元の座標が0の点」と「全ての次元の座標が1の点」とを選ぶ。(条件よりN > 2 でもある)
次に、m > 2とする。m = (2^u)*t と書く。s = N - u とする。
XX(LB, MB, N) = {{x(1),...x(N)}| 1≦i≦n かつL(i)≦x(i)≦M(i)}
YYY(LB, MB, N, u) = {{x(1),...x(u)}| 1≦i≦u かつL(i)≦x(i)≦M(i)}
ZZZ(LB, MB, N, u) = {{x(u+1),...x(N)}| u+1≦i≦N かつL(i)≦x(i)≦M(i)}
なお、uが0の場合は、N=sであり、2^u=1になるので、ZZZがXXと一致しYYYは考えなくてよい。
YYY(LB, MB, N, u) から2^u個の座標の組を取り、ZZZ(LB, MB, N, u) からはt個の座標の組をとって組み合わせた(y,z) の組の数は、丁度、(2^u) * t = m となる。YYY(LB, MB, N, u)からはu次元の単位立方体の頂点を取って、ZZZ(LB, MB, N, u)のt個の座標の組と組み合わせる事で基準点を定める。
s bitのGrayコード(Gray Code: 交番2進符号)は、定義により隣接するコード同士では1 bit しか変化しないため、第i番目のbit とs次元単位立方体の第i次元座標を対応させる事により、s bitの隣接するGrayコードを順次並べたものからs次元単位立方体の(隅の点を頂点とする)「ハミルトン閉路」(各頂点を1回だけ通るループ)が得られる。
こうして得られたハミルトン閉路上にt個の点を、以下のように定める。2^sをtで割った商をvとする。初期値0として、次々に前ステップの値(x>>1)とxの排他的論理和を取って定めた第kステップの値を一般にGray(k) とする。そして、{0=Gray(0), Gray(v), Gray(2v), ..., Gray((t-2)v), Gray((t-1)v)} のt 個の値に対応するZZZ(LB, MB, N, u) = {{x(u+1),...x(N)}| u+1≦i≦N かつL(i)≦x(i)≦M(i)} の座標を選ぶ。
L(i) + ((rem(a-1,2^u)) & (1<<(i-1))) * (M(i) - L(i)) (1≦i≦u)
L(i) + ((Gray(rem(a-1,t)*v)) & (1<<(i-1))) * (M(i) - L(i)) (u+1≦i≦N)
(4)場合4: 2^(N/2)≦m<2^Nかつmは2の冪ではない
N = 2の場合、条件からm = 3である。2点ずつ選んだfarnessを出来るだけ等しくなるようにするため、長方形の4辺を1つながりの曲線と見て、それを3等分する場合に最も近い分割となるようなノードの座標を任意に3つ選び、それらを基準点とする。
使用する遠隔度(farness)の種類により、処理を分ける。
(4−1)場合4の1:farness として、マンハッタン距離を使用する場合
N = 2
M(1)-L(1) = D(1), M(2)-L(2) = D(2) とするとき、長方形の辺の上のノードの1つを任意に定め、長方形の周囲を一方の方向に1周する1次元の座標を1 から2*(D(1)+D(2)-1) までの値を取るように定める。
このqにより基準点の1次元座標を1 , q+1, 2q+1 とする。q < (D(1)+D(2)-1) かつ(D(1)+D(2)-1) < 2q となる。
∴ L(1), L(2)のここでの1次元座標を1とすると、基準点の2次元座標は、次のように定められる。
q ≦ D(1) の場合、{(L(1), L(2)) , (L(1)+q, L(2)), (M(1)-(2*q-(D(1)+D(2)-1)), M(2)) }
q > D(1) の場合、{(L(1), L(2)) , (M(1), L(2)+q-D(1)), (M(1)-(2*q-(D(1)+D(2)-1)), M(2)) }
(4−2)場合4の2:farness として、チェビシェフ距離あるいはユークリッド距離を使用する場合
N = 2
M(1)-L(1) = D(1), M(2)-L(2) = D(2)として、D(1)とD(2)とのうち小さくない方(max((D(1), D(2)))の長さを持つ向かいあった(従って平行な)2辺について、一方の両端の
点、他方の中点に最も近い点を取る。
次に、N > 2とする。直方体の次元が1つ下の場合の設定方法に順次帰着させる。使用するfarnessについての条件により、最終的に帰着させる2次元の場合を上のように分けるが、1つ下の次元の場合に帰着させる手順は、farnessによらない。ただし、次のように、偶数か奇数かで場合を分ける。
m = m/2 + m/2
2^((N-1)/2)≦m/2<2^(N-1)かつm/2は2の冪ではない。(∵mは2の冪ではない)。
この場合、ある1つの座標軸の値を最小値、あるいは最大値に固定した2つのN-1次元の直方体2つに対して、m/2個ずつの基準点を定め、それらの和集合を取る事で、m個の基準点を定める。
m = (m-1)/2 + (m+1)/2
以下の両方が成り立つ。なお、(m-1)/2 と(m+1)/2と のうち一方は2の冪になるかも知れないが、2の冪になった場合には、基準点の定め方は既に述べられている(上記、場合2を参照)。
2^((N-1)/2)≦(m+1)/2<2^(N-1)
∴この場合も、ある1つの座標軸の値を最小値あるいは最大値に固定した2つのN-1次元の直方体2つに対して、その一方に(m-1)/2個、他方には(m+1)/2個の基準点を定め、和集合を取る事でm個の基準点を定める。
上述した場合1から場合4までの基準点の配置に対し、ノード座標全体の集合に対応するN次元直方体の「境界点」以外の部分(「内部」)にも基準点を追加する形で定める。
(6)場合5の1: m = 2^N + 1
m = 2^Nの場合の基準点の集合に対し、次の点を追加したものを基準点の集合とする。
(7)場合5の2: あるk > 2 なる整数に対してm = k^N
第i 次元の座標の値の部分集合CC(i) を以下のように定める。|CC(i)| = k である。
R(i) = (M(i)-L(i))/(k-1)
CC(i) = { L(i), [L(i)+((M(i)-L(i))/(k-1))], [L(i)+2*((M(i)-L(i))/(k-1))], ..., M(i) }
基準点の集合を以下のように定める。
(8)場合5の3: 上記以外
k^N < m < (k+1)^Nとなる整数をkとする(すなわち、k = [m^(1/N)] )
(k+1)^N - m = q とおく。k > 1, k+1 > 2 である。
m = (k+1)^Nとした、上記の場合5の2でのk^N個の基準点の集合をBとする。Bから以下のようにしてq個の点を除いたものを基準点の集合とする。
頂点の集合V = {B に属する(k+1)^N 個の点}
辺の集合Eは、元のネットワークのリンクから、Bの点の間だけを結ぶ部分ネットワークに属するものだけを取り出し、かつ、その部分ネットワークにおいて隣接するBの点の間の複数のリンクを仮想的に1つのリンクと見なし、それらの仮想的リンクの集合として定める。言い換えると、ある1つの次元の座標だけが変化する次のような任意の点の列(あるいは対応するノードの列)に対し、Bの点1とBの点2の間に仮想的に1つのリンクがあると見なし、その仮想リンクの集合をEとする。
G(V,E)は、N次元メッシュまたはN次元トーラスのグラフなので、ハミルトン路(全ての頂点を一回だけ通る経路)がある。1つのハミルトン路を取り、出発点から順に通過する頂点をv(1), ..., v((k+1)^N)とする。
qと(k+1)^Nの最大公約数dと、a*q + b*(k+1)^N) = d となる整数a, bとをユークリッドの互除法によって求める。
{v(|a| %% (k+1)^N), v(2*|a| %% (k+1)^N ),...,v(q*|a|) %% (k+1)^N}
この集合をBから取り除いた集合を基準点の集合Cとする。
割り当て候補ノード集合探索部13は、各ジョブに対し、ある特定の属性値に対応する基準点からの遠隔度が小さい方から、他のジョブによって使用中のノードを含まない指定された形状の領域を探索する。遠隔度としては、マンハッタン距離、ユークリッド距離、チェビシェフ距離のどれかを使用する。
実行待ちジョブ管理キュー131は、実行待ちジョブ管理構造体131aのキューであり、探索処理毎の入力を与える。
図12は実施形態の一例としての並列計算機システム1におけるジョブ管理構造体131aを例示する図である。
図12に示す例においては、ジョブ管理構造体131aを表として示している。以下、ジョブ管理構造体131aをジョブ管理制御表131aという場合がある。
実行中ジョブ管理情報132は、実行中のジョブに関する情報であり、実行中の各ジョブが使用しているノード座標の各次元の最小値と最大値を含む。
実行中ジョブ管理情報132は、図13に示すように、ジョブIDに対して、利用者ID,ジョブ属性値,各次元の大きさ,各次元の最大値,各次元の最小値,および各次元の次ジョブを関連付けて構成されている。
各次元の最大値と各次元の最小値は、実行中の各ジョブが使用しているノード座標の各次元の最大値と最小値である。
各次元の次ジョブは、各次元での座標の最小値または最大値をキーとするハッシュ表133(図14(a)〜(c)を用いて後述)の「ハッシュバケツ」内の次ジョブへのポインタである。なお、最後のジョブでは空ポインタとなる。
また、各ジョブの属性での指定と特定の基準点から遠隔度が所定値以下であるという条件での指定が一致しない場合は、特定の属性値のジョブだけを抜き出した実行中ジョブ管理表132にも登録する処理を行なう。
ハッシュ情報133は、ノード座標空間に割り当てられている実行中ジョブの位置(ノード座標位置)を管理する実行中ジョブ位置情報である。このハッシュ情報133は、割り当て候補ノード集合探索部13による探索処理の鍵となる情報であり、実行中ジョブ管理情報132とともに管理・維持される。
図14(a),(b),(c)は実施形態の一例としての並列計算機システム1におけるハッシュ情報133を説明するための図である。図14(a)はメッシュを例示する図であり、図14(b)は図14(a)に示すメッシュの縦座標の次元に関する実行中ジョブのハッシュ表を示す図、図14(c)は図14(a)に示すメッシュの横座標の次元に関する実行中ジョブのハッシュ表を示す図である。
例えば、図14(a)に示すメッシュのノード座標空間は、横座標方向(横座標の次元)と縦座標方向(縦座標の次元)とを備える。このようなノード座標空間においては、ハッシュ情報133は、横座標の次元に関するハッシュ表133a(図14(c)参照)と縦座標の次元に関するハッシュ表133b(図14(b)参照)とをそなえる。
図14(a)に示すにおいては、9(横軸)×7(縦軸)のメッシュ座標にjob1〜job5で示される5つのジョブが割り当てられている。例えば、この図14(a)において、job4の四隅(頂点)の座標(ノード座標)は(1,4),(4,4),(1,6),(4,6)である。従って、このjob4のノード座標の横軸側の最大値は4であり最小値は1である。
なお、ハッシュ値の衝突は、「ハッシュバケツ法」で処理する。すなわち、同一キーに対応する構造体をポインタで連結する。
キーの衝突はハッシュバケツ法、すなわち、ポインタ格納領域をキューイングする方法で処理する。
ただし、当該説明を行なう前に、以下に用語の定義を示す。
以下では「ノード」の座標の位置関係だけを問題にする場合が多いため、幾何学的なイメージで考える方が分かり易いという事情により、座標だけに着目する際は「ノード」の代わりに「点」と呼ぶ。
まず、N次元メッシュないしトーラスのネットワークで以下のパラメータを持つ2つの(N次元)直方体領域が交差する(共通部分を持つ)条件に注意しておく。
最小値形状パラメータ最大値
((x(1), ..., x(N)) (s(1), ..., s(N)) ((X(1), ...(X(N))
((y(1), ..., y(N)) (t(1), ..., t(N)) ((Y(1), ...(Y(N))
ここで、∀ i ∈ {1, 2, .., N} X(i) = x(i)+s(i)-1 かつY(i) = y(i)+t(i)-1
2つの領域が交差する条件は、少なくとも1つのi ∈ {1, 2, .., N} で[x(i), X(i)] と[y(i), Y(i)]とが共通部分を持つ事である。すなわち、x(i) とy(i) の大小関係で場合を分けて、以下のように表される。
ある点の近くには所要の形状パラメータを持つ直方体領域がない事が判明した場合、探索の基準にする点を変更しながら探索する。以下、「探索の基準点」は、このように探索中に変更される点を指し、ジョブの属性値に対応して定める基準点とは一般には異なる事に注意する。ジョブの属性値に対応する基準点は「探索の基準点」の初期値となる。
従って、1つの直方体領域をとって、その領域が近くのジョブが使用中の直方体領域すべてと交差しない事が確認できれば探索は終了する。前述の記号で((x(1), ..., x(N))、(s(1), ..., s(N))、((X(1), ...(X(N))を固定し、((y(1), ..., y(N)) 、(t(1), ..., t(N))、((Y(1), ...(Y(N)) を「近くのジョブ」が占める領域として動かすとき、すべてのi ∈ {1, 2, .., N} で[x(i), X(i)] と[y(i), Y(i)] が交差しない条件は、上記の条件式が不成立という意味である。従って、x(i) とy(i) の大小関係で場合を分ければ以下のように表される。
ここでx(i) < X(i) 、y(i) < Y(i) である事に注意すると、上の条件は次のように簡単化される。
(X(i) < y(i)) または(Y(i) < x(i))
この条件は、形状パラメータと頂点の座標を使って言い換える事ができる。例えば、一方の領域の形状パラメータを使った条件の形で書けば、以下のようになる。
さらに書き換えると以下の形でも表すことができる。
(s(i) < y(i)-(xi)) または(s(i) < X(i)-Y(i))
結局、各座標軸で「「頂点の座標の差の絶対値」が、形状パラメータより大きければよい」事になる。
ある時点での「探索範囲」は、「「探索の基準点」との各次元の座標の差の絶対値が形状パラメータ以下の直方体」とする。「探索範囲」に「実行中ジョブが使用中の領域」が1つ以上ある場合、それらの領域の頂点を(現時点の探索範囲内に所定の形状パラメータを持つ「空き領域」が見つからなかった場合の)次の段階の「探索の基準点」候補の集合に追加していく事で探索範囲を広げる。「探索の基準点」は「それまでの探索処理で「探索の基準点」として未使用の頂点」から、「ジョブ属性によって定まる基準点」の座標との「遠隔度」が小さい方から使用する。
「「探索の基準点」の近くにある形状パラメータshape を持つ領域」は、「探索範囲」の内側で探せば十分な事は上述の内容から明らかなので、この範囲内にある「実行中のジョブが使用している領域」と交差しない空き領域であればよい。なお、この範囲内に実行中のジョブが使用している領域がない場合、基準点を含む形状パラメータshape の領域が、どれでも探索の条件を満たす。以下では少なくとも1つ、「探索範囲」内に実行中のジョブが使用している領域があるとする。
本実施例での空き領域の候補の選び方は、「指定した形状パラメータの空き領域が、前述した探索範囲内に何らかの方法で見つかっている」状態で「空き領域の頂点と探索範囲内のジョブが使用中の領域のN-1 次元境界との関係」について、以下のような考え方で制約条件を付加する事に基づいている。
以下では「実行中ジョブが使用中の直方体領域の頂点のうち少なくとも1つ」に「接する」位置まで「空き領域(候補)」の頂点の1つを動かした状態を想定したときの「空き領域(候補)」の頂点を、「探索の開始点」と呼ぶ。
この図18に示す例においては、「ジョブ属性によって定まる基準点」をpとして、ある時点の「探索の基準点」としてcを選んで、「探索の開始点」をsとした状態を示している。
なお、トーラスネットワークの場合は、wrap around link があるため、探索の際に各次元座標の最小値、最大値で制約されない代わりに、「座標の差の絶対値」を「各次元でのネットワークの大きさ(=座標の最大値−座標の最小値+1)を法(除数)とする「絶対最小剰余」」で置き換える必要がある。
図15〜図17に示すフローチャート中の記号の意味は以下の通りである。
p = (p(1), ..., p(N)):ジョブ属性値に対応する基準点
Shape = (s(1), ..., s(N)):形状パラメータ
CL = (C(1)=(c(1,1), c(1,2), ..., c(1,N)),C(2)=(c(2,1),c(2,2) ...,c(2,N)), ...):探索の基準点リスト
CL_NEXT:探索範囲を外側に広げる際に追加する基準点のリスト
CL(job):各ジョブjobの「頂点」を「pに近い順」に整列したリスト
NL(job):CL(job)のうち、p に近い側の半分の点からなるリスト
NL:CLのうち、p に近い側の半分の点からなるリスト
FL(job):CL(job)のうち、p から遠い側の半分の点からなるリスト
FL:CLのうち、p から遠い側の半分の点からなるリスト
SL:「探索の開始点」リスト。「ジョブの頂点cに隣接するjobの外部の点のリスト」で初期化して使用する。
R:「探索範囲」ある点q との各次元の座標の差の絶対値が形状パラメータ以下の直方体領域
RL:「探索範囲リスト」ある点w に対応して次のように定める「探索範囲」のリスト
探索の基準点がジョブ属性値に対応するとき、R はネットワークの各次元の座標の最大値、最小値によっても制約される。探索の基準点がジョブに接する点の場合、R は隣接するジョブの座標によっても制約される。
Job:探索基準点の頂点を含むジョブ
図15のステップS1において、割り当て候補ノード集合探索部13は、実行待ちジョブ管理キュー131の先頭からジョブ管理制御表を取り出す。
ステップS2において、割り当て候補ノード集合探索部13は、取り出したジョブ管理制御表131aに含まれるジョブ属性値から、対応する基準点pを求める。
確認の結果、CLが空である場合には(ステップS4のYESルート参照)、処理を終了する。一方、CLが空でない場合には(ステップS4のNOルート参照)、ステップS5に移行する。
図15のステップS7において、割り当て候補ノード集合探索部13は、RLに探索範囲リストを設定する。
図15のステップS9において、割り当て候補ノード集合探索部13は、RLから探索範囲リストを取り出してRに設定する。なお、RLからは取り出した探索範囲リストを取り除く。
図15のステップS11において、割り当て候補ノード集合探索部13は、所定形状パラメータの空き領域が見つかったか否かを確認する。所定形状パラメータの空き領域が見つからない場合には(ステップS11のNOルート参照)、ステップS8に戻る。また、所定形状パラメータの空き領域が見つかった場合には(ステップS11のYESルート参照)、処理を終了する。
探索基準点cに対する探索範囲リストを作成するために、図16のステップT1において、割り当て候補ノード集合探索部13は、cがジョブ属性値に対応する基準点pであるか否かを確認する。
一方、cがジョブ属性値に対応する基準点pでない場合には(ステップT1のNOルート参照)、図16のステップT4において、割り当て候補ノード集合探索部13は、cに隣接するジョブ外の点のリストをSLに設定する。
図16のステップT8において、Rに{(x(1),..., x(N))|max(|x(i)-L(i)|,|x(i)-M(i)|,|x(i)-t(i)|)≦s(i)}を設定した後、図16のステップT9において、RLにRを追加し、ステップT5に戻る。
探索範囲Rの探索方法を成するために、図17のステップU1において、割り当て候補ノード集合探索部13は、R内に実行中のジョブがあるかを確認する。
R内に実行中のジョブがない場合には(ステップU1のNOルート参照)、ステップU12に移行する。図17のステップU12においては、空き領域が見つかったか否かを確認する。空き領域が見つかった場合には(ステップU12のYESルート参照)、処理を終了し、図15のステップS11に移行する。
また、R内に実行中のジョブがある場合には(ステップU1のYESルート参照)、図17のステップU2において、JL_ALLにR内の実行中ジョブを設定する。
図17のステップU4において、割り当て候補ノード集合探索部13は、jobにJL_ALLの要素を設定する。なお、JL_ALLからは取り出したjob を取り除く。
図17のステップU6において、割り当て候補ノード集合探索部13は、CL(job)を「p に近い側のリスト」NL(job) と「p から遠い側のリスト」FL(job)とに分割する。
図17のステップU7において、割り当て候補ノード集合探索部13は、FL(job)をCL_NEXT に追加する。
図17のステップU9において、割り当て候補ノード集合探索部13は、実行中のジョブ job の1つの頂点である「探索の基準点」c からの空き領域探索を行なう。
ここで、この図17のフローチャートのステップU9における処理を、図19に示すフローチャート(ステップU901〜U906)に従って説明する。
図19のステップU903において、割り当て候補ノード集合探索部13は、RLが空であるか否かを確認する。確認の結果、RLが空である場合には(ステップU903のYESルート参照)、処理を終了し、図17のステップU10に移行する。一方、RLが空でない場合には(ステップU903のNOルート参照)、図19のステップU904に移行する。
図19のステップU905において、割り当て候補ノード集合探索部13は、探索範囲R内の空き領域を探索する。図19のステップU906において、割り当て候補ノード集合探索部13は、探索範囲R内に空き領域が見つかったか否かを確認する。探索範囲R内に空き領域が見つからない場合には(ステップU906のNOルート参照)、ステップU903に戻る。また、探索範囲R内に空き領域が見つかった場合には(ステップU906のYESルート参照)、処理を終了し、図17のステップU10に移行する。
一方、空き領域が見つからなかった場合には(ステップU10のNOルート参照)、図17のステップU11において、NL(job)が空であるか否かを確認する。NL(job)が空でない場合には(ステップU11のNOルート参照)、ステップU8に戻る。
本第1実施例では、割り当て候補ノード制限部14は属性値別の割り当て候補ノード制限を行なわないものとする。従って、システム内に投入されるジョブが全て特定の属性値の場合には、その属性値のジョブだけで、全ノードが占有されてもよい。すなわち、特定の属性値のジョブのための予約領域を作らない。
図20のステップC1において、基準点決定部12は、m≦2^Nであるか否かを確認する。確認の結果、mが2^Nよりも大きい場合には(ステップC1のNOルート参照)、図20のステップC2に移行する。このステップC2において、基準点決定部12は、属性値の数が 2^N以下の場合の関数を再帰的に呼び出して処理を行なう。なお、このステップC2の処理の詳細は、図21を用いて後述する。
次に、上述した図20のフローチャートのステップC2における処理を、図21に示すフローチャート(ステップD1〜D12)に従って説明する。
一方、ステップD1における確認の結果、m=2^Nでない場合には(ステップD1のNOルート参照)、ステップD2に移行する。図21のステップD2において、floor(log_2(m))をqとする。
図21のステップD6において、基準点決定部12は、m<2^(N/2)であるか否かを確認する。mが2^(N/2)未満である場合には(ステップD6のYESルート参照)、図21のステップD7において、m<2^(N/2)の関数を読み出し、処理を終了する。なお、このステップD7の処理の詳細は、図23を用いて後述する。
図21のステップD8において、2^(N/2)≦m<2^N、且つ、m>2^q、且つ、m<2^(q+1)であるか否かを確認する。確認の結果、ステップD8の条件を満たす場合には(ステップD8のYESルート参照)、ステップD10において、基準点決定部12は、m=2であるか否かを確認する。確認の結果、m=2である場合には(ステップD10のYESルート参照)、図21のステップD11において、基準点決定部12は、座標が全て最小の点と全て最大の点を選択し、処理を終了する。
次に、上述した図21のフローチャートのステップD5における処理を、図22に示すフローチャート(ステップE1〜E12)に従って説明する。すなわち、属性値の数が 2^(N/2) 以上2^N未満の2冪の場合について示す。
また、m=2でない場合には(ステップE1のNOルート参照)、図22のステップE3において、log_2(m)をqとする。なお、このときm=2^qとする。
そして、図22のステップE7において、基準点決定部12は、YYYに属する座標軸とZZZに属する座標軸を1対1に対応させて、s個の座標軸のペアを作り、そのペアに長方形を対応させる。
図22のステップE9において、基準点決定部12はs<qであるか否かを確認する。確認の結果、sがq以上である場合には(ステップE9のNOルート参照)、基準点決定部12は、図22のステップE10において、YYYとZZZの座標軸のペアから選んだ点を基準点とし、処理を終了する。
そして、図22のステップE12において、基準点決定部12は、YYYとZZZの座標軸のペアから選んだ点とペア以外のZZZの座標軸から選んだ点との直積集合を基準点とし、処理
を終了する。
図23のステップF1において、基準点決定部12はm=2であるか否かを確認する。m=2である場合には(ステップF1のYESルート参照)、図23のステップF2において、基準点決定部12は、座標が全て最小の点と全て最大の点とを選択する。
mが偶数である場合には(ステップF3のYESルート参照)、図23のステップF6において、基準点決定部12は、mを素因数分解して2冪の項を2^uとする。また、図23のステップF7においてtにm/(2^u)を設定する。
一方、uが0より大きい場合には(ステップF8のYESルート参照)、基準点決定部12は、図23のステップF11において、最初のu個の座標の集合をYYYとする。また、図23のステップF12において、N-u個の座標の集合をZZZとし、図23のステップF13において、sにN-uを設定する。
図23のステップF15において、基準点決定部12は、Hの点から経路順にfloor(2^s/t) の間隔で選んだt個の点の集合をT(ZZZ)とする。
その後、図23のステップF16において、基準点決定部12は、再度、u>0であるか否かを確認する。uが0以下である場合には(ステップF16のNOルート参照)、図23のステップF17において、基準点決定部12は、T(ZZZ)を基準点に選び、処理を終了する。
次に、上述した図21のフローチャートのステップD12における処理を、図24に示すフローチャート(ステップG1〜G13)に従って説明する。すなわち、属性値の数が 2^(N/2) 以上2^N未満で2冪ではない場合について示す。
mが奇数である場合には(ステップG2のNOルート参照)、基準点決定部12は、図24のステップG3において、m(1)に(m-1)/2を設定し、図24のステップG4においてm(2)に(m+1)/2を設定する。
図24のステップG7において、基準点決定部12は、任意の1座標を最小値に固定したN-1次元直方体をS(1)とする。
図24のステップG9において、基準点決定部12は、S(1)からm(1)個、S(2)からm(2)個の基準点を、同じ関数の再帰呼び出しによりそれぞれ選択し、2つ合わせて全体の基準点として、処理を終了する。
遠隔度がユークリッド距離またはチェビシェフ距離である場合には(ステップG10のYESルート参照)、ステップG11に移行する。
また、遠隔度がユークリッド距離でもチェビシェフ距離でもない場合には(ステップG10のNOルート参照)、ステップG12に移行する。
そして、図24のステップG13において、基準点決定部12は、長方形の外周部のハミルトン閉路(外周を一方向に一周する経路)に沿って、任意の出発点から間隔をfloor(CC/3)開けて3点を選んで、処理を終了する。
図25のステップH1において、基準点決定部12は、N=2^N+1であるか否かを確認する。N=2^N+1である場合には(ステップH1のYESルート参照)、ステップH2に移行する。図25のステップH2において、基準点決定部12は、座標が最小値または最大値である2^N個の点全てと座標が最小値と最大値の平均の整数部分である点の合計2^N+1個を選択し、処理を終了する。
また、図25のステップH4において、基準点決定部12は、m=k^Nであるか否かを確認する。m=k^Nである場合には(ステップH4のYESルート参照)、ステップH5に移行する。図25のステップH5において、基準点決定部12は、各次元の座標の範囲の1/(k-1)の整数部分をR(i)として座標値の最小値からR(i)刻みにとったk-1個の座標値と座標の最大値の合計k個の座標値の全組合せを基準点とする。
図25のステップH6において、基準点決定部12は、各次元の座標範囲の1/kの整数部分をR(i)として座標の最小値からR(i)刻みにとったk個の座標値と座標値の最大値の合計k+1個の座標値の全組合せのk^(N+1)個の点を頂点の集合Vとする。そして、Vに含まれるノードを最短距離で結ぶリンクを合わせたものをVでは一体と見なして1つの辺とした集合をとし、グラフG(V,E)を作る。
図26(a)に示すネットワークにおいて、ノードの座標を縦軸については1つ置きに、横軸については3つ置きにとることで、図26(b)に示す状態となり、間引きを行なうことで、図26(c)に示すような状態となる。
また、ステップH9において、グラフG(V,E)のハミルトン路をHとする。そして、図25のステップH10において、基準点決定部12は、Hの始点から|a|間隔で頂点を取り除く事でq個の点をVから取り除いたものを基準点の集合とする。ただし、(k+1)^Nを|a|の倍数が越えるたび超過分だけ始点から離れた点を起点に再開する。つまり(k+1)^Nを法として|a|間隔で頂点を取り除く。その後、処理を終了する。
図27のステップA1において、割り当て候補ノード集合探索部13は、実行待ちジョブ管理キュー131の先頭からジョブ管理構造体131aを取り出しJとする。なお、再帰呼び出しの場合には、ジョブ管理構造体131aは引き継がれる。
図27のステップA3において、割り当て候補ノード集合探索部13は、隣接する指定形状空き領域がないことを確認済みのジョブリストJL_INを作成する。最初は空リストとなる。
図27のステップA5において、割り当て候補ノード集合探索部13は、各座標i についてのハッシュ表133でmax(L(i), c(i)-s(i)) ≦ x(i)かつx(i)≦ min(M(i), c(i)+s(i)の範囲で実行中ジョブを探索する。
図27のステップA8において、割り当て候補ノード集合探索部13は、各座標iのハッシュ表から検出した前記条件で検出したジョブの中でI以外についての座標についての条件も全て満たすものを探索する。
確認の結果、該当する実行中ジョブがある場合には(ステップA9のYESルート参照)、ステップA10に移行する。
図27のステップA10において、割り当て候補ノード集合探索部13は、検出済みの実行ジョブの「隅」の点を順次一時的な基準点と見なして再帰的に探索処理を行ない、処理を終了する。
図27のステップA11において、割り当て候補ノード集合探索部13は、座標iのハッシュ表で検出したジョブについて、座標が基準点より大きいジョブと小さいジョブの両方が存在する座標と、一方だけが存在する座標を区別して基準点を含む空き領域の判定条件を設定する。なお、このステップA11の処理の詳細は図28を用いて後述する。
図27のステップA14において、割り当て候補ノード集合探索部13は、基準点に領域にshapeで指定された形状の領域を割り当て、処理を終了する。
この確認の結果、空き領域が存在する場合には(ステップA13のYESルート参照)、ステップA14に移行する。一方、空き領域が存在しない場合には(ステップA13のNOルート参照)、ステップA15に移行する。
なお、上述したフローチャートにおいて、例えば、ステップA6およびステップA7の処理は同様の処理が冗長して行なわれるので省略してもよい。
割り当て候補ノード集合探索部13は、図28のステップB1において変数iに1を設定する。その後、図28のステップB2において、割り当て候補ノード集合探索部13は、第i座標が基準点座標より大きいジョブと小さいジョブとの両方が存在するか否かを確認する。確認の結果、該当するジョブが存在しない場合には(ステップB2のNOルート参照)、図28のステップB3において、割り当て候補ノード集合探索部13は、ジョブと基準点の座標iの差の絶対値の最小値をd(i)とし、ステップB7に移行する。
また、図28のステップB5において、割り当て候補ノード集合探索部13は、座標iが基準点より大きいジョブと基準点の座標iとの差の最小値をa(i)とする。
図28のステップB7において、割り当て候補ノード集合探索部13は、s(i)≦d(i)+1であるか否かを確認する。確認の結果、s(i)がd(i)+1以下である場合には(ステップB7のYESルート参照)、図28のステップB8において、第i座標はs(i)≦d(i)+1と記録する。
割り当て候補ノード集合探索部13は、図28のステップB10においてiをインクリメント(i=i+1)した後、図28のステップB11においてi=Nであるか否かを確認する。
(B)第2実施例
本第2実施例では、ネットワークトポロジーを2次元トーラスとする。本第2実施例では、wrap around link を無視しない本来の距離(マンハッタン距離、チェビシェフ距離、ユークリッド距離のいずれか)を遠隔度関数に使用する。このため、座標を次のように、各軸に含まれるノード数(各軸の大きさ)の「剰余類」で表すものとする。
x 座標の範囲を0, 1, 2, ..., (d(1)-1) (mod d(1))
y 座標の範囲を0, 1, 2, ..., (d(2)-1) (mod d(2))
[基準点決定部12の処理]
本第2実施例では、以下の(1)〜(5)に示すように場合分けを行なう。なお、場合5のm>4 の場合は、よりm が小さい場合に順次帰着させる。詳細については、図29を用いて後述する。
(1)場合1:m=1
(2)場合2:m=2
(3)場合3:m=3
(4)場合4:m=4
(5)場合5:m>4
なお、本第2実施例では、簡便のために2次元の場合についてのみ示すが、N次元の場合には第1実施例と同様の場合分けを行なう。
以下のように基準点の集合C を定める。
すなわち、トーラスの場合、どの座標(x,y) を基準点としても実質的には同じであるが、例えば、C = {(0,0)} とする。
(2)場合2:m=2
以下のように基準点の集合C を定める。
d(2) > d(1) の時、C = {(0, 0), (0, [d(2)/2])}
(3)場合3:m=3
以下の基準点の集合C を定める。
d(2) ≦ d(1) の時、C = {(0, 0), ([d(1)/3], 0), (2*[d(1)/3], 0)}
d(2) > d(1) の時、C = {(0, 0), (0, [d(2)/3])}, (0, 2*[d(2)/3])}
(4)場合4:m=4
以下のように基準点の集合C を定める。
なお、N = 2 の場合、条件から基準点の数m=3となる。
(4−1)場合4の1:farness として、マンハッタン距離を使用する場合
M(1)-L(1) = D(1), M(2)-L(2) = D(2) とするとき、長方形の辺の上のノードの1つを任意に定め、長方形の周囲を一方の方向に1周する1次元の座標を1 から2*(D(1)+D(2)-1) までの値を取るように定める。
のq により基準点の1次元座標を1 , q+1, 2q+1 とする。
q < (D(1)+D(2)-1) かつ(D(1)+D(2)-1) < 2q となる。
∴ L(1), L(2)のここでの1次元座標を1 とすると、基準点の2次元座標は、次のよう
に定められる。
q ≦ D(1) の場合、{(L(1), L(2)) , (L(1)+q, L(2)), (M(1)-(2*q-(D(1)+D(2)-1)), M(2)) }
q > D(1) の場合、{(L(1), L(2)) , (M(1), L(2)+q-D(1)), (M(1)-(2*q-(D(1)+D(2)-1)), M(2)) }
(4−2)場合4の2:farness として、チェビシェフ距離あるいはユークリッド距離を使用する場合
N = 2M(1)-L(1) = D(1), M(2)-L(2) = D(2) として、D(1) とD(2) のうち小さくない方(max((D(1), D(2)))の長さを持つ向かい合った(従って平行な)2辺について、一方の
両端の点、他方の中点に最も近い点を取る。
次にN > 2 とする。直方体の次元が1つ下の場合の設定方法に順次帰着させる。使用するfarness についての条件により、最終的に帰着させる2次元の場合を上のように分けるが、1つ下の次元の場合に帰着させる手順は、farness によらない。ただし、次のように、偶数か奇数かで場合を分ける。
m = m/2 + m/2
2^((N-1)/2)≦m/2<2^(N-1)かつm/2 は2 の冪ではない。(∵mは2の冪ではない)。
この場合、ある1つの座標軸の値を最小値、あるいは最大値に固定した2つのN-1次元の直方体2つに対して、m/2 個ずつの基準点を定め、それらの和集合を取る事で、m 個の基準点を定める。
m = (m-1)/2 + (m+1)/2
次の両方が成り立つ。なお、(m-1)/2 と(m+1)/2 のうち一方は2の冪になるかも知れないが、2の冪になった場合には、基準点の定め方は既に述べられている(上記、場合2を参照)。
2^((N-1)/2)≦(m+1)/2<2^(N-1)
∴この場合も、ある1つの座標軸の値を最小値あるいは最大値に固定した2つのN-1次元の直方体2つに対して、その一方に(m-1)/2 個、他方には(m+1)/2 個の基準点を定め、和集合を取る事でm 個の基準点を定める。
(5−1)場合5の1:mが素数でない
m は複数の素因数を持つので、m=p*q (p>1, q>1) となるような2つの整数p, q がある。
g(1)=[d(1)/p], h(1)=[d(2)/q] とするとき、|g(1)-h(1)| が最小になるようにp, q を選んでおく。
|d(1)-g(2)|, |d(2)-g(1)|, |g(1)-h(1)| の中でどれが最小であるかにより処理を分ける。
|d(1)-g(2)| が最小の場合、次のように基準点の集合C を定める。
C = {(j*g(2), 0)|0≦j≦g(2)-1, j は整数}
|d(2)-g(1)| が最小の場合、次のように基準点の集合C を定める。
|g(1)-h(1)| が最小の場合、次のように基準点の集合C を定める。
C = {(j*g(1), k*h(1))| 0≦j≦(p-1), 0≦k≦(q-1), j, k は共に整数}
(5−2)場合5の2:mが素数
m+1 は素数ではないので、m+1=p*q (p>1, q>1) となるような2つの整数p, q がある。
さらに、g(2)=[d(1)/m], h(2)=[d(2)/m] とする。
|d(1)-g(2)|, |d(2)-g(1)|, |g(1)-h(1)| の中でどれが最小であるかにより処理を分ける。
C = {(j*g(2), 0)|0≦j≦g(2)-1, j は整数}
|d(2)-h(2)| が最小の場合、次のように基準点の集合C を定める。
C = {(0, k*h(2))|0≦k≦h(2)-1, k は整数}
|g(1)-h(1)| が最小の場合、次のように基準点の集合C を定める。
本第2実施例において、割り当て候補ノード集合探索部13は、各ジョブに対し「ある特定の属性値に対応する基準点」からの遠隔度が小さい方から、他のジョブによって使用中のノードを含まない指定された形状の領域を探索する。
本第2実施例において、割り当て候補ノード制限部14は、各属性値について、対応する基準点からの各座標軸の値に関する不等式条件の組み合わせで、割り当て候補を制限する。なお、不等式の組み合わせは、重複がない限り、任意に定める事ができる。
x(j) - a(j) = A(j) かつB(j) ≦ y(j) - b(j) ≦ C(j)
A(j) ≦ x(j) - a(j) ≦ B(j) かつC(j) ≦ y(j) - b(j) ≦ D(j)
A(j) ≦ x(j) - a(j) ≦ B(j) かつC(j) = y(j) - b(j)
なお、割り当て候補ノード制限部14は、同様の処理を第1実施例や後述する第3実施例において行なってもよい。
ステップK1において、基準点決定部12はm=1であるか否かを確認する。確認の結果、m=1である場合には(ステップK1のYESルート参照)、ステップK2において、基準点決定部12は、{(0,0)}を基準点として処理を終了する。
また、ステップK3における確認の結果、m=2でない場合には(ステップK3のNOルート参照)、ステップK7において、m=3であるか否かを確認する。m=3である場合には(ステップK7のYESルート参照)、ステップK8において、d(2)≦d(1)であるか否かを確認する。d(2)がd(1)以下である場合には(ステップK8のYESルート参照)、ステップK9において、基準点決定部12は、{(0,0), (0, floor(d(1)/3)),(0,2*floor(d(2)/3))}を基準点とし、処理を終了する。
また、ステップK7における確認の結果、m=3でない場合には(ステップK7のNOルート参照)、ステップK11において、m=4であるか否かを確認する。m=4である場合には(ステップK11のYESルート参照)、ステップK12において、基準点決定部12は、{(0,0), (0, floor(d(1)/2)),(floor(d(2)/2),0),(floor(d(1)/2),floor(d(2)/2))}を基準点として、処理を終了する。
その後、ステップK16において、基準点決定部12は、g(2)=floor(d(1)/m),h(2)=floor(d(2)/m)として、|d(1)-g(2)|,|d(2)-g(1)|,|g(1)-h(1)|の中でいずれが最小かを調べる。
また、ステップK17における確認の結果、|d(1)-g(2)|が最小でない場合には(ステップK17のNOルート参照)、ステップK19において、|d(2)-g(1)|が最小であるか否かを確認する。
|d(2)-g(1)|が最小でない場合には(ステップK19のNOルート参照)、すなわち、|g(1)-h(1)|が最小の場合には、ステップK21に移行する。ステップK21において、mが素数であるか否かを確認する。mが素数である場合には(ステップK21のYESルート参照)、ステップK22において、基準点決定部12は、{(j*g(1), k*h(1))| 0≦j≦(p-1),0≦k≦(q-1), j, k は同時には0でない整数}という集合を基準点とし、処理を終了する。
次に、第2実施例としての並列計算機システム1における割り当て候補ノード集合探索部13による割り当て候補ノードの探索処理を、図30に示すフローチャート(ステップJ1〜J15)に従って説明する。
ステップJ2において、割り当て候補ノード集合探索部13は、ジョブJに必要な領域の形状パラメータ{s(1), s(2), ..., s(N)}の指定値をshape とする。初期値は空であり、再帰呼び出しの場合には引き継がれる。
ステップJ4において、割り当て候補ノード集合探索部13は、JL_IN中で隣接して指定形状Shapeの空き探索未完了ジョブの隣接領域が未探索の隅の点(c(1),c(2),...,c(N))をPとする。
ステップJ6において、割り当て候補ノード集合探索部13は、いずれかの座標について上記範囲に登録された実行中ジョブがあるかを確認する。確認の結果、制限されていない場合には(ステップJ6のNOルート参照)、ステップJ7に移行する。
また、ステップJ6における確認の結果、制限がされている場合には(ステップJ6のYESルート参照)、ステップJ8に移行する。
ステップJ8において、割り当て候補ノード集合探索部13は、各座標iのハッシュ表133から検出した前記条件で検出したジョブの中でI以外についての座標についての条件も全て満たすものを探索する。
ステップJ10において、割り当て候補ノード集合探索部13は、検出済みの実行ジョブの「隅」の点を順次一時的な基準点と見なして再帰的に探索処理を行ない、処理を終了する。
ステップJ11において、割り当て候補ノード集合探索部13は、座標iの基準点を含む空き領域の判定条件を設定する。
ステップJ12において、割り当て候補ノード集合探索部13は、検出済みジョブから見て基準点に近い方向にShapeで指定された割当て制限がない空き領域が存在するか否かを確認する。確認の結果、該当する空き領域が存在する場合には(ステップJ12のYESルート参照)、ステップJ13に移行する。
また、ステップJ12における確認の結果、該当する空き領域が存在しない場合には(ステップJ12のNOルート参照)、ステップJ14に移行する。
ステップJ14においては、割り当て候補ノード集合探索部13は、検出済みジョブから見て基準点から遠い方向にShapeで指定された割当て制限がない空き領域が存在するか否かを確認する。確認の結果、該当する空き領域が存在する場合には(ステップJ14のYESルート参照)、ステップJ13に移行する。
ステップJ15において、割り当て候補ノード集合探索部13は、検出済みの実行中ジョブの「隅」の点を順次一時的な基準点と見なして再帰的に探索処理を行ない、処理を終了する。
本第3実施例では、複数のメッシュまたはトーラスネットワークが、複数のゲートウェイノードを介して結合されたネットワークトポロジーを扱う。なお、どの2つのメッシュまたはトーラスネットワークにも、各々に互いへのゲートウェイとなるノードが少なくとも1つ存在するネットワークとする。
以下、M個のメッシュまたはトーラスネットワークが結合されているとする。この時、各メッシュないしトーラスは、システム全体のネットワークの部分ネットワークである。
図31は第3実施例の並列計算機システム1のネットワークトポロジーを例示する図であり、トーラスと複数のメッシュとをゲートウェイノードを介して接続したネットワークを示す。
同じメッシュまたはトーラスネットワークに属する2ノード間の遠隔度は、メッシュまたはトーラス内での距離関数とする。
異なるメッシュまたはトーラスネットワークに属する2ノード間の遠隔度は、各メッシュないしトーラスからゲートウェイノードまでの遠隔度とゲートウェイノード間の遠隔度の和と定める。ただし、複数のゲートウェイノードの組み合わせがあるときは、それらの最小値とする。
一般に、ゲートウェイノードを経由する場合には通信遅延が大きいので、可能な限り1つのジョブを1つの部分ネットワーク内に留める事が望ましいが、ジョブが必要とするノード数が大きいために、そう出来ない場合も想定する。
本第3実施例においては、基準点決定部12は、M ≦ m の時、m をM 個の正の整数の和として表し、各メッシュ、トーラスに基準点を配置する。
m = m(1) + m(2) + ... + m(M)
m がM で割り切れない時にも、できるだけ、部分ネットワーク毎の基準点の数が等しくなるように配置する処理を行なう。また、基準点の数のバラツキが生ずる場合、ノード数が多い部分ネットワークに、より多くの基準点を配置する。
M = M(1) + M(2) + ... + M(m)
本第3実施例においては、部分ネットワークとなるメッシュ、トーラスの数Mが大きい場合には、2つの閾値Threshold1およびThreshold2を用いた、2種類の近似処理を併用することで、部分ネットワークのグループ分けを出来るだけノード数が等しくなるようにする。
なお、これら2つの閾値の関係は、Threshold1 > Threshold2 とする。
ここで、Threshold1よりM が大きい場合、各グループに属する部分ネットワークのノード数の総和の順序に着目し、「各グループに属する部分ネットワークの数」をなるべく等しくする。すなわち、各部分ネットワークのノード数の差が比較的小さいと見なしてノード数合計の均等化を部分ネットワーク数の均等化で近似する。
本第3実施例において、割り当て候補ノード集合探索部13は、複数のメッシュあるいはトーラスに跨るノード割り当てが必要な場合に、ジョブ実行に必要なノード数nn を各メッシュないしトーラスに配分する。そして、割り当て候補ノード集合探索部13は、配分した数の空きノードを各メッシュないしトーラス内で基準点としたゲートウェイノード、または基準点ノードと接続されているゲートウェイノードからの遠隔度が小さい側から、探索を行なう。この探索は上述した第1実施例と同様の手法で行なう。
なお、割り当て候補ノード集合探索部13は、ジョブが単一のメッシュないしトーラス内のノードだけで実行可能であれば、第1実施例に示した割り当て手法を使用する。
図32のステップM1において、基準点決定部12は、システムを構成する部分ネットワークの集合({S(1),S(2),...,S(M)})をSとする。
図32のステップM2において、基準点決定部12は、M≦mであるか否かを確認し、Mがm以下である場合には(ステップM2のYESルート参照)、ステップM3に移行する。図32のステップM3において、基準点決定部12は基準点を部分ネットワークに配分する。このステップM3の処理の詳細は、図33を用いて後述する。
図33のステップN1において、基準点決定部12は、mをMで割った余りをrとして、図33のステップN2において、r=0であるか否かを確認する。r=0の場合には(ステップN2のYESルート参照)、ステップN3に移行する。ステップN3においては、基準点決定部12は、全ての部分ネットワークにm/M個の基準点を配分する。
そして、図33のステップN5において、基準点決定部12は、ノード数が多い方からr個の各部分ネットワークにはfloor(m/M)+1個の基準点、残りの部分ネットワークには各々floor(m/M)個の基準点を配分する。
図34のステップP1において、基準点決定部12は、部分ネットワークの集合Sを各々のノード数順に整列させ、ステップP2において、Mをmで割った余りをrとする。
図34のステップP3において、r=0であるか否かを確認する。r=0の場合には(ステップP3のYESルート参照)、ステップP9に移行する。ステップP9においては、基準点決定部12は、整列されたSの要素番号をMで割った余りが同じM/m個の要素からなるm個のグループに分ける。
一方、ステップP3における確認の結果、r=0でない場合には(ステップP3のNOルート参照)、ステップP4に移行する。図34のステップP4において、基準点決定部12は、整列されたSのうちノード数の多い方からM-r個までの部分集合を、要素番号をmで割った余りが同じ(M-r)/m個ずつを集めた、m個のグループからなるリストをGとする。
図34のステップP7において、基準点決定部12は、HとTの各々の先頭から順に1つずつ要素をよって、Hの要素であるグループにTの要素である部分ネットワークを追加する。
次に、上述した図32のフローチャートのステップM5における処理を、図35に示すフローチャート(ステップQ1〜Q17)に従って説明する。
図35のステップQ1において、基準点決定部12は、M≦Threshold2であるか否かを確認する。確認の結果、MがThreshold2以下である場合には(ステップQ1のYESルート参照)、ステップQ2に移行する。ステップQ2においては、基準点決定部12は、部分ネットワークの集合Sをm個のグループに分ける全てのパターンのリストをUとする。
その後、図35のステップQ12において、基準点決定部12は、Gの要素である各グループのノード数最大の部分ネットワークのゲートウェイノードに基準点を配置する。
図35のステップQ4において、基準点決定部12は、部分ネットワークの集合Sを各々のノード数順に整列する。図35のステップQ5において、基準点決定部12は、空リストをGとして設定する。
図35のステップQ10において、基準点決定部12は、Gの要素数=(m-1)であるか否かを確認する。Gの要素数が(m-1)に一致する場合には(ステップQ10のYESルート参照)、ステップQ11に移行する。
そして、図35のステップQ12において、基準点決定部12は、Gの要素である各グループのノード数最大の部分ネットワークのゲートウェイノードに基準点を配置する。
一方、ステップQ10における確認の結果、Gの要素数が(m-1)と一致しない場合には(ステップQ10のNOルート参照)、基準点決定部12は、図35のステップQ13においてggにgg+(S(i+j))を設定する。
また、nn/mがggよりも大きい場合には(ステップQ14のYESルート参照)、ステップQ16に移行する。図35のステップQ16においては、基準点決定部12は、Gにグループ{S(i),....S(i+j-1)}を追加する。
次に、第3実施例の一例としての並列計算機システム1の割り当て候補ノード集合探索部13による処理を、図36に示すフローチャート(ステップL1〜L11)に従って説明する。
また、図36のステップL2において、割り当て候補ノード集合探索部13は、shapeにジョブ J に必要な領域の形状パラメータ( {s(1), s(2), ..., s(N)})指定値を設定する。
図36のステップL5において、割り当て候補ノード集合探索部13は、許容可能な割り当て可能領域の分割パターンのリストをshape_listとする。
図36のステップL6において、割り当て候補ノード集合探索部13はsに1を設定する。また、図36のステップL7において、割り当て候補ノード集合探索部13は、基準点からのリンクのある他の部分ネットワークのゲートウェイノードを順次基準点とみなし、形状パラメータがshapeの探索を各部分ネットワーク内で第1実施例と同様の手法で行なう。
ステップL9における確認の結果、shape_listが空リストでない場合には(ステップL9のNOルート参照)、ステップL10に移行する。
また、図36のステップL8における確認の結果、空き領域がs個見つかった場合(ステップL8のYESルート参照)、およびステップL9における確認の結果、shape_listが空リストである場合には(ステップL9のYESルート参照)、それぞれ処理を終了する。
このように、実施形態の一例としての並列計算機システム1によれば、基準点決定部12が、ジョブ属性を示す属性値毎に、ネットワークトポロジーでのノード割り当て基準点を設定する。そして、割り当て候補ノード集合探索部13が、基準点から遠隔度が小さい方から、他のジョブによって使用中のノードを含まない指定された形状の領域を探索し、ジョブを割当てる計算ノード集合として選択する。
また、他のジョブによって使用中のノードを探索対象から除外することで、探索にかかる演算を軽減することができる。
さらに、割り当て候補ノード集合探索部13が、ジョブの属性値に対応する基準点に近い側の頂点の隣接点を優先して探索する。これにより、他の属性値に対応する基準点からはできるだけ遠い領域にジョブを割当てることができる。
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
また、上述した実施形態においては、遠隔度関数としてマンハッタン距離やユークリッド距離,チェビシェフ距離の距離関数を用いた例を示しているが、これに限定されるものではなく、これら以外の距離関数を用いてもよく種々変形して実施することができる。
[IV]付記
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
複数の計算ノードを備え、ジョブに対する演算処理を行なう計算機システムであって、
投入されるジョブ毎に、各ジョブのジョブ属性情報に対応させて、前記複数の計算ノードがそれぞれ配置されるノード座標空間にノード割り当て基準点をそれぞれ設定する基準点決定部と、
前記ノード座標空間において、前記ノード割り当て基準点からの通信時間の見積もり指標である遠隔度に関する所定の条件を満たす計算ノードの集合である計算ノード集合を探索する、ノード集合探索部と
を備えることを特徴とする計算機システム。
前記ノード集合探索部が、
前記ノード座標空間におけるジョブが未割当の計算ノードのうち、前記ノード割り当て基準点からの遠隔度が小さい計算ノードを優先して計算ノード集合として選択することを特徴とする、付記1記載の計算機システム。
前記ノード集合探索部が、
前記ノード座標空間に割り当てられている実行中ジョブの位置を管理する実行中ジョブ位置情報に基づき、ジョブを非実行中の前記計算ノードによる計算ノード集合を探索することを特徴とする、付記1または2記載の計算機システム。
前記遠隔度が、前記ノード座標空間における複数のノード座標の間の遠隔度関数によって表されることを特徴とする、付記1〜付記3のいずれか1項に記載の計算機システム。
(付記5)
複数の計算ノードを備えジョブに対する演算処理を行なう計算機システムにおいて、前記ジョブを処理する処理方法であって、
投入されるジョブ毎に、各ジョブのジョブ属性情報に対応させて、前記複数の計算ノードがそれぞれ配置されるノード座標空間にノード割り当て基準点をそれぞれ設定する処理と、
前記ノード割り当て基準点からの通信時間の見積もり指標である遠隔度に関する所定の条件を満たす計算ノードの集合である計算ノード集合を探索する処理と
を備えることを特徴とする処理方法。
前記ノード割り当て基準点からの遠隔度が小さい前記計算ノードを優先して選択することを特徴とする、付記5記載の処理方法。
(付記7)
前記ノード座標空間に割り当てられている実行中ジョブの位置を管理する実行中ジョブ位置情報に基づき、ジョブを非実行中の前記計算ノードによる計算ノード集合を探索することを特徴とする、付記5または6記載の処理方法。
前記遠隔度が、前記ノード座標空間における複数のノード座標の間の遠隔度関数によって表されることを特徴とする、付記5〜付記7のいずれか1項に記載の処理方法。
(付記9)
複数の計算ノードを備えジョブに対する演算処理を行なう計算機システムにおいて前記ジョブを処理させる機能をコンピュータに実行させるためのジョブ処理プログラムであって、
投入されるジョブ毎に、各ジョブのジョブ属性情報に対応させて、前記複数の計算ノードがそれぞれ配置されるノード座標空間にノード割り当て基準点をそれぞれ設定する処理と、
前記ノード割り当て基準点からの通信時間の見積もり指標である遠隔度に関する所定の条件を満たす計算ノードの集合である計算ノード集合を探索する処理と
を前記コンピュータに実行させることを特徴とするジョブ処理プログラム。
前記ノード割り当て基準点からの遠隔度が小さい前記計算ノードを優先して選択する処理を前記コンピュータに実行させることを特徴とする、付記9記載のジョブ処理プログラム。
(付記11)
前記ノード座標空間に割り当てられている実行中ジョブの位置を管理する実行中ジョブ位置情報に基づき、ジョブを非実行中の前記計算ノードによる計算ノード集合を探索する処理を前記コンピュータに実行させることを特徴とする、付記9または10記載のジョブ処理プログラム。
前記遠隔度が、前記ノード座標空間における複数のノード座標の間の遠隔度関数によって表されることを特徴とする、付記9〜付記11のいずれか1項に記載のジョブ処理プログラム。
11 ノード間情報設定部
12 基準点決定部
121 初期配置決定部
13 割り当て候補ノード集合探索部
131 実行待ちジョブ管理キュー
131a ジョブ管理構造体(ジョブ管理制御表)
132 実行中ジョブ管理情報(実行中ジョブ管理表)
133 ハッシュ情報(ハッシュ表)
14 割り当て候補ノード制限部
100 ジョブスケジューラノード
101,201 CPU
102,202 メモリ
103,203 NIC
200 計算ノード
Claims (5)
- 複数の計算ノードを備え、ジョブに対する演算処理を行なう計算機システムであって、
投入される複数のジョブのそれぞれに対して、前記複数の計算ノードがそれぞれ配置されるノード座標空間に当該ジョブのジョブ属性情報に対応するノード割り当て基準点を設定する基準点決定部と、
前記ノード座標空間において、前記ノード割り当て基準点からの通信時間の見積もり指標である遠隔度に基づき、前記ノード座標空間におけるジョブが未割当の計算ノードのうち、前記ノード割り当て基準点からの遠隔度が小さい計算ノードを優先して、計算ノードの集合である計算ノード集合として探索する、ノード集合探索部と
を備えることを特徴とする計算機システム。 - 前記ノード集合探索部が、
前記ノード座標空間に割り当てられている実行中ジョブの位置を管理する実行中ジョブ位置情報に基づき、ジョブを非実行中の前記計算ノードによる計算ノード集合を探索することを特徴とする、請求項1記載の計算機システム。 - 前記遠隔度が、前記ノード座標空間における複数のノード座標の間の遠隔度関数によって表されることを特徴とする、請求項1または2に記載の計算機システム。
- 複数の計算ノードを備えジョブに対する演算処理を行なう計算機システムにおいて、前記ジョブを処理する処理方法であって、
投入される複数のジョブのそれぞれに対して、前記複数の計算ノードがそれぞれ配置されるノード座標空間に当該ジョブのジョブ属性情報に対応するノード割り当て基準点を設定する処理と、
前記ノード割り当て基準点からの通信時間の見積もり指標である遠隔度に基づき、前記ノード座標空間におけるジョブが未割当の計算ノードのうち、前記ノード割り当て基準点からの遠隔度が小さい計算ノードを優先して、計算ノードの集合である計算ノード集合として探索する処理と
を備えることを特徴とする処理方法。 - 複数の計算ノードを備えジョブに対する演算処理を行なう計算機システムにおいて前記ジョブを処理させる機能をコンピュータに実行させるためのジョブ処理プログラムであって、
投入される複数のジョブのそれぞれに対して、前記複数の計算ノードがそれぞれ配置されるノード座標空間に当該ジョブのジョブ属性情報に対応するノード割り当て基準点を設定する処理と、
前記ノード割り当て基準点からの通信時間の見積もり指標である遠隔度に基づき、前記ノード座標空間におけるジョブが未割当の計算ノードのうち、前記ノード割り当て基準点からの遠隔度が小さい計算ノードを優先して、計算ノードの集合である計算ノード集合として探索する処理と
を前記コンピュータに実行させることを特徴とするジョブ処理プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014211692A JP6446989B2 (ja) | 2014-10-16 | 2014-10-16 | 計算機システム,処理方法及びジョブ処理プログラム |
US14/883,119 US10171574B2 (en) | 2014-10-16 | 2015-10-14 | Computer system, processing method, and computer-readable recording medium having job processing program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014211692A JP6446989B2 (ja) | 2014-10-16 | 2014-10-16 | 計算機システム,処理方法及びジョブ処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016081285A JP2016081285A (ja) | 2016-05-16 |
JP6446989B2 true JP6446989B2 (ja) | 2019-01-09 |
Family
ID=55750027
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014211692A Active JP6446989B2 (ja) | 2014-10-16 | 2014-10-16 | 計算機システム,処理方法及びジョブ処理プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10171574B2 (ja) |
JP (1) | JP6446989B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2982147A1 (en) | 2017-10-12 | 2019-04-12 | Rockport Networks Inc. | Direct interconnect gateway |
US11184245B2 (en) * | 2020-03-06 | 2021-11-23 | International Business Machines Corporation | Configuring computing nodes in a three-dimensional mesh topology |
CN111711522A (zh) * | 2020-05-13 | 2020-09-25 | 刘中恕 | 一种基于云共享机制的多区域实体身份认证系统 |
CN112070166A (zh) * | 2020-09-09 | 2020-12-11 | 深圳市城市规划设计研究院有限公司 | 一种基于临近矩形的哈密顿路径快速求解方法 |
CN113190358A (zh) * | 2021-05-25 | 2021-07-30 | 曙光信息产业(北京)有限公司 | 作业分配方法、装置、电子设备及可读存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0782477B2 (ja) * | 1990-02-08 | 1995-09-06 | 工業技術院長 | 並列プロセッサにおける負荷均衡方式 |
JP3215264B2 (ja) | 1994-06-29 | 2001-10-02 | 科学技術庁航空宇宙技術研究所長 | スケジュール制御装置とその方法 |
JP2002312336A (ja) * | 2001-04-11 | 2002-10-25 | Canon Inc | 並列処理プロセッサシステムおよびその処理方法 |
US8336040B2 (en) * | 2004-04-15 | 2012-12-18 | Raytheon Company | System and method for topology-aware job scheduling and backfilling in an HPC environment |
US8244882B2 (en) * | 2004-11-17 | 2012-08-14 | Raytheon Company | On-demand instantiation in a high-performance computing (HPC) system |
JP2007206986A (ja) * | 2006-02-01 | 2007-08-16 | Nomura Research Institute Ltd | スケジューラプログラム、格子型コンピュータシステム、タスク割り当て装置 |
US7844959B2 (en) * | 2006-09-29 | 2010-11-30 | Microsoft Corporation | Runtime optimization of distributed execution graph |
JP4935595B2 (ja) | 2007-09-21 | 2012-05-23 | 富士通株式会社 | ジョブ管理方法、ジョブ管理装置およびジョブ管理プログラム |
US8589931B2 (en) * | 2009-03-18 | 2013-11-19 | International Business Machines Corporation | Environment based node selection for work scheduling in a parallel computing system |
WO2012020474A1 (ja) * | 2010-08-10 | 2012-02-16 | 富士通株式会社 | ジョブ管理装置及びジョブ管理方法 |
JP5684629B2 (ja) | 2011-03-31 | 2015-03-18 | 日本電気株式会社 | ジョブ管理システム及びジョブ管理方法 |
US9513967B2 (en) * | 2014-09-18 | 2016-12-06 | International Business Machines Corporation | Data-aware workload scheduling and execution in heterogeneous environments |
-
2014
- 2014-10-16 JP JP2014211692A patent/JP6446989B2/ja active Active
-
2015
- 2015-10-14 US US14/883,119 patent/US10171574B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2016081285A (ja) | 2016-05-16 |
US10171574B2 (en) | 2019-01-01 |
US20160112506A1 (en) | 2016-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6446989B2 (ja) | 計算機システム,処理方法及びジョブ処理プログラム | |
JP6506929B2 (ja) | 二分木を用いてモデル化される工業製品を設計するためのコンピュータ実装方法 | |
JP6816078B2 (ja) | 拡張可能なマルチ車両タスクのためのシステムおよび方法 | |
JP7394129B2 (ja) | ナレッジグラフのパーティション分割 | |
CN110462586A (zh) | 使用加法器访问多维张量中的数据 | |
Schulz | High quality graph partitioning | |
JP2019109635A (ja) | ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法及び当該ネットワークを構成するためのノード | |
Mohtavipour et al. | A link-elimination partitioning approach for application graph mapping in reconfigurable computing systems | |
Drezner et al. | Incorporating neighborhood reduction for the solution of the planar p-median problem | |
Hancock et al. | The smart normal constraint method for directly generating a smart Pareto set | |
WO2019216346A1 (ja) | グラフ更新装置、グラフ更新方法、及びプログラム | |
Albers et al. | Tight bounds for online coloring of basic graph classes | |
Kasyanov et al. | A circular layout algorithm for attributed hierarchical graphs with ports | |
US20190392100A1 (en) | Storage medium which stores instructions for a simulation method in a semiconductor design process, semiconductor design system that performs the simulation method in the semiconductor design process, and simulation method in the semiconductor design process | |
Yadav et al. | An improved K-means clustering algorithm | |
KR101470695B1 (ko) | 그리드 컴퓨팅 스케쥴링을 위한 생물지리학적 최적화 방법 및 시스템 | |
JP5636078B1 (ja) | 仮想ネットワークの物理ネットワークへの配置装置及び方法 | |
JP5477242B2 (ja) | 最適化処理プログラム、方法及び装置 | |
CN109495305B (zh) | 一种多分布多商品多态流网络可靠性评估方法和装置 | |
CN111178532A (zh) | 一种量子线路匹配的方法、装置、存储介质和电子装置 | |
JP6492779B2 (ja) | マッピング情報生成プログラム、マッピング情報生成方法、及びマッピング情報生成装置 | |
JP7310910B2 (ja) | 情報処理回路および情報処理回路の設計方法 | |
CN109816110A (zh) | Scrypt算法工作量证明方法及装置 | |
CN110019984A (zh) | 空间索引建立方法、装置、电子设备及可读存储介质 | |
US20150127700A1 (en) | Parallel computer system, control unit, and method of controlling parallel computer system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170704 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180320 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180327 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180524 |
|
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: 20181106 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181119 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6446989 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |