(57)【要約】【課題】並列計算機システムにおいて計算ノードにジョブを割り当てる場合に、計算ノード間の通信時間を長くせずに並列計算機システムの稼働率の低下を抑えること。【解決手段】制御装置４は、並列計算機システム１の大物理軸と小物理軸を組み合わせて仮想軸を構成し、実行ノード選択部４４は、３つの仮想軸が構成する３次元仮想空間で計算ノード単位でジョブを割り当てる。また、大物理軸と小物理軸を組み合わせて仮想軸を構成する場合に、制御装置４は、仮想軸上で隣接する計算ノード５１は物理軸上でも隣接するように仮想軸を構成する。【選択図】図２
2015088134.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理軸を含む物理空間における格子状又は円環状のネットワークを介して互いに接続されるとともにそれぞれジョブを実行する複数の計算ノードと、前記複数の計算ノードを制御する制御装置とを有する並列計算機システムにおいて、
前記制御装置は、
ジョブを受け付ける受付部と、
前記複数の計算ノードのうち、前記物理軸を組み合わせた仮想軸を、前記受付部が受け付けたジョブが要求する次元数分有する仮想空間で、受け付けた前記ジョブを割り当てる計算ノードを選択する選択部と、
前記選択部が選択した計算ノードを用いて前記ジョブを実行するように、前記並列計算機に指示する指示部と
を有することを特徴とする並列計算機システム。
【請求項２】
前記選択部は、前記仮想軸において隣接する計算ノードは組み合わせた物理軸のいずれかで隣接するような仮想軸を前記次元数分有する仮想空間で該ジョブを割り当てる計算ノードを選択することを特徴とする請求項１記載の並列計算機システム。
【請求項３】
前記選択部は、
前記ジョブを割り当て可能な各計算ノードの前記仮想空間における座標を特定する座標特定部と、
前記座標特定部により特定された座標に基づいて前記ジョブを割り当てる計算ノードを特定するノード特定部と
を有することを特徴とする請求項１又は２記載の並列計算機システム。
【請求項４】
前記座標特定部は、
前記ジョブを割り当て可能な各計算ノードの前記物理空間における座標を取得する取得部と、
前記取得部により各計算ノードについて取得された座標を前記仮想空間における座標に変換する変換部と
を有することを特徴とする請求項３記載の並列計算機システム。
【請求項５】
前記座標特定部は、
前記仮想空間における各計算ノードの座標を記憶する記憶部と、
前記記憶部から前記ジョブを割り当て可能な各計算ノードの座標を取得する取得部と
を有することを特徴とする請求項３記載の並列計算機システム。
【請求項６】
前記受付部は、ジョブの形状を受け付け、
前記制御装置は、前記受付部が受け付けた形状のジョブを実行可能な計算ノードが形成する３次元形状の候補を算出する候補算出部をさらに有し、
前記選択部は、前記候補算出部により算出された候補に基づいて前記仮想空間で前記ジョブを割り当てる計算ノードを選択することを特徴とする請求項１〜５のいずれか１項に記載の並列計算機システム。
【請求項７】
複数の物理軸を含む物理空間における格子状又は円環状のネットワークを介して互いに接続されるとともにそれぞれジョブを実行する複数の計算ノードを制御する制御装置において、
ジョブを受け付ける受付部と、
前記複数の計算ノードのうち、前記物理軸を組み合わせた仮想軸を、前記受付部が受け付けたジョブが要求する次元数分有する仮想空間で、受け付けた前記ジョブを割り当てる計算ノードを選択する選択部と、
前記選択部が選択した計算ノードを用いて前記ジョブを実行するように、前記並列計算機に指示する指示部と
を有することを特徴とする制御装置。
【請求項８】
複数の物理軸を含む物理空間における格子状又は円環状のネットワークを介して互いに接続されるとともにそれぞれジョブを実行する複数の計算ノードと、前記複数の計算ノードを制御する制御装置とを有する並列計算機システムの制御方法において、
前記制御装置が、
ジョブを受け付け、
前記複数の計算ノードのうち、前記物理軸を組み合わせた仮想軸を、前記受付部が受け付けたジョブが要求する次元数分有する仮想空間で、受け付けた前記ジョブを割り当てる計算ノードを選択し、
選択された前記計算ノードを用いて前記ジョブを実行するように、前記並列計算機に指示することを特徴とする並列計算機システムの制御方法。
【請求項９】
複数の物理軸を含む物理空間における格子状又は円環状のネットワークを介して互いに接続されるとともにそれぞれジョブを実行する複数の計算ノードを制御する制御装置の制御プログラムにおいて、
前記制御装置に、
ジョブを受け付けさせ、
前記複数の計算ノードのうち、前記物理軸を組み合わせた仮想軸を、前記受付部が受け付けたジョブが要求する次元数分有する仮想空間で、受け付けた前記ジョブを割り当てる計算ノードを選択させ、
選択された前記計算ノードを用いて前記ジョブを実行するように前記並列計算機に指示させることを特徴とする制御装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算機システム、制御装置、並列計算機システムの制御方法及び制御装置の制御プログラムに関する。
【背景技術】
【０００２】
複数の計算ノードを有する並列計算機において、計算ノード間を接続するインタコネクトのトポロジの１つとして、格子状のメッシュネットワークがある。ここで、計算ノードは、ＣＰＵ（Central  Processing  Unit）、メインメモリ、他の計算ノードとの通信部などを有する情報処理装置である。
【０００３】
メッシュネットワークでは、通信する計算ノードの組み合わせによってホップ数すなわち途中で経由する計算ノード間経路の数が異なる。以下では、１ホップで到達できる関係にある計算ノード対を「隣接」であると表現し、その間の経路を「隣接経路」と呼ぶこととする。
【０００４】
メッシュネットワークでは、ホップ数が大きいほど計算ノード間の通信時間が長くなる傾向がある。また、２つの異なる計算ノード対で同時に通信を行った場合、同じ隣接経路が使用されたために性能が低下するケースがある。
【０００５】
そのため、複数のユーザーが同時に並列計算機の一部を使用する場合は、ユーザー自身のジョブの通信だけでなく、他ユーザーのジョブの通信の影響を受ける場合がある。その影響を緩和するために、ジョブを極力隣接関係にあるノードに配置していくことが行われている（例えば、特許文献１及び特許文献２参照）。
【０００６】
計算機でシミュレーションを行うユーザーは、計算ジョブの形状として、現実世界の次元に対応した３次元以下の形状を想定することが多い。一方で、並列計算機システムは、ネットワークの直径（最遠計算ノード対間の距離）の短縮、バイセクションバンド幅の向上、耐故障性の向上を目的として、３次元を超えたより高次元のシステムが構築されている。
【０００７】
このため、高次元の格子型のネットワーク上で切り出した領域に対して、複数軸を組み合わせてユーザージョブ要求の低次元の格子型の論理軸を構成する従来技術がある（例えば、特許文献３参照）。この従来技術では、高次元格子状ネットワークが、「計算ユニット」と称される小直方体状の計算ノード群で構成されるユニットが大きな直方体状に接続されたネットワークとみなされ、小直方体の軸と大直方体の軸とを組み合わせて論理軸が構成される。
【０００８】
図１０は、従来のジョブ割り当て方法を説明するための図である。図１０において、大物理軸は３次元大直方体における物理軸ｘ、ｙ及びｚを示し、小物理軸は３次元小直方体における物理軸ｕ、ｖ及びｗを示す。また、小直方体９０には、３（ｕ＝０〜２）×２（ｖ＝０〜１）×２（ｗ＝０〜１）＝１２個の計算ノード９１が含まれ、小直方体９０において、各小物理軸の方向に計算ノード９１は、トーラスネットワークを介して円環状に接続されているものとする。また、大直方体には、４（ｘ＝０〜３）×３（ｙ＝０〜２）×３（ｚ＝０〜２）＝３６個の小直方体９０が含まれる。
【０００９】
なお、図１０では、３次元の大直方体及び小直方体を示すが、Ｎを正の整数として、大直方体及び小直方体はＮ次元の直方体であってよい。また、図１０では、小直方体９０に１２個の計算ノード９１が含まれ、大直方体に３６個の小直方体９０が含まれるが、小直方体９１に任意の個数の計算ノード９１を含ませ、大直方体に任意の個数の小直方体９０を含ませることができる。
【００１０】
図１０（ａ）は、小直方体単位でのジョブ割り当てを示す。図１０（ａ）では、網掛けされた小直方体９０にジョブが割り当てられる。図１０（ａ）に示すように、この従来技術では、大直方体から小直方体単位で計算ノード９１が切り出されてジョブが割り当てられる。
【００１１】
図１０（ｂ）は、論理軸の構成例を示す。図１０（ｂ）では、大物理軸ｘと小物理軸ｕとが組み合わされて１つの論理軸ｌ０を構成しており、この論理軸ｌ０の軸長は１２である。ここで、軸長が１２であるとは、この軸の方向の計算ノード数が１２であることを示す。図１０（ｂ）に示すように、論理軸ｌ０については、ｘ方向の４つの計算ノード９１及びｕ方向の３つの計算ノード９１を合わせて４×３＝１２個の計算ノード９１にジョブが割り当てられる。
【００１２】
同様に、大物理軸ｙと小物理軸ｖとが組み合わされて構成される論理軸ｌ１、大物理軸ｚと小物理軸ｗとが組み合わされて構成される論理軸ｌ２のそれぞれの方向にジョブで要求される数の計算ノード９１が割り当てられる。これにより、３次元直方体形状のジョブに計算ノード９１が割り当てられる。
【００１３】
この割当方法には、以下の性能面のメリットがある。
・他ジョブの通信影響を受けにくい
・論理空間での隣接ノードが物理空間でも隣接している
・ユーザーに見せる論理軸を円環状のトーラス構造にすることができる
（周期境界条件などで有利）
・故障した計算ノードを含んでいてもトーラス構造の論理軸を組むことができる
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００７−２０６９８７号公報
【特許文献２】特開２０１２−２５２５９１号公報
【特許文献３】特開２０１２−１９８８２０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
並列計算機の評価指標として、実行時のアプリケーション性能のほかに、計算機全体の稼働率がある。稼働率が低い並列計算機では、ユーザーが投入したジョブが実行されるまでの時間が長くなる場合があり、計算結果が出る時刻が遅くなることがある。
【００１６】
例えば、図１０に示した従来技術には、小直方体単位で割り当て対象領域が占有されるため、割り当て時に計算ノード数に端数が出る場合があり、計算機の稼働率が低下しやすいという問題がある。図１１は、計算ノードに端数が出る場合を示す図である。図１１に示すように、論理軸の軸長が１０である場合には、小直方体単位でジョブが割り当てられると、×で示される２つの計算ノード９１は未使用となり、稼働率が低下する。
【００１７】
一方、計算ノード間の接続関係を無視してジョブを割り当てれば、稼働率は向上するが、計算ノード間の通信時間が長くなり、アプリケーション性能が低下することが多くなる。アプリケーション性能を極力低下させずに、なおかつ稼働率を優先させる割り当て方法が必要となる。
【００１８】
本発明は、１つの側面では、小直方体単位でジョブ割り当てを行った場合に計算ノードに端数が出るときの稼働率の低下を抑えることを目的とする。
【課題を解決するための手段】
【００１９】
本願の開示する並列計算機システムは、１つの態様において、ユーザーのジョブを実行する複数の計算ノードと前記複数の計算ノードを制御する制御装置とを有する。前記複数の計算ノードは、複数の物理軸を含む物理空間における格子状又は円環状のネットワークを介して互いに接続されるとともにそれぞれジョブを実行する。前記制御装置は、ジョブを受け付ける受付部と、前記複数の計算ノードのうち、前記物理軸を組み合わせた仮想軸を、前記受付部が受け付けたジョブが要求する次元数分有する仮想空間で、受け付けた前記ジョブを割り当てる計算ノードを選択する選択部を備える。また、前記制御装置は、前記選択部が選択した計算ノードを用いて前記ジョブを実行するように、前記並列計算機に指示する指示部を備える。
【発明の効果】
【００２０】
１実施態様によれば、稼働率の低下を抑えることができる。
【図面の簡単な説明】
【００２１】
【図１】図１は、実施例に係る並列計算機システムによるジョブの割り当て方法を説明するための図である。
【図２】図２は、実施例に係る並列計算機システムの構成を示す図である。
【図３】図３は、記憶部が計算ノードについて記憶する情報の一例を示す図である。
【図４】図４は、計算ユニットの構成の一例を示す図である。
【図５】図５は、並列計算機の構成の一例を示す図である。
【図６】図６は、実行ノード選択部の構成を示す図である。
【図７】図７は、仮想軸Ｚの分離を説明するための図である。
【図８】図８は、実施例に係る制御装置によるジョブ割り当てのフローを示すフローチャートである。
【図９】図９は、実施例に係る制御プログラムを実行するコンピュータのハードウェア構成を示す図である。
【図１０】図１０は、従来のジョブ割り当て方法を説明するための図である。
【図１１】図１１は、計算ノードに端数が出る場合を示す図である。
【発明を実施するための形態】
【００２２】
以下に、本願の開示する並列計算機システム、制御装置、並列計算機システムの制御方法及び制御装置の制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００２３】
まず、実施例に係る並列計算機システムによるジョブ割り当て方法について説明する。図１は、実施例に係る並列計算機システムによるジョブの割り当て方法を説明するための図である。図１（ａ）は、仮想軸を説明するための図であり、図１（ｂ）は、仮想空間内でのジョブ割り当てを示す図である。図１において、○は計算ノード５１を示す。
【００２４】
実施例に係る並列計算機システムは、予めユーザーのジョブが要求するうちの最大の次元の仮想的な格子状ネットワークを構成し、その仮想的な格子状ネットワークからメッシュ構造の直方体領域を切り出してユーザージョブを割り当てる。仮想的な格子状ネットワークは、そのネットワーク上で隣接するノードは元の物理的なネットワークでも隣接しているように構成される。以下、ここでは、ユーザーのジョブが要求する最大の次元を３とし、並列計算機の次元は６とする。
【００２５】
図１（ａ）は、図１０に示した大物理軸ｘと小物理軸ｕとを組み合わせて仮想軸Ｘを構成する場合を示す。図１（ａ）に示すように、仮想軸Ｘ上には、大物理軸ｘ＝０で小物理軸ｕ＝０、ｕ＝１及びｕ＝２の３個の計算ノード「０」〜「２」が並べられ、次に、大物理軸ｘ＝１で小物理軸ｕ＝２、ｕ＝１及びｕ＝０の３個の計算ノード「３」〜「５」が並べられる。そして、仮想軸Ｘ上には、次に、大物理軸ｘ＝２で小物理軸ｕ＝０、ｕ＝１及びｕ＝２の３個の計算ノード「６」〜「８」が並べられ、次に、大物理軸ｘ＝３で小物理軸ｕ＝２、ｕ＝１及びｕ＝０の３個の計算ノード「９」〜「１１」が並べられる。
【００２６】
ここで、計算ノード「０」〜「２」、計算ノード「３」〜「５」、計算ノード「６」〜「８」、及び計算ノード「９」〜「１１」は、小物理軸上で隣接している。また、計算ノード「２」と計算ノード「３」、計算ノード「５」と計算ノード「６」、及び計算ノード「８」と計算ノード「９」は、大物理軸上で隣接している。したがって、仮想軸Ｘで隣接する計算ノード「０」〜「１１」は、物理軸上でも隣接する。
【００２７】
同様に、図１０に示した大物理軸ｙと小物理軸ｖとを組み合わせて仮想軸Ｙが構成され、図１０に示した大物理軸ｚと小物理軸ｗとを組み合わせて仮想軸Ｚが構成される。そして、実施例に係る並列計算機システムは、仮想軸Ｘ、Ｙ及びＺで構成される仮想空間内で、計算ノード単位でジョブが要求する１〜３次元の直方体を切り出してジョブを割り当てる。
【００２８】
図１（ｂ）は、６×３×３の直方体５２と３×３×４の直方体５３が仮想空間から切り出された場合を示す。仮想空間内の直方体５２で隣接する計算ノード「１」〜「６」は、物理空間内でも隣接し、仮想空間内の直方体５３で隣接する計算ノード「７」〜「９」は、物理空間内でも隣接する。
【００２９】
このように、実施例に係る並列計算機システムは、物理軸を組み合わせて仮想軸を構成し、仮想軸で構成される仮想空間で計算ノード単位でジョブが要求する直方体形状を切り出してジョブを割り当てる。したがって、実施例に係る並列計算機システムは、小直方体単位でジョブ割り当てを行ったときのように計算ノード数に端数が出ることがなく、稼働率の低下を抑えることができる。
【００３０】
次に、実施例に係る並列計算機システムの構成について説明する。図２は、実施例に係る並列計算機システムの構成を示す図である。図２に示すように、並列計算機システム１は、入力装置２と、出力装置３と、制御装置４と、並列計算機５とを有する。
【００３１】
入力装置２は、ユーザーが並列計算機システム１にジョブを入力する場合などに用いる装置であり、キーボード及びマウスを有する。出力装置３は、並列計算機システム１の処理結果を表示する装置であり、液晶表示装置やプリンタである。
【００３２】
制御装置４は、並列計算機５を制御する装置である。制御装置４は、ユーザーからジョブの指定及びジョブを実行する計算ノード５１の数の指定を受け付け、ジョブを割り当てる計算ノード５１を選択する。そして、制御装置４は、選択した計算ノード５１がジョブを実行するように並列計算機５に指示し、並列計算機５から計算結果を受け取って出力装置３に出力する。また、制御装置４は、計算ノード５１の選択結果など制御装置４の処理結果を出力装置３に出力する。
【００３３】
制御装置４は、受付部４１と、ノード情報管理部４２と、記憶部４３と、実行ノード選択部４４と、出力部４５と、実行指示部４６とを有する。
【００３４】
受付部４１は、入力装置２を用いてユーザーから入力されたジョブ実行要求を受け付ける。ジョブ実行要求には、ジョブを実行する計算ノード５１の形状指定が含まれる。例えば、図１（ｂ）に示した直方体５２では、６×３×３、３×６×３などが指定される。
【００３５】
ノード情報管理部４２は、記憶部４３を用いて計算ノード５１の情報を管理する。記憶部４３は、計算ノード５１の情報を記憶する。また、記憶部４３は、実行ノード選択部４４による選択結果を記憶する。
【００３６】
図３は、記憶部４３が計算ノード５１について記憶する情報の一例を示す図である。図３に示すように、記憶部４３は、計算ノード毎に、番号と、ｘ、ｙ、ｚ、ｕ、ｖ及びｗと、使用状態と、稼動状態とを含む情報を記憶する。
【００３７】
番号は、計算ノード５１を一意に識別する識別子である。ｘ、ｙ及びｚは、計算ノード５１が属する小直方体の座標を示す。すなわち、ｘ、ｙ及びｚは、大物理軸で構成される３次元物理空間内の計算ノード５１の座標を示す。ｕ、ｖ及びｗは、計算ノード５１が属する小直方体内での計算ノード５１の座標を示す。すなわち、ｕ、ｖ及びｗは、小物理軸で構成される３次元物理空間内の計算ノード５１の座標を示す。
【００３８】
使用状態は、計算ノード５１が「使用中」であるか「空き」であるかを示す。稼動状態は、計算ノード５１が「異常」であるか「正常」であるかを示す。
【００３９】
実行ノード選択部４４は、受付部４１が受け付けたジョブ実行要求に基づいて、ジョブを実行する複数の計算ノード５１を選択する。すなわち、実行ノード選択部４４は、仮想空間からジョブが要求する１〜３次元直方体を切り出す。
【００４０】
そして、実行ノード選択部４４は、選択した複数の計算ノード５１の仮想空間座標を物理空間座標に変換し、選択した複数の計算ノード５１の物理空間座標をジョブの識別子と対応付けて選択結果として記憶部４３に格納する。なお、実行ノード選択部４４の詳細については後述する。
【００４１】
出力部４５は、ジョブの実行結果を実行指示部４６から受け取って出力装置３に出力する。また、出力部４５は、実行ノード選択部４４が選択した複数の計算ノード５１の物理空間座標をジョブと対応付けて出力装置３に出力する。
【００４２】
実行指示部４６は、並列計算機５に対してジョブの実行を指示し、実行結果を出力部４５を介して出力装置３に出力する。実行指示部４６は、実行ノード選択部４４が記憶部４３に格納した選択結果の情報に基づいて並列計算機５にジョブの実行を指示する。
【００４３】
並列計算機５は、複数の計算ノード５１がジョブを並列に実行する計算機である。並列計算機５では、複数の計算ユニット５０が３次元格子状に接続される。複数の計算ユニット５０が構成する物理空間は、図１０に示した大物理軸が構成する３次元物理空間に対応する。なお、図２では、図面を簡略化するために計算ユニット５０が２次元格子状に接続されている場合を示すが、実際には計算ユニット５０は３次元格子状に接続される。
【００４４】
計算ユニット５０は、複数の計算ノード５１を、トーラスネットワークを介して３次元の円環状に接続した計算機である。複数の計算ノード５１が構成する物理空間は、図１０に示した小物理軸が構成する３次元物理空間に対応し、計算ユニット５０は、図１０に示した小直方体９０に対応する。
【００４５】
図４は、計算ユニット５０の構成の一例を示す図である。図４に示すように、計算ユニット５０は、３×３×３＝２７個の計算ノード５１が配置されて構成される。各小物理軸の方向に配置された３個の計算ノード５１は相互に接続される。なお、ここでは、計算ユニット５０は２７個の計算ノード５１を有するが、３つの任意の整数ｉ、ｊ及びｋについて計算ユニット５０はｉ×ｊ×ｋ個の計算ノード５１を有することができる。
【００４６】
図５は、並列計算機５の構成の一例を示す図である。図５では、５×３×３＝４５個の計算ユニット５０が３次元格子ネットワークで接続される。図５に示すように、各計算ユニット５０においてｕ、ｖ及びｗの値が同じ計算ノード５１が３次元格子状に接続される。
【００４７】
したがって、計算ユニット５０内の計算ノード５１の個数２７の３次元格子状ネットワークで各計算ユニット５０が接続される。なお、ここでは、並列計算機５は４５個の計算ユニット５０を有するが、３つの任意の整数ｉ、ｊ及びｋについて並列計算機５はｉ×ｊ×ｋ個の計算ユニット５１を有することができる。
【００４８】
次に、実行ノード選択部４４の詳細について説明する。図６は、実行ノード選択部４４の構成を示す図である。図６に示すように、実行ノード選択部４４は、候補形状算出部４４１と、位置取得部４４２と、変換部４４３と、ノード特定部４４４と、逆変換部４４５とを有する。
【００４９】
候補形状算出部４４１は、ユーザーの指定したジョブ形状からジョブを割り当てる複数の計算ノード５１が形成する３次元形状の候補を算出する。ユーザージョブの指定が３次元形状(Ｘ，Ｙ，Ｚ)でＸ、Ｙ、Ｚが全て異なる場合には、(Ｘ，Ｙ，Ｚ)、及び（Ｘ，Ｙ，Ｚ）を回転した（Ｘ，Ｚ，Ｙ）、（Ｙ，Ｚ，Ｘ）、（Ｙ，Ｘ，Ｚ）、（Ｚ，Ｘ，Ｙ）及び（Ｚ，Ｙ，Ｘ）が候補形状である。ここで、（Ｘ，Ｙ，Ｚ）は、Ｘ×Ｙ×Ｚの直方体を示す。
【００５０】
なお、Ｘ、Ｙ、Ｚのうちいずれか２つの値が等しい場合には、値が等しい２つを入れ換えた形状は同一の形状となる。例えば、Ｘ＝Ｙである場合には、（Ｘ，Ｙ，Ｚ）と（Ｙ，Ｘ，Ｚ）は同一の形状となる。
【００５１】
ユーザージョブの指定が２次元形状（Ｘ，Ｙ）である場合には、（Ｘ，Ｙ，１）及び（Ｘ，Ｙ，１）を回転した形状が候補形状である。また、仮想軸Ｚを構成する大物理軸ｚから長さｂ、小物理軸ｗから長さａ（ａは小物理軸ｗの軸長）の領域を切り出し、Ｘ０＊ａ＞＝Ｘ、Ｙ０＊ｂ＞＝Ｙとなるような任意の整数Ｘ０、Ｙ０、ａ及びｂの組み合わせに対して（Ｘ０，Ｙ０，ａ＊ｂ）も候補形状である。ここで、「＊」は乗算を示す。また、（Ｙ０，Ｘ０，ａ＊ｂ）も候補形状である。
【００５２】
また、仮想軸Ｚと同様に、仮想軸Ｘを元の物理軸に分解し、Ｘ０＊ａ＞＝Ｘ、Ｙ０＊ｂ＞＝Ｙとなるような任意の整数Ｘ０、Ｙ０、ａ及びｂの組み合わせに対して、（ａ＊ｂ，Ｘ０，Ｙ０）、（ａ＊ｂ，Ｙ０，Ｘ０）も形状候補である。ただし、ａは小物理軸ｘの軸長である。また、仮想軸Ｚと同様に、仮想軸Ｙを元の物理軸に分解し、Ｘ０＊ａ＞＝Ｘ、Ｙ０＊ｂ＞＝Ｙとなるような任意の整数Ｘ０、Ｙ０、ａ及びｂの組み合わせに対して、（Ｘ０，ａ＊ｂ，Ｙ０）、（Ｙ０，ａ＊ｂ，Ｘ０）も形状候補である。ただし、ａは小物理軸ｙの軸長である。
【００５３】
また、仮想軸Ｚを分離し、仮想軸Ｘ及び仮想軸Ｙに分離した軸を含めることによっても別の形状候補が得られる。図７は、仮想軸Ｚの分離を説明するための図である。図７は、ユーザーの指定したジョブ形状が５×５であり、小物理軸ｗの軸長ａ＝２である場合を示す。
【００５４】
Ｘ０＊２＞＝５からＸ０＝３となり、例えばｂ＝３とするとＹ０＊ｂ＞＝５から、Ｙ０＝２となる。すなわち、仮想軸Ｚを構成する大物理軸ｚから長さ３、小物理軸ｗから長さ２の領域を切り出した場合、（Ｘ０，Ｙ０，ａ＊ｂ）＝（３，２，６）が形状候補となる。
【００５５】
ここで、仮想軸Ｚを小物理軸ｗと大物理軸ｚとに分離し、小物理軸ｗを仮想軸Ｘに含ませてユーザーが指定した形状の論理軸Ｘに対応させ、大物理軸ｚを仮想軸Ｙに含ませてユーザーが指定した形状の論理軸Ｙに対応させる。そして、小物理軸ｗと仮想軸Ｘを合わせた軸から５個の計算ノード「２」〜「６」、大物理軸ｚと仮想軸Ｙを合わせた軸から５個の計算ノード「３」〜「７」を選択することによって、５×５の候補形状が得られる。
【００５６】
すなわち、大物理軸と小物理軸を組み合わせた仮想軸で構成される３次元空間だけでなく、２つの大物理軸と１つの小物理軸を組み合わせた仮想軸と１つの大物理軸と２つの小物理軸を組み合わせた仮想軸とで構成される２次元空間でも形状候補が得られる。
【００５７】
ユーザージョブの指定が１次元形状(Ｘ)である場合には、Ｘ０＊Ｙ０＊Ｚ０＞＝Ｘとなるような任意の整数Ｘ０、Ｙ０、Ｚ０の組み合わせに対して（Ｘ０，Ｙ０，Ｚ０）が候補形状である。
【００５８】
位置取得部４４２は、故障していない計算ノード５１のうち他のジョブに割り当てられていない計算ノード５１の位置をノード情報管理部４２から取得する。
【００５９】
変換部４４３は、位置取得部４４２が取得した位置の６次元座標を仮想空間の３次元座標に変換する。変換部４４３は、例えば、以下の変換式を用いて座標を変換する。なお、以下の変換式では、６次元座標を（ｘ０，ｙ０，ｚ０，ｕ０，ｖ０，ｗ０）とし、３次元座標を（Ｘ０，Ｙ０，Ｚ０）としている。
【００６０】
ｘ０が偶数である場合は、
Ｘ０＝ｘ０＊（ｕ軸の長さ）＋ｕ０
ｘ０が奇数である場合は、
Ｘ０＝ｘ０＊（ｕ軸の長さ）＋（ｕ軸の長さ）−１−ｕ０
【００６１】
ｙ０が偶数である場合は、
Ｙ０＝ｙ０＊（ｖ軸の長さ）＋ｖ０
ｙ０が奇数である場合は、
Ｙ０＝ｙ０＊（ｖ軸の長さ）＋（ｖ軸の長さ）−１−ｖ０
【００６２】
ｚ０が偶数である場合は、
Ｚ０＝ｚ０＊（ｗ軸の長さ）＋ｗ０
ｚ０が奇数である場合は、
Ｚ０＝ｚ０＊（ｗ軸の長さ）＋（ｗ軸の長さ）−１−ｗ０
【００６３】
例えば、図１（ａ）において、（ｘ０，ｕ０）＝（０，２）である場合には、Ｘ０＝０＊３＋２＝２であり、（ｘ０，ｕ０）＝（１，２）である場合には、Ｘ０＝１＊３＋３−１−２＝３である。また、図１（ａ）において、（ｘ０，ｕ０）＝（２，０）である場合には、Ｘ０＝２＊３＋０＝６であり、（ｘ０，ｕ０）＝（３，２）である場合には、Ｘ０＝３＊３＋３−１−２＝９である。
【００６４】
なお、ここでは、変換部４４３が６次元座標を仮想空間の３次元座標に変換したが、ノード情報管理部４２が仮想空間の３次元座標で計算ノード５１の位置を管理し、実行ノード選択部４４に３次元座標を渡すこともできる。
【００６５】
ノード特定部４４４は、候補形状算出部４４１が算出した候補形状とマッチする位置を仮想空間内で探し、ジョブを割り当てる計算ノード５１を特定する。ノード特定部４４４は、ジョブを割り当てる計算ノード５１を特定するときに、候補形状とマッチする位置が複数ある場合には、最初に見つかった位置に基づいてジョブを割り当てる計算ノード５１を特定する。
【００６６】
あるいは、ノード特定部４４４は、候補形状とマッチする位置を仮想空間内で探す場合に、できるだけ大きな空き空間が残るように探すこともできる。ここで、空き空間とは、使用状態が「空き」であり、稼動状態が「正常」である計算ノード５１が形成する空間である。なお、ノード特定部４４４は、探索中に最初に見つかった位置に基づいてジョブを割り当てる計算ノード５１を特定することもできる。
【００６７】
逆変換部４４５は、ノード特定部４４４により特定された各計算ノード５１について、３次元仮想座標から、元の６次元物理座標に変換する。３次元仮想座標（Ｘ０，Ｙ０，Ｚ０）から６次元物理座標（ｘ０，ｙ０，ｚ０，ｕ０，ｖ０，ｗ０）に変換する計算式は、以下のとおりである。なお、以下で、整数ｐ、ｑについて、「ｐ／ｑ」は、ｐをｑで割った商を示し、「ｐ％ｑ」は、ｐをｑで割った余りを示す。
【００６８】
ｘ０＝Ｘ０／（ｕ軸の長さ）
Ｘ０を（ｕ軸の長さ）＊２で割った余りがｕ軸の長さより小である場合は、
ｕ０＝Ｘ０％（ｕ軸の長さ）
その他の場合は、
ｕ０＝（ｕ軸の長さ）−１−Ｘ０％（ｕ軸の長さ）
【００６９】
ｙ０＝Ｙ０／（ｖ軸の長さ）
Ｙ０を（ｖ軸の長さ）＊２で割った余りがｖ軸の長さより小である場合は、
ｖ０＝Ｙ０％（ｖ軸の長さ）
その他の場合は、
ｖ０＝（ｖ軸の長さ）−１−Ｙ０％（ｖ軸の長さ）
【００７０】
ｚ０＝Ｚ０／（ｗ軸の長さ）
Ｚ０を（ｗ軸の長さ）＊２で割った余りがｗ軸の長さより小である場合は、
ｗ０＝Ｚ０％（ｗ軸の長さ）
その他の場合は、
ｗ０＝（ｗ軸の長さ）−１−Ｚ０％（ｗ軸の長さ）
【００７１】
次に、実施例に係る制御装置４によるジョブ割り当てのフローについて説明する。図８は、実施例に係る制御装置４によるジョブ割り当てのフローを示すフローチャートである。図８に示すように、制御装置４は、入力装置２からユーザージョブの各軸方向のサイズを受け取る（ステップＳ１）。
【００７２】
そして、制御装置４は、ユーザージョブを割り当て可能な３次元の仮想直方体形状すなわち候補形状を算出する（ステップＳ２）。そして、制御装置４は、ジョブ割り当て可能な計算ノード５１の位置を取得し（ステップＳ３）、取得した位置を３次元の仮想空間にマップする（ステップＳ４）。
【００７３】
そして、制御装置４は、仮想空間内で候補形状を探し、ジョブを割り当てる計算ノード５１を選択する（ステップＳ５）。そして、制御装置４は、ジョブの割り当てが成功したか否かを判定する（ステップＳ６）。
【００７４】
その結果、ジョブの割り当てが成功した場合には、制御装置４は、選択した計算ノード５１の３次元仮想空間座標を６次元物理空間座標に変換し（ステップＳ７）、割り当て結果を出力装置３に出力するとともに記憶部４３に書き込む（ステップＳ８）。一方、ジョブの割り当てが成功しなかった場合には、制御装置４は、ジョブの割り当て失敗を出力装置３に出力する（ステップＳ９）。
【００７５】
上述してきたように、実施例では、制御装置４は、並列計算機システム１の大物理軸と小物理軸を組み合わせて仮想軸を構成し、実行ノード選択部４４は、３つの仮想軸が構成する３次元仮想空間で計算ノード単位でジョブを割り当てる。したがって、制御装置４は、計算ユニット５０単位でジョブを割り当てる場合に発生する未使用計算ノード５１をなくすことができ、並列計算機システム１の稼働率の低下を抑えることができる。
【００７６】
また、実施例では、大物理軸と小物理軸を組み合わせて仮想軸を構成する場合に、制御装置４は、仮想軸上で隣接する計算ノード５１は物理軸上でも隣接するように仮想軸を構成する。したがって、並列計算機システム１は、計算ノード５１間の通信時間が長くなることを防ぐことができる。
【００７７】
なお、大物理軸と小物理軸を組み合わせて仮想軸を構成する場合でも、ジョブを割り当てられた計算ノード５１の一部が計算ユニット５０に対応する場合がある。そのような場合、制御装置４は、計算ユニット５０内では従来の割り当て方法を用いてジョブを割り当てることができる。
【００７８】
また、実施例では、制御装置４が全てのジョブについて計算ノード単位でジョブを割り当てる場合について説明した。しかしながら、ジョブを計算ノード単位で割り当てるか計算ユニット５０単位で割り当てるかをユーザーに指定させ、制御装置４はユーザーの指定に基づいてジョブを割り当てることもできる。
【００７９】
ユーザーは、ジョブを計算ユニット５０単位で割り当てることによって、
・ユーザーに見せる論理軸を円環状のトーラス構造にすることができる
・故障した計算ノードを含んでいてもトーラス構造の論理軸を組むことができる
という利点を得ることができる。
【００８０】
また、実施例では、位置取得部４４２が、故障していない計算ノード５１のうち他のジョブに割り当てられていない計算ノード５１の位置を取得し、変換部４４３が、位置置取得部４４２が取得した位置の６次元座標を仮想空間の３次元座標に変換する。したがって、制御装置４は、故障していない計算ノード５１のうち他のジョブに割り当てられていない計算ノード５１の位置を仮想空間において把握することができる。
【００８１】
また、実施例では、候補形状算出部４４１が、ユーザーの指定したジョブ形状からジョブを割り当てる複数の計算ノード５１が形成する３次元形状の候補を候補形状としてユーザーの指定したジョブ形状と異なる場合も含めて算出する。そして、実行ノード選択部４４は、候補形状算出部４４１により算出された候補形状に基づいて計算ノード５１を選択する。したがって、制御装置４は、ジョブが割り当て可能な計算ノード５１を、計算ノード５１が形成する形状がジョブ形状と異なる場合も含めて、選択することができ、選択が成功する割合を高めることができる。
【００８２】
なお、実施例では、制御装置４について説明したが、制御装置４が有する構成をソフトウェアによって実現することで、同様の機能を有する制御プログラムを得ることができる。そこで、制御プログラムを実行するコンピュータについて説明する。
【００８３】
図９は、実施例に係る制御プログラムを実行するコンピュータのハードウェア構成を示す図である。図９に示すように、コンピュータ６０は、メインメモリ６１と、ＣＰＵ６２と、ＬＡＮ（Local  Area  Network）インタフェース６３と、ＨＤＤ（Hard  Disk  Drive）６４とを有する。また、コンピュータ６０は、スーパーＩＯ（Input  Output）６５と、ＤＶＩ（Digital  Visual  Interface）６６と、ＯＤＤ（Optical  Disk  Drive）６７とを有する。
【００８４】
メインメモリ６１は、プログラムやプログラムの実行途中結果などを記憶するメモリである。ＣＰＵ６２は、メインメモリ６１からプログラムを読み出して実行する中央処理装置である。ＣＰＵ６２は、メモリコントローラを有するチップセットを含む。
【００８５】
ＬＡＮインタフェース６３は、コンピュータ６０をＬＡＮ経由で他のコンピュータに接続するためのインタフェースである。ＨＤＤ６４は、プログラムやデータを格納するディスク装置であり、スーパーＩＯ６５は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。ＤＶＩ６６は、液晶表示装置を接続するインタフェースであり、ＯＤＤ６７は、ＤＶＤの読み書きを行う装置である。
【００８６】
ＬＡＮインタフェース６３は、ＰＣＩエクスプレスによりＣＰＵ６２に接続され、ＨＤＤ６４及びＯＤＤ６７は、ＳＡＴＡ（Serial  Advanced  Technology  Attachment）によりＣＰＵ６２に接続される。スーパーＩＯ６５は、ＬＰＣ（Low  Pin  Count）によりＣＰＵ６２に接続される。
【００８７】
そして、コンピュータ６０において実行される制御プログラムは、ＤＶＤに記憶され、ＯＤＤ６７によってＤＶＤから読み出されてコンピュータ６０にインストールされる。あるいは、制御プログラムは、ＬＡＮインタフェース６３を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ６０にインストールされる。そして、インストールされた制御プログラムは、ＨＤＤ６４に記憶され、メインメモリ６１に読み出されてＣＰＵ６２によって実行される。
【００８８】
また、実施例では、並列計算機５が大物理軸と小物理軸とを有する場合について説明したが、本発明はこれに限定されるものではなく、大小の区別なく複数の物理軸を有する場合にも同様に適用することができる。すなわち、並列計算機が計算ユニット５０を有することなく、複数の計算ノード５１をＮ次元メッシュネットワークで接続する場合にも、本発明を同様に適用することができる。
【００８９】
また、実施例では、１つの大物理軸と１つの小物理軸を組み合わせて１つの仮想軸を構成する場合について説明したが、本発明はこれに限定されるものではなく、３以上の物理軸を組み合わせて１つの仮想軸を構成する場合にも同様に適用することができる。
【００９０】
また、実施例では、並列計算機５が６次元の物理空間に計算ノード５１を配置する場合について説明したが、本発明はこれに限定されるものではなく、並列計算機がより高次元又はより低次元の物理空間に計算ノードを配置する場合にも同様に適用することができる。また、実施例では、仮想空間の次元が３次元である場合について説明したが、本発明はこれに限定されるものではなく、仮想空間の次元がより高次元又はより低次元の場合にも同様に適用することができる。
【００９１】
また、実施例では、複数の計算ユニット５０が３次元格子状に接続される場合について説明したが、本発明はこれに限定されるものではなく、複数の計算ユニット５０が、３次元トーラスネットワークを介して３次元の円環状に接続される場合にも同様に適用することができる。また、実施例では、複数の計算ノード５１が、３次元トーラスネットワークを介して３次元の円環状に接続される計算ユニット５０について説明したが、本発明はこれに限定されるものではなく、複数の計算ノード５１が３次元格子状に接続される計算ユニットについても同様に適用することができる。
【符号の説明】
【００９２】
１    並列計算機システム
２    入力装置
３    出力装置
４    制御装置
５    並列計算機
４１    受付部
４２    ノード情報管理部
４３    記憶部
４４    実行ノード選択部
４５    出力部
４６    実行指示部
５０    計算ユニット
５１，９１    計算ノード
５２，５３    直方体
６０    コンピュータ
６１    メインメモリ
６２    ＣＰＵ
６３    ＬＡＮインタフェース
６４    ＨＤＤ
６５    スーパーＩＯ
６６    ＤＶＩ
６７    ＯＤＤ
９０    小直方体
４４１    候補形状算出部
４４２    位置取得部
４４３    変換部
４４４    ノード特定部
４４５    逆変換部
【図１】
2015088134.tif 000003
【図２】
2015088134.tif 000004
【図３】
2015088134.tif 000005
【図４】
2015088134.tif 000006
【図５】
2015088134.tif 000007
【図６】
2015088134.tif 000008
【図７】
2015088134.tif 000009
【図８】
2015088134.tif 000010
【図９】
2015088134.tif 000011
【図１０】
2015088134.tif 000012
【図１１】
2015088134.tif 000013