(57)【要約】【課題】本発明の課題は、パラメータ空間を探索するマルチジョブシステムにおいて探索時間を短縮することを目的とする。【解決手段】上記課題は、複数のノードを用いた並列計算によって実行されるプログラムを記憶した記憶部と、前記記憶部から読み込んだ前記プログラムを複数のジョブで実行し、一定経過時間毎に各ジョブの計算結果を解析して、解析結果から得られる各ジョブの残り実行時間に基づいて全ジョブの終了が揃うように各ジョブの並列度を調整することによって、前記並列計算の全体のジョブスケジュールを行う並列度調整部を有し、該並列度調整部によって得られた該ジョブスケジュールに基づいて該並列度を変更する制御部とを有する並列計算制御装置により達成される。【選択図】図１
2013140490.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードを用いた並列計算によって実行されるプログラムを記憶した記憶部と、
前記記憶部から読み込んだ前記プログラムを複数のジョブで実行し、一定経過時間毎に各ジョブの計算結果を解析して、解析結果から得られる各ジョブの残り実行時間に基づいて全ジョブの終了が揃うように各ジョブの並列度を調整することによって、前記並列計算の全体のジョブスケジュールを行う並列度調整部を有し、該並列度調整部によって得られた該ジョブスケジュールに基づいて該並列度を変更する制御部と
を有することを特徴とする並列計算制御装置。
【請求項２】
前記並列度調整部は、ジョブ毎にノード数と継続して行われる時間とで表されるタイリングで前記並列度を調整して前記ジョブスケジュールを行うことを特徴とする請求項１記載の並列計算制御装置。
【請求項３】
前記並列度調整部は、
前記記憶部から読み込んだ前記プログラムを複数のジョブで実行し、一定経過時間毎に各ジョブの計算結果を解析して、ジョブ毎の終了までに要する第１残り実行時間を見積もって、各ジョブに該第１残り実行時間を対応付けた第１テーブルを該記憶部に記憶する第１残り実行時間見積もり部と、
ジョブ毎に、前記記憶部の前記第１テーブルを参照して、前記第１残り実行時間の、２以上のノードによる並列度を調整した場合の最短実行時間を見積もる最短実行時間見積もり部と、
ジョブ毎に、前記第１残り実行時間の前記最短実行時間に対する割合からノード数を示す並列度を算出して、前記記憶部の前記第１テーブル内に、各ジョブに対応付けて該並列度を記憶する並列度算出部と、
ジョブ毎に前記並列度に基づいてジョブの第２残り実行時間を算出して全ジョブで平均し、前記最短実行時間を該平均値で除算することにより、前記最短実行時間に達するまで繰り返されるジョブの平均回転数を取得する平均回転数取得部と、
各ジョブの前記第２残り実行時間を平均回転数で除算した値を全ジョブで平均して投入ジョブ時間を算出する投入ジョブ実行時間算出部と、
前記複数のノードへのジョブの投入順に従って前記並列度を累積すると共に、該並列度に投入ジョブ時間を乗算することによって得られる並列度ジョブ時間を累積して、各ジョブに夫々の累積した値を対応付けた第２テーブルを前記記憶部に記憶する累積部とを有することを特徴とする請求項２記載の並列計算制御装置。
【請求項４】
前記累積部によって累積された前記並列度ジョブ時間の累積値が前記残り実行時間未満であって、前記並列度の累積値が全ノード数に達した場合、前記第１残り実行時間見積もり部と、前記最短実行時間見積もり部と、前記並列度算出部と、前記平均回転数取得部と、前記投入ジョブ実行時間算出部と、前記累積部とを繰り返すことを特徴とする請求項３記載の並列計算制御装置。
【請求項５】
コンピュータによって実行される並列計算制御方法であって、
記憶部に記憶された複数のノードを用いた並列計算によって実行されるプログラムを読み込んで複数のジョブで実行し、
一定経過時間毎に各ジョブの計算結果を解析し、
前記解析の結果から得られる各ジョブの残り実行時間に基づいて全ジョブの終了が揃うように各ジョブの並列度を調整することによって、前記並列計算の全体のジョブスケジュールを行い、
前記ジョブスケジュールに基づいて前記並列度を変更する
ことを特徴とする並列計算制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続された複数のプロセッサを用いた並列計算によってプログラムの実行を制御する並列計算制御装置及び並列計算制御方法に関する。
【背景技術】
【０００２】
ネットワークに接続された複数のプロセッサを用いた並列計算機システムによって、材料の最適組成などのパラメータ探索等が行われている。パラメータ探索を行った際には、ある領域のパラメータでは他のものに比べて桁違いに計算量が大きくなり、それにより全体の探索完了までの時間を長くしてしまうということが起こる。
【０００３】
そのため、現行プロセッサ数と前回プロセッサ数との単位時間当たりの処理量を表す現行処理能率の差が許容値以上の場合に、大小関係に基づいて、次回プロセッサ数を増減させることによって、処理時間を最小にするプロセッサ数に到達し、並列プログラムの処理時間を短縮すること、パラメータを最適化する際に、最適値算出の対象とされるパラメータの上限値及び下限値を境界とする探索空間内にそれらのパラメータを要素とする固体を複数生成させて、それらの固体を１つずつ探索空間の内側に向かうように方向性を持たせて変位させるように挟み撃ち探索を行うこと等が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０８−２４９２９４号公報
【特許文献２】特開２００７−２３３６７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した従来技術より、並列計算を行う際には並列度を上げれば、計算が完了するまでの時間を短縮することができると考えられる。しかしながら、複数のパラメータによるパラメータ空間を探索するマルチジョブシステムでは、パラメータ毎に処理量が異なり、各処理量は計算してみないと分からないと言った問題があった。
【０００６】
並列計算によってパラメータ空間内の複数のパラメータを同時に処理する際には、他のパラメータに対する処理時間よりも掛かることが分かれば、そのジョブの並列度を上げて、全体のスループットを上げることが考えられる。しかし、数百に及ぶ規模のジョブを人が調整するには、並列計算に係る知識のみならず、計算対象に関する専門的な知識を要する。
【０００７】
よって、本発明の目的は、パラメータ空間を探索するマルチジョブによる並列計算において探索時間を短縮する並列計算制御装置及び並列計算制御方法を提供することである。
【課題を解決するための手段】
【０００８】
開示の技術は、複数のノードを用いた並列計算によって実行されるプログラムを記憶した記憶部と、前記記憶部から読み込んだ前記プログラムを複数のジョブで実行し、一定経過時間毎に各ジョブの計算結果を解析して、解析結果から得られる各ジョブの残り実行時間に基づいて全ジョブの終了が揃うように各ジョブの並列度を調整することによって、前記並列計算の全体のジョブスケジュールを行う並列度調整部を有し、該並列度調整部によって得られた該ジョブスケジュールに基づいて該並列度を変更する制御部とを有することを特徴とする並列計算制御装置のように構成される。
【０００９】
また、上記課題を解決するための手段として、コンピュータに上記並列計算制御装置として機能させるためのプログラム、そのプログラムを記録した記録媒体、及び並列計算制御方法とすることもできる。
【発明の効果】
【００１０】
開示の技術では、複数のノードを用いた並列計算においてプログラムを複数のジョブで実行し、一定経過時間毎に全ジョブの終了が揃うように各ジョブの並列度を調整するため、他ノードのジョブの終了待ちを削減することができ、並列計算のスループットを改善することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施例に係る並列計算システムの構成例を示す図である。
【図２】並列計算部の構成を示す図である。
【図３】フロントエンド計算装置のハードウェア構成を示す図である。
【図４】並列度調整処理の概要を説明するための図である。
【図５】制御部による全体処理の概要を説明するためのフローチャート図である。
【図６】図５の処理Ｐ２０を説明するためのフローチャート図である。
【図７】１順目を含む処理における計算例を説明するための図である。
【図８】２順目における計算例を説明するための図である。
【図９】３順目における計算例を説明するための図である。
【図１０】４順目における計算例を説明するための図である。
【図１１】５順目における計算例を説明するための図である。
【図１２】ジョブ順の並べ替えた結果例を示す図である。
【図１３】結晶化過程の一例を示す図である。
【図１４】結晶領域の体積の見積もり方法の一例を示す図である。
【図１５】組成と結晶化し易さとの関係の検証方法の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態を図面に基づいて説明する。図１は、本実施例に係る並列計算システムの構成例を示す図である。図１に示す並列計算システム１０００では、フロントエンド計算装置１００と、複数のノード２０（図２）を有する並列計算部２００とが、ネットワーク６を介して接続され、組成構造等に係るパラメータ空間における所望の構造状態に関するパラメータの最適値を探索するマルチジョブシステムを実現する。
【００１３】
並列計算システム１０００では、例えば、アモルファス材料の結晶化を抑制するために不純物を混ぜる検証において、その組成を調整するための分子動力学法シミュレーションが行われてもよい。また、別の例として、熱電材料の探索のため、３元系材料の組成をふって、理想的な電子状態（バンド構造）および格子振動特性をもたらすものを、第一原理計算手法を使って探索するシミュレーションを行ってもよい。
【００１４】
図１において、フロントエンド計算装置１００は、コンピュータ装置（図３）であり、ネットワークを介して接続される並列計算部２００に対して、複数のパラメータを用いたシミュレーションを行わせる制御部１２０と、キューイングシステム１９０とを有する。フロントエンド計算装置１００は、並列計算制御装置に相当する。
【００１５】
制御部１２０は、フロントエンド計算装置１００全体を制御する処理部であり、図３に示すＣＰＵ１１による処理によって実現される。制御部１２０は、複数のパラメータを用いたシミュレーションにおいて並列処理全体が短くなるように、各パラメータに係るジョブの並列度を動的に変更する並列度調整部１２４を有する。
【００１６】
並列度とは、同時に実行される１以上のパラメータに対して、各パラメータを指定したジョブを並列実行するためのノード２０（図２）の数である。並列処理全体を短くするために、各ノード２０の空き時間を少なくし、全ノード２０で略同時に処理が完了するように並列度が調整される。即ち、終了までの残り時間を見積もることによって、各パラメータに係る処理（ジョブ）の投入と、投入した各処理（ジョブ）を並列に行うためのノード２０の数とが、動的に決定される。
【００１７】
また、制御部１２０は、並列度調整部１２４によって動的に調整された並列度に従って、並列計算部２００のノード２０に指定されたパラメータに係る処理を行わせるキューイングシステム１９０を有する。
【００１８】
記憶部１３０には、プログラムＡ３１、プログラムＢ３２、・・・と、プログラムＡ３１、プログラムＢ３２、・・・に対応する解析プログラムＡ'４１、解析プログラムＢ'４２、・・・とが格納される。プログラムＡ３１、プログラムＢ３２、・・・とは、並列計算部２００に実行させるプログラムである。解析プログラムＡ'４１は、プログラムＡ３１によるシミュレーション終了後に結果を解析するためのプログラムであり、制御部１２０によって実行される。解析プログラムＢ'４２、・・・についても同様に、制御部１２０によって実行される。
【００１９】
更に、記憶部１３０には、入力データファイル５１と、出力データファイル５３とが格納される。入力データファイル５１は、ユーザによって入力された、各組成の構造データ、パラメータセット等である。入力データファイル５１で指定されるパラメータセット内の各パラメータに関して、並列度調整部１２４によって並列度が調整される。出力データファイル５３は、計算結果を含み、ジョブ毎に並列計算部２００から受信する経過時間等を含む。並列度調整部１２４は、出力データファイル５３を参照して、ジョブ終了毎にひとつのパラメータに対する計算が完遂するのに要する時間を見積もる。ジョブ毎の結果に基づいて、継続して計算する判断がなされた場合、出力データファイル５３が入力され次のジョブを行うために使用される。
【００２０】
図２は、並列計算部の構成を示す図である。図２に例示する並列計算部２００は、複数のノード２０を有する。図２において、各ノード２０は、プロセッサ５、記憶装置２２、通信装置等を有するコンピュータ装置であり、フロントエンド計算装置１００の制御部１２０の制御配下で、並列計算処理を実行する。
【００２１】
プロセッサ５は、フロントエンド計算装置１００から転送されるプログラムＡ３１、又はプログラムＢ３２等をジョブ毎に実行する。実行中のデータ、実行結果は、記憶装置２２に格納される。ジョブ終了毎に実行結果がフロントエンド計算装置１００へ転送される。
【００２２】
記憶装置２２は、ノード２０の主記憶装置１２（図３）、補助記憶装置１３（図３）等を有してもよい。また、記憶装置２２は、更に、ノード２０がアクセス可能な外部記憶装置を含んでもよい。ここでは、プロセッサ５が並列処理を行うために必要なデータを格納する領域を含む装置として、総括的に記憶装置２２として示す。
【００２３】
並列計算部２００に含まれるノード２０の台数は、数台、数１０台〜数１０，０００台等、特に、規定するものではないが、以下の説明では、本実施例の簡潔に説明するために、ノード数を１０台とする。
【００２４】
図３は、フロントエンド計算装置のハードウェア構成を示す図である。図３に示すフロントエンド計算装置１００は、コンピュータによって制御される装置であり、ＣＰＵ（Central Processing Unit）１１と、主記憶装置１２と、補助記憶装置１３と、表示装置１４と、入力装置１５と、通信Ｉ／Ｆ１６と、ドライブ１８と、記憶媒体１９とを有する。
【００２５】
ＣＰＵ１１は、主記憶装置１２に格納されたプログラムに従ってフロントエンド計算装置１００を制御する。主記憶装置１２には、ＲＡＭ（Random Access Memory）等が用いられ、ＣＰＵ１１にて実行されるプログラム、ＣＰＵ１１での処理に必要なデータ、ＣＰＵ１１での処理にて得られたデータ等を格納する。また、主記憶装置１２の一部の領域が、ＣＰＵ１１での処理に利用されるワークエリアとして割り付けられる。
【００２６】
補助記憶装置１３には、例えば、ハードディスクユニットが用いられ、各種処理を実行するプログラム（プログラムＡ３１、プログラムＢ３２、・・・、解析プログラムＡ'４１、解析プログラムＢ'４２、・・・等を含む）と、入力データファイル５１と、出力データファイル５３とが格納される。
【００２７】
表示装置１４は、ＣＰＵ１１の制御のもとに必要な各種情報を表示する。入力装置１５は、マウス、キーボード等を有し、ユーザがフロントエンド計算装置１００が処理を行うための必要な各種情報を入力する。
【００２８】
通信Ｉ／Ｆ１６は、例えば、インターネット、ＬＡＮ（Local Area Network）等に接続し、並列計算部２００内のノード２０との間の通信制御をするための装置である。通信Ｉ／Ｆ１６による通信は無線又は有線に限定されるものではない。
【００２９】
フロントエンド計算装置１００の制御部１２０の並列度調整部１２４によって行われる処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ（Compact Disc Read-Only）等の記憶媒体１９によってフロントエンド計算装置１００に提供される。即ち、プログラムが保存された記憶媒体１９がドライバ１８にセットされると、ドライバ１８が記憶媒体１９からプログラムを読み出し、その読み出されたプログラムがバスＢを介して補助記憶装置１３にインストールされる。そして、プログラムが起動されると、補助記憶装置１３にインストールされたプログラムに従ってＣＰＵ１１がその処理を開始する。尚、プログラムを格納する媒体としてＣＤ−ＲＯＭに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。コンピュータ読取可能な記憶媒体として、ＣＤ−ＲＯＭの他に、ＤＶＤディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。また、外部ネットワークを介してプログラムを補助記憶装置１３に転送しても良い。或いは、入力装置１５を使ってプログラムを作成し補助記憶装置１３に保存しても良い。
【００３０】
また、主記憶装置１２、補助記憶装置１３、及び外部記憶装置で提供される一部又は全体の記憶領域が、本実施例に係るデータを格納する記憶部に相当する。
【００３１】
次に、並列度調整部１２４による並列度調整処理について説明する。図４は、並列度調整処理の概要を説明するための図である。図４に示す例では、ノード数「１０」とし、実行するパラメータ数「１０」で説明する。ノード数及びパラメータ数は、この例に限定されない。図４中、升目内の数字は、パラメータを指定する番号である。
【００３２】
簡単のために、ひとつのジョブの制限時間を１時間である並列計算システム１０００で、各ジョブ終了後に結果を解析し、その解析結果に応じてジョブの継続計算をするのか終了するのかを判断する場合で説明する。
【００３３】
並列度調整部１２４は、各ジョブ終了時に、ひとつのパラメータに対する計算が完遂するのに要する時間を見積もる。例えば、アモルファス材料の結晶化のシミュレーションの場合には、１時間のジョブ終了時に結晶化率が５％進んだとすると完全結晶化まで総２０時間要すると判断（予測）する。別の第一原理計算による構造緩和の場合には、原子に働く力の減少率から大雑把に総計算時間を見積もることができる。
【００３４】
このようにして、各ジョブが終わった段階で、各パラメータごとの残り計算時間に基づいてジョブスケジュール４ａに例示されるように見積もられたとする。全体で１０ノードの並列計算システム１０００で、各ジョブは、最初１ノードで実行するとする。パラメータとジョブとの対応は、１対１とする。各ジョブは、ジョブ番号で識別される。ジョブ１はノード１で、ジョブ２はノード２で、ジョブ３はノード３で、・・・、ジョブ１０はノード１０で、ジョブの制限時間分（例えば、１時間）実行される。
【００３５】
並列度調整部１２４によって、ジョブ１及び２に対しては残り２０時間、ジョブ３に対しては残り１０時間、ジョブ４に対しては残り８時間、ジョブ５に対しては残り７時間、ジョブ６〜１０に対しては残り５時間必要であると予測する。
【００３６】
このままでは、全体の計算に要する時間は、ジョブ１及び２に対する計算が完了するのに必要な２１時間と予測される。そのため、他ノード３から１０で空白部が生じてしまう。予測に基づいて、全処理が完遂するまでの時間において、各ノードに空白部が生じないように、処理時間の長いジョブに対して並列度を上げ、また、ジョブの順番を調整する。
【００３７】
このように、並列度調整部１２４によって、例えば、ジョブスケジュール４ｂのように並列度が調整される。ジョブスケジュール４ｂは、ノード数×時間の面積へのタイリングで表される。並列度調整部１２４を含む制御部１２０による処理について、図５及び図６で説明する。
【００３８】
図５は、制御部による全体処理の概要を説明するためのフローチャート図である。図５において、制御部１２０は、シミュレーションを行うための前処理を行い（ステップＳ１１）、探索対象となるパラメータを設定する（ステップＳ１２）。前処理とは、プログラムＡ３１の実行を並列で行うための初期設定に係る処理を含む。探索対象となるパラメータは、ユーザによって設定される。又は、予め設定され記憶部１３０に格納されたパラメータセットを取得するようにしてもよい。
【００３９】
制御部１２０は、入力データを作成して記憶部１３０に格納する（ステップＳ１３）。入力データと異なる初期設定とによって、ｎ個の入力データファイル５１が記憶部１３０に格納される。ｎ個の入力データファイル５１は、対応するｎ個のジョブで使用される。また、ｎ個のジョブは、設定されたパラメータのうちのｎ個のパラメータに相当するようにしても良い。
【００４０】
制御部１２０は、各ジョブを１並列で投入（試行）する（ステップＳ１４）。ジョブの試行は、例えば、ジョブの制限時間が１時間であれば、１時間の試行を各ジョブの１並列で行う。そして、制御部１２０は、並列度調整部１２４に、並列度調整処理を行わせる（ステップＳ１５）。制御部１２０は、並列度調整部１２４によって調整された並列度でｎ個のジョブを投入する（ステップＳ１６）。
【００４１】
制御部１２０は、ジョブの結果に基づいて、継続して計算するのか否かを判定する（ステップＳ１７）。継続して計算すると判定した場合、制御部１２０は、ステップＳ１５へ戻り、上述同様に、並列度調整部１２４に並列度調整処理を行わせる。一方、計算を継続しない、即ち、ｎ個のジョブが終了したと判定した場合、制御部１２０は、探索を終了したか否かを判定する（ステップＳ１８）。
【００４２】
ステップＳ１８において、探索が終了していないと判定した場合、制御部１２０は、パラメータを変更して（ステップＳ１８−２）、ステップＳ１３へ戻り、上述した同様の処理を繰り返す。一方、探索が終了したと判定した場合、制御部１２０は、探索したパラメータの領域全体を解析して（ステップＳ１９）、このシミュレーションを終了する。ステップ１９では、制御部１２０は、シミュレーションしたプログラムに対応する解析プログラムを記憶部１３０から読み込んで実行する。
【００４３】
上述したステップＳ１３、Ｓ１４、及びＳ１５を含む処理Ｐ２０について、図６で詳述する。図６は、図５の処理Ｐ２０を説明するためのフローチャート図である。図６において、制御部１２０は、ｎ個の入力データを作成し（ステップＳ１３）、ｎ個のジョブを１並列で１時間実行する（ステップＳ１４）。
【００４４】
制御部１２０は、並列度調整部１２４にステップＳ１５の処理を行わせる。ステップＳ１５での並列度調整処理は、以下に説明されるステップＳ５０からＳ５７で説明される。
【００４５】
並列度調整部１２４は、ｎ個のジョブの計算結果を解析する（ステップＳ５０）。例えば、並列度調整部１２４は、アモルファス材料の結晶化のシミュレーションの場合では結晶化率を、第一原理計算による構造緩和の場合では原子に働く力の減少率を計算結果から取得する。制御部１２０は、また、ジョブの実行に要した時間を取得する。ジョブの開始時刻から終了時刻までの時間を計算すればよい。
【００４６】
並列度調整部１２４は、残り実行時間ｈ（ｉ）をiで指数付けたジョブごとに見積もって（ステップＳ５１）、並列度を調整して全ジョブを実行したときの最短実行時間ｈを見積もる（ステップＳ５２）。最短実行時間ｈは、残り実行時間ｈ（ｉ）の平均値（average（ｈ（ｉ）））とすればよい。
【００４７】
並列度調整部１２４は、残り実行時間ｈ（ｉ）が最短実行時間ｈより長い（ｈ（ｉ）＞ｈの）ジョブに関しては、最短実行時間ｈに対する残り実行時間ｈ（ｉ）の割合の小数点以下を切り上げた整数値を算出することによって、並列度ｐ（ｉ）（ｐ（ｉ）＞ｈ（ｉ）＞ｈ＞ｐ（ｉ）−１）を求める（ステップＳ５３）。それ以外（ｈ（ｉ）＝＜ｈ）のジョブは、１並列による実行とする。並列度ｐｉは、即ち、ノード数を示す。
【００４８】
次に、並列度調整部１２４は、平均回転数ｃを求める（ステップＳ５４）。並列度調整部１２４は、ジョブ毎に残り実行時間ｈ（ｉ）を並列度ｐ（ｉ）で割って（ｈ（ｉ）／ｐ（ｉ））、並列度ｐ（ｉ）でのジョブの残り実行時間を予測し、ジョブ全体の平均値（average（ｈ（ｉ）／ｐ（ｉ）））を算出する。並列度調整部１２４は、最短実行時間ｈの平均値（average（ｈ（ｉ）／ｐ（ｉ）））に対する割合の小数点以下を切り上げた整数値を算出することによって、平均回転数ｃ（ｃ＞ｈ／average（ｈ（ｉ）／ｐ（ｉ））＞ｃ−１）を算出する。即ち、並列度ｐ（ｉ）でジョブを投入した場合の、最短実行時間に達するまでの繰り返し回数の平均値を取得する。
【００４９】
そして、並列度調整部１２４は、投入ジョブ時間ｈａｖを求める（ステップＳ５５）。並列度調整部１２４は、ジョブ毎の残り実行時間ｈ（ｉ）を並列度ｐ（ｉ）で割って最短実行時間ｈに対する回転数を求めて、平均回転数ｃで割ることによって、投入ジョブ時間ｈａｖを求める。
【００５０】
並列度調整部１２４は、ジョブ毎に、並列度ｐ（ｉ）でノード２０を消費し、投入ジョブ時間ｈａｖで実行される並列度ジョブ時間ｐ（ｉ）ｈを求める（ステップＳ５６）。ジョブ毎の並列度ジョブ時間ｐ（ｉ）ｈは、並列度ｐ（ｉ）と投入ジョブ時間ｈａｖとを乗算することによって得られる。
【００５１】
並列度調整部１２４は、iで指数付けたジョブの残り実行時間ｈ（ｉ）が０でなく、プロセス（計算機ノード資源）が尽きたか否かを判断する（ステップＳ５７）。並列度調整部１２４は、ジョブ毎に、並列度ジョブ時間ｐ（ｉ）ｈを減算した後の残り実行時間ｈ（ｉ）が０以上であるか否かを判断する。また、計算機ノード資源とは、ノード２０の総数に相当する。並列度調整部１２４は、計算機ノード資源から各ジョブの並列度ｐ（ｉ）を減算した値が０であるか否かを判断する。
【００５２】
ステップＳ５７において、ジョブ毎の残り実行時間ｈ（ｉ）が０でなく、プロセス（計算機ノード資源）が尽きたと判断した場合、並列度調整部１２４は、ステップＳ５１へ戻り、上述同様の処理を繰り返す。一方、ジョブ毎の残り実行時間ｈ（ｉ）が０であると判断した場合、並列度調整部１２４は、ジョブが連続するように順番を並べ替えて（ステップＳ５８）、図５のステップＳ１６へと進む。
【００５３】
ノード数「１０」でジョブ数「１０」の場合の図４に示すジョブスケジュール４ａを一例として、並列度調整部１２４による処理例を、図７から図１２で詳述する。図７から図１２において、図６のステップＳ５１〜Ｓ５７の繰り返しを、１順目、２順目、・・・として説明する。
【００５４】
図７は、１順目を含む処理における計算例を説明するための図である。図７に示す例では、入力データと異なる初期設定とによる１０個のジョブを１並列で制限時間（例えば、１時間）で実行して試行することによって得られた１時間で行われたシミュレーションによる進行状況から、各ジョブの残り実行時間ｈ（ｉ）を見積もる（ステップＳ１４〜Ｓ５１）。
【００５５】
記憶部３０の作業領域に作成したテーブルＴ７１に、各ジョブ１〜２０に対応づけて、残り実行時間ｈ（ｉ）が記録される。この例では、ジョブ１及びジョブ２で残り実行時間「２０」時間、ジョブ３で残り実行時間「１０」時間、ジョブ３で残り実行時間「１０」時間、ジョブ４で残り実行時間「８」時間、ジョブ５で残り実行時間「７」時間、ジョブ６〜１０で残り実行時間「５」時間であると予測したことが記録される。
【００５６】
残り実行時間ｈ（ｉ）を平均（average（ｈ（ｉ）））することによって最短実行時間ｈを得る（ステップＳ５２）。最短実行時間ｈとして「９」時間を取得する。
【００５７】
最短実行時間ｈより長い残り実行時間ｈ（ｉ）（ｈ（ｉ）＞ｈ）を示すジョブ１、２及び３（ｉ=１，２，３）に対して並列度ｐ（ｉ）（ｐ（ｉ）＞ｈ（ｉ）／ｈ＞ｐ（ｉ）−１）を算出して設定し、それ以外のジョブ４〜１０に対しては１並列を設定する（ステップＳ５３）。計算により、ジョブ１及び２には並列度「３」が設定され、ジョブ３には並列度「２」が設定され、ジョブ４〜１０には並列度「１」が設定される。
【００５８】
その後、各ジョブ１〜１０の並列度ｐ（ｉ）でジョブを実行した場合の残り実行時間（ｈ（ｉ）／ｐ（ｉ））を計算して、記憶部３０の作業領域に作成したテーブルＴ７１に、各ジョブ１〜１０に対応付けられて記録される。ジョブ１〜１０毎に、計算した並列度ｐ（ｉ）での残り実行時間（ｈ（ｉ）／ｐ（ｉ））の平均値（average（ｈ（ｉ）／ｐ（ｉ）））で最短実行時間ｈを割って、小数点以下を切り上げた整数値を平均回転数ｃとして取得する。平均回転数ｃは、ｃ＞ｈ／average（ｈ（ｉ）／ｐ（ｉ））＞ｃ−１を満たす（ステップＳ５４）。平均回転数ｃは、各ジョブ１〜１０に対応付けられて、記憶部３０の作業領域に作成したテーブルＴ７１に記録される。
【００５９】
ジョブ１及び２では並列度「３」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「６．６７」となり、ジョブ３では並列度「２」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「５．００」となり、ジョブ４〜１０では並列度「１」であるので試行時の残り実行時間ｈ（ｉ）と同様となる。従って、平均回転数ｃは、「２」となる。
【００６０】
そして、各ジョブ１〜１０の投入ジョブ時間ｈａｖは、各ジョブ１〜１０の平均回転数ｃを平均（average（ｈ（ｉ）／ｐ（ｉ）／ｃ））することによって得られる（ステップＳ５５）。平均（average（ｈ（ｉ）／ｐ（ｉ）／ｃ））した値「２．９２」を四捨五入して、投入ジョブ時間ｈａｖ「３」時間を得る。
【００６１】
次に、投入ジョブ時間ｈａｖ「３」時間で順番に実行した場合の並列度状態を予測する（ステップＳ５６）。ジョブ１〜１０の順に、並列度ｐ（ｉ）を累計した消費ノード数累計をテーブルＴ７２に記録すると共に、並列度ジョブ時間ｐ（ｉ）ｈを算出して記録して、消費ノード数累計がノード数「１０」に達したら、ステップＳ５６での処理が終了する。
【００６２】
この１順目の例では、テーブルＴ７２において、ジョブ１及び２の並列度ジョブ時間ｐ（ｉ）ｈは「９」時間であり、ジョブ３の並列度ジョブ時間ｐ（ｉ）ｈは「６」時間であり、ジョブ４及び５の並列度ジョブ時間ｐ（ｉ）ｈは「３」時間である。
【００６３】
一方、ジョブ１を実行した場合の消費ノード数累計は「３」台であり、ジョブ１及び２を実行した場合の消費ノード数累計は「６」台であり、ジョブ１〜３を実行した場合の消費ノード数累計は「８」台であり、ジョブ１〜４を実行した場合の消費ノード数累計は「９」台である。そして、ジョブ１〜５を実行した場合の消費ノード数累計は「１０」台となり、総ノード数「１０」台に達するため、ジョブ６〜１０の並列度ジョブ時間は算出されない。従って、１順目の処理を終了する。
【００６４】
全てのノードが消費されるが、テーブルＴ７２の並列度ジョブ時間ｐ（ｉ）ｈがテーブルＴ７１の残り実行時間ｈ（ｉ）に達していない。全体の処理が完遂していないため、図８に例示する２順目の処理を開始する（ステップＳ５７のＹＥＳ）。
【００６５】
図８は、２順目における計算例を説明するための図である。図８に示す例では、２順目以降では、テーブルＴ７１及びＴ７２を参照して、テーブルＴ７１の残り実行時間ｈ（ｉ）を更新することによって、各ジョブの残り実行時間ｈ（ｉ）を見積もる（ステップＳ５１）。
【００６６】
図７に示すテーブルＴ７１の残り実行時間ｈ（ｉ）から、図７に示すテーブルＴ７２の並列度ジョブ時間ｐ（ｉ）ｈを減算した値を予測時間とし、テーブルＴ７１を更新する。この例では、ジョブ１〜５の残り実行時間ｈ（ｉ）が更新され、夫々、「１１」、「１１」、「４」、「５」、及び「４」となる。
【００６７】
残り実行時間ｈ（ｉ）を平均（average（ｈ（ｉ）））することによって最短実行時間ｈを得る（ステップＳ５２）。最短実行時間ｈとして「６」時間を取得する。
【００６８】
最短実行時間ｈより長い残り実行時間ｈ（ｉ）（ｈ（ｉ）＞ｈ）を示すジョブ１及び２に対して、並列度ｐ（ｉ）（ｐ（ｉ）＞ｈ（ｉ）／ｈ＞ｐ（ｉ）−１）を算出して設定し、それ以外のジョブ３〜１０に対しては１並列を設定する（ステップＳ５３）。計算により、ジョブ１及び２には並列度「２」が設定され、ジョブ３〜１０には並列度「１」が設定される。
【００６９】
その後、各ジョブ１〜１０の並列度ｐ（ｉ）でジョブを実行した場合の残り実行時間（ｈ（ｉ）／ｐ（ｉ））を計算して、記憶部３０のテーブルＴ７１に記録される。ジョブ１〜１０毎に、ｃ＞ｈ／average（ｈ（ｉ）／ｐ（ｉ））＞ｃ−１を満たす平均回転数ｃを取得する（ステップＳ５４）。各ジョブ１〜１０の平均回転数ｃが、記憶部３０のテーブルＴ７１に記録される。
【００７０】
ジョブ１及び２では並列度「２」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「５．５０」となり、ジョブ３〜１０では並列度「１」であるので、ステップＳ５１で求めた残り実行時間ｈ（ｉ）のままである。従って、平均回転数ｃは、「２」となる。
【００７１】
そして、各ジョブ１〜１０の平均回転数ｃを平均（average（ｈ（ｉ）／ｐ（ｉ）／ｃ））した値「２．４５」を四捨五入することによって、投入ジョブ時間ｈａｖは「２」時間であることを得る（ステップＳ５５）。
【００７２】
次に、投入ジョブ時間ｈａｖ「２」時間で、ジョブ１〜１０の順において１順目の終了した次のジョブ６から開始してジョブ１０からジョブ１へと戻るように巡回して、並列度ｐ（ｉ）を累計した消費ノード数累計をテーブルＴ７２に記録すると共に、並列度ジョブ時間ｐ（ｉ）ｈを算出して記録する（ステップＳ５６）。消費ノード数累計がノード数「１０」に達したら、ステップＳ５６での処理が終了する。
【００７３】
この２順目の例では、テーブルＴ７２において、ジョブ６〜１０の並列度ジョブ時間ｐ（ｉ）ｈは「２」時間であり、ジョブ１及び２の並列度ジョブ時間ｐ（ｉ）ｈは「４」時間であり、また、ジョブ３の並列度ジョブ時間ｐ（ｉ）ｈは「３」時間である。
【００７４】
一方、２順目の消費ノード数累計は、ジョブ６から開始される。ジョブ６、７、８、９、１０、１、２、そしてジョブ３の順に累計され、夫々、消費ノード数累計は「１」台、「２」台、「３」台、「４」台、「５」台、「７」台、「８」台、そして「１０」台となり、ジョブ３で総ノード数「１０」台に達するため、ジョブ４及び５の並列度ジョブ時間は算出されない。従って、２順目の処理を終了する。
【００７５】
全てのノードが消費されるが、テーブルＴ７２の並列度ジョブ時間ｐ（ｉ）ｈがテーブルＴ７１の残り実行時間ｈ（ｉ）に達していない。全体の処理が完遂していないため、図９に例示する３順目の処理を開始する（ステップＳ５７のＹＥＳ）。
【００７６】
図９は、３順目における計算例を説明するための図である。図９において、図８に示すテーブルＴ７１の残り実行時間ｈ（ｉ）から、図８に示すテーブルＴ７２の並列度ジョブ時間ｐ（ｉ）ｈを減算した値を予測時間とし、テーブルＴ７１を更新する（ステップＳ５１）。この例では、ジョブ６〜１０及び１〜３の残り実行時間ｈ（ｉ）が更新される。ジョブ６〜１０は、夫々「３」となる。ジョブ１〜３は、夫々、「７」、「７」、及び「２」となる。
【００７７】
残り実行時間ｈ（ｉ）を平均（average（ｈ（ｉ）））することによって最短実行時間ｈ「４」時間を得る（ステップＳ５２）。
【００７８】
最短実行時間ｈより長い残り実行時間ｈ（ｉ）（ｈ（ｉ）＞ｈ）を示すジョブ１、２及び４に対して並列度「２」を設定し、それ以外のジョブ３及び５〜１０に対しては並列度「１」を設定する（ステップＳ５３）。
【００７９】
その後、並列度ｐ（ｉ）での残り実行時間（ｈ（ｉ）／ｐ（ｉ））と、ｃ＞ｈ／average（ｈ（ｉ）／ｐ（ｉ））＞ｃ−１を満たす平均回転数ｃとが、記憶部３０のテーブルＴ７１に記録される（ステップＳ５４）。
【００８０】
ジョブ１及び２では並列度「２」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「３．５０」となり、ジョブ３では並列度「１」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「２．００」となり、ジョブ４では並列度「２」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「２．５０」となり、そしてジョブ５〜１０では並列度「１」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「３．００」となる。従って、平均回転数ｃは、「２」である。
【００８１】
そして、各ジョブ１〜１０の平均回転数ｃを平均（average（ｈ（ｉ）／ｐ（ｉ）／ｃ））した値「１．３１」を四捨五入して、投入ジョブ時間ｈａｖは「２」時間であることを得る（ステップＳ５５）。
【００８２】
次に、投入ジョブ時間ｈａｖ「２」時間で、ジョブ１〜１０の順において２順目の終了した次のジョブ４から開始してジョブ１０からジョブ１へと戻るように巡回して、並列度ｐ（ｉ）を累計した消費ノード数累計をテーブルＴ７２に記録すると共に、並列度ジョブ時間ｐ（ｉ）ｈを算出して記録する（ステップＳ５６）。この３順目の例では、消費ノード数累計がノード数「１０」に達したジョブ１で、ステップＳ５６での処理が終了する。
【００８３】
全てのノードが消費されるが、テーブルＴ７２の並列度ジョブ時間ｐ（ｉ）ｈがテーブルＴ７１の残り実行時間ｈ（ｉ）に達していない。全体の処理が完遂していないため、図１０に例示する４順目の処理を開始する（ステップＳ５７のＹＥＳ）。
【００８４】
図１０は、４順目における計算例を説明するための図である。図１０において、図９に示すテーブルＴ７１の残り実行時間ｈ（ｉ）から、図９に示すテーブルＴ７２の並列度ジョブ時間ｐ（ｉ）ｈを減算した値を予測時間とし、テーブルＴ７１を更新する（ステップＳ５１）。この例では、ジョブ４〜１０及びジョブ１の残り実行時間ｈ（ｉ）が更新される。ジョブ４〜１０そしてジョブ１は、夫々、「１」、「２」、「１」、「１」、「１」、「１」、「１」、そして「３」となる。
【００８５】
残り実行時間ｈ（ｉ）を平均（average（ｈｉ））することによって最短実行時間ｈ「２」時間を得る（ステップＳ５２）。
【００８６】
最短実行時間ｈより長い残り実行時間ｈ（ｉ）（ｈ（ｉ）＞ｈ）を示すジョブ１及び２に対して並列度「２」及び「４」を夫々設定し、それ以外のジョブ３〜１０に対しては並列度「１」を設定する（ステップＳ５３）。
【００８７】
その後、並列度ｐ（ｉ）での残り実行時間（ｈ（ｉ）／ｐ（ｉ））と、ｃ＞ｈ／average（ｈ（ｉ）／ｐ（ｉ））＞ｃ−１を満たす平均回転数ｃとが、記憶部３０のテーブルＴ７１に記録される（ステップＳ５４）。
【００８８】
ジョブ１では並列度「２」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「１．５０」となり、ジョブ２では並列度「４」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「１．７５」となり、ジョブ３では並列度「１」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「２．００」となり、ジョブ４では並列度「１」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「１．００」となり、ジョブ５では並列度「１」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「２．００」となり、ジョブ６〜１０では並列度「１」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「１．００」となる。従って、平均回転数ｃは、「２」である。
【００８９】
そして、各ジョブ１〜１０の平均回転数ｃを平均（average（ｈ（ｉ）／ｐ（ｉ）／ｃ））した値「１．５１」を四捨五入して、投入ジョブ時間ｈａｖは「２」時間であることを得る（ステップＳ５５）。
【００９０】
次に、投入ジョブ時間ｈａｖ「１」時間で、ジョブ１〜１０の順において３順目の終了した次のジョブ９から開始してジョブ１０からジョブ１へと戻るように巡回して、並列度ｐ（ｉ）を累計した消費ノード数累計をテーブルＴ７２に記録すると共に、並列度ジョブ時間ｐ（ｉ）ｈを算出して記録する（ステップＳ５６）。この４順目の例では、消費ノード数累計がノード数「１０」に達したジョブ５で、ステップＳ５６での処理が終了する。
【００９１】
全てのノードが消費され、かつ、テーブルＴ７２の並列度ジョブ時間ｐ（ｉ）ｈがテーブルＴ７１の残り実行時間ｈ（ｉ）に達したため、全体の処理が完遂したと判断できる（ステップＳ５７のＮＯ）。従って、ジョブが連続するように順番を並べ替える処理が行われる（ステップＳ５８）。
【００９２】
図１１は、５順目における計算例を説明するための図である。図１１において、図１０に示すテーブルＴ７１の残り実行時間ｈ（ｉ）から、図１０に示すテーブルＴ７２の並列度ジョブ時間ｐ（ｉ）ｈを減算した値を予測時間とし、テーブルＴ７１を更新する（ステップＳ５１）。この例では、ジョブ２〜８の残り実行時間ｈ（ｉ）が更新される。ジョブ２〜８は、夫々、「３」、「１」、「０」、「１」、「０」、「０」、及び「０」となる。
【００９３】
残り実行時間ｈ（ｉ）を平均（average（ｈ（ｉ）））することによって最短実行時間ｈ「２」時間を得る（ステップＳ５２）。
【００９４】
最短実行時間ｈより長い残り実行時間ｈ（ｉ）（ｈ（ｉ）＞ｈ）を示すジョブ１及び２に対して並列度「３」を夫々設定し、それ以外の最短実行時間ｈ以下であるが残り実行時間ｈ（ｉ）が「０」より大きいジョブ３、５、９、及び１０に対しては並列度「１」を設定する（ステップＳ５３）。残り実行時間ｈ（ｉ）が「０」のジョブ４及び６〜８に対しては並列度「０」を設定する。以下、残り実行時間ｈ（ｉ）が「０」より大きいジョブ１、２、３、５、９、及び１０に対して以下の処理が行われる。
【００９５】
並列度ｐ（ｉ）での残り実行時間（ｈ（ｉ）／ｐ（ｉ））と、ｃ＞ｈ／average（ｈ（ｉ）／ｐ（ｉ））＞ｃ−１を満たす平均回転数ｃとが、記憶部３０のテーブルＴ７１に記録される（ステップＳ５４）。
【００９６】
ジョブ１及び２では並列度「３」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「１．００」となり、ジョブ３、５、９、及び１０では並列度「１」による残り実行時間（ｈ（ｉ）／ｐ（ｉ））が「１．００」となる。従って、平均回転数ｃは、「１」である。
【００９７】
そして、各ジョブ１〜１０の平均回転数ｃを平均（average（ｈ（ｉ）／ｐ（ｉ）／ｃ））した値「１」により、投入ジョブ時間ｈａｖは「１」時間であることを得る（ステップＳ５５）。
【００９８】
全てのノードが消費され、かつ、テーブルＴ７２の並列度ジョブ時間ｐ（ｉ）ｈがテーブルＴ７１の残り実行時間ｈ（ｉ）に達したため、全体の処理が完遂したと判断できる（ステップＳ５７のＮＯ）。従って、ジョブが連続するように順番を並べ替える処理が行われる（ステップＳ５８）。
【００９９】
図１２は、ジョブ順の並べ替えた結果例を示す図である。図１２において、図１１に例示される全体の処理が完遂したときに予測される並列度状態において、ジョブが連続するように並べ替えられることによって、ジョブスケジュール４ｂ（図４）を得る。
【０１００】
図１２に例示されるように、一部のジョブの並列度を変更して実行することに影響され、他のパラメータに対する継続ジョブの実行が後回しになることもある。しかし、パラメータ空間探索のシミュレーション時間は短縮される。
【０１０１】
更に、パラメータ空間の探索領域が、探索につれ広がったり、狭まったりする場合（つまり、一部のパラメータ領域の計算結果に依存して残りの探索空間が決まる場合）には、並列度調整部１２４による並列度調整処理（ステップＳ１５）は、探索計算の完了時間を短縮するのに非常に有効である。並列計算機側の物理ノード空間への論理ノード空間の割り付けを最適化する機能を組み合わせれば、更に、時間短縮効果は向上する。
【０１０２】
上述した並列度調整処理（ステップＳ１５）をジョブ投入の一定経過時間（例えば、ジョブの制限時間）毎に行って、予測される並列度状態を更新し、また、並べ替える処理が行われることによって、動的に並列度が調整され、調整された並列度で継続して計算が行われる。
【０１０３】
更に実行効率を向上させるために、ジョブ実行中に、他のジョブの進行程度と照らし合わせながら、並列度を動的に変更してもよい。
【０１０４】
以下に、本実施例が適用される、分子動力学法シミュレーションによる高誘電率酸化材料の組成と結晶化について説明する。図１３は、結晶化過程の一例を示す図である。図１３中では、ハフニウムＨｆ及びシリコンＳｉを示し、酸素Ｏ及び窒素Ｎは非表示である。図１３において、高誘電率酸化材料に関するＨｆ１−ｘＳｉｘＯ２−ｙＮ２ｙ／３の結晶化過程の一例として、Ｈｆ０．９Ｓｉ０．１Ｏ１．９Ｎ０．０６７／ｍｏｎｏｃｌｉｎｉｃ−ＨｆＯ２、かつ１２００Ｋのシミュレーションによる過程が示されている。
【０１０５】
左（初期）、中央（７９７ｐｓ）、そして右（９９７ｐｓ）へと結晶化が進む状態を例示している。９９７ｐｓでは、結晶化領域からシリコンＳｉが吐き出された状態がシミュレーションされている。
【０１０６】
また、図１４は、結晶領域の体積の見積もり方法の一例を示す図である。図１４では、結晶領域の体積を、ハフニウムＨｆの原子数で見積もる例を示している。左（０ｐｓ）、中央（４００ｐｓ）、そして右（６５０ｐｓ）へのアモルファス状態から結晶化状態への各過程において、結晶基板表面からの深さをΔＲのＨｆ原子数をシミュレーションの結果として得て、結晶領域の体積を見積もる。
【０１０７】
このようなシミュレーションにおいて、結晶化のし易さを検証する際には、組成（ｘ及びｙの比率）、温度Ｋ等のパラメータを変更して、パラメータの組み合せ毎に結晶化のし易さを検証することによって、例えば、窒化によるＨｆＯ２、Ｈｆシリケートによる結晶化抑制効果を検証することができる。
【０１０８】
図１５は、組成と結晶化し易さとの関係の検証方法の一例を示す図である。図１５（Ａ）では、組成と温度とを変えて、結晶化率の時間変化を見積もった例をグラフで示している。図１５（Ｂ）では、図１５（Ａ）で得た結晶化率の時間変化を示す直線の傾きから組成毎にアレニウスプロットを作り、活性化エネルギーを得るためのグラフが示されている。そして、組成毎のグラフから、組成と結晶化し易さとの関係を定量化することが行われる。図１５（Ｃ）では、組成と結晶化し易さとの関係が定量化された例を示す。図１５（Ｃ）に示す定量化された値は、単位ｅＶの活性化エネルギーで示される。
【０１０９】
上述したような計算処理を、本実施例に係る並列度調整部１２４を含む並列計算システム１０００（マルチジョブシステム）によって行うことで、処理効率を改善することができる。
【０１１０】
並列度調整部１２４を含む並列計算システム１０００では、パラメータ空間を探索するマルチジョブによるシミュレーションにおいて、ジョブの一定経過時間（例えば、予め決められた制約時間）毎に計算経過を解析し、終了までに要する時間を見積もり、その程度に応じて並列度を自動的に変更して継続計算が行われる。従って、パラメータ空間を探索するようなシミュレーションにおける計算処理のスループットを上げることができる。
【０１１１】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【０１１２】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
複数のノードを用いた並列計算によって実行されるプログラムを記憶した記憶部と、
前記記憶部から読み込んだ前記プログラムを複数のジョブで実行し、一定経過時間毎に各ジョブの計算結果を解析して、解析結果から得られる各ジョブの残り実行時間に基づいて全ジョブの終了が揃うように各ジョブの並列度を調整することによって、前記並列計算の全体のジョブスケジュールを行う並列度調整部を有し、該並列度調整部によって得られた該ジョブスケジュールに基づいて該並列度を変更する制御部と
を有することを特徴とする並列計算制御装置。
（付記２）
前記並列度調整部は、ジョブ毎にノード数と継続して行われる時間とで表されるタイリングで前記並列度を調整して前記ジョブスケジュールを行うことを特徴とする付記１記載の並列計算制御装置。
（付記３）
前記並列度調整部は、
前記記憶部から読み込んだ前記プログラムを複数のジョブで実行し、一定経過時間毎に各ジョブの計算結果を解析して、ジョブ毎の終了までに要する第１残り実行時間を見積もって、各ジョブに該第１残り実行時間を対応付けた第１テーブルを該記憶部に記憶する第１残り実行時間見積もり部と、
ジョブ毎に、前記記憶部の前記第１テーブルを参照して、前記第１残り実行時間の、２以上のノードによる並列度を調整した場合の最短実行時間を見積もる最短実行時間見積もり部と、
ジョブ毎に、前記第１残り実行時間の前記最短実行時間に対する割合からノード数を示す並列度を算出して、前記記憶部の前記第１テーブル内に、各ジョブに対応付けて該並列度を記憶する並列度算出部と、
ジョブ毎に前記並列度に基づいてジョブの第２残り実行時間を算出して全ジョブで平均し、前記最短実行時間を該平均値で除算することにより、前記最短実行時間に達するまで繰り返されるジョブの平均回転数を取得する平均回転数取得部と、
各ジョブの前記第２残り実行時間を平均回転数で除算した値を全ジョブで平均して投入ジョブ時間を算出する投入ジョブ実行時間算出部と、
前記複数のノードへのジョブの投入順に従って前記並列度を累積すると共に、該並列度に投入ジョブ時間を乗算することによって得られる並列度ジョブ時間を累積して、各ジョブに夫々の累積した値を対応付けた第２テーブルを前記記憶部に記憶する累積部とを有することを特徴とする付記２記載の並列計算制御装置。
（付記４）
前記累積部によって累積された前記並列度ジョブ時間の累積値が前記残り実行時間未満であって、前記並列度の累積値が全ノード数に達した場合、前記第１残り実行時間見積もり部と、前記最短実行時間見積もり部と、前記並列度算出部と、前記平均回転数取得部と、前記投入ジョブ実行時間算出部と、前記累積部とを繰り返すことを特徴とする付記３記載の並列計算制御装置。
（付記５）
前記並列計算は、パラメータ空間におけるパラメータの最適値を探索するマルチジョブシステムで実行されることを特徴とする付記１乃至４のいずれか一項記載の並列計算制御装置。
（付記６）
コンピュータによって実行される並列計算制御方法であって、
記憶部に記憶された複数のノードを用いた並列計算によって実行されるプログラムを読み込んで複数のジョブで実行し、
一定経過時間毎に各ジョブの計算結果を解析し、
前記解析の結果から得られる各ジョブの残り実行時間に基づいて全ジョブの終了が揃うように各ジョブの並列度を調整することによって、前記並列計算の全体のジョブスケジュールを行い、
前記ジョブスケジュールに基づいて前記並列度を変更する
ことを特徴とする並列計算制御方法。
（付記７）
記憶部に記憶された複数のノードを用いた並列計算によって実行されるプログラムを読み込んで複数のジョブで実行し、
一定経過時間毎に各ジョブの計算結果を解析し、
前記解析の結果から得られる各ジョブの残り実行時間に基づいて全ジョブの終了が揃うように各ジョブの並列度を調整することによって、前記並列計算の全体のジョブスケジュールを行い、
前記ジョブスケジュールに基づいて前記並列度を変更する、
処理をコンピュータに実行させるプログラムを記憶したコンピュータ読取可能な記憶媒体。
（付記８）
記憶部に記憶された複数のノードを用いた並列計算によって実行されるプログラムを読み込んで複数のジョブで実行し、
一定経過時間毎に各ジョブの計算結果を解析し、
前記解析の結果から得られる各ジョブの残り実行時間に基づいて全ジョブの終了が揃うように各ジョブの並列度を調整することによって、前記並列計算の全体のジョブスケジュールを行い、
前記ジョブスケジュールに基づいて前記並列度を変更する、
処理をコンピュータに実行させるプログラム。
【符号の説明】
【０１１３】
５            プロセッサ
６            ネットワーク
１１          ＣＰＵ
１２          主記憶装置
１３          補助記憶装置
１４          表示装置
１５          入力装置
１６          通信Ｉ／Ｆ
１８          ドライバ
１９          記憶媒体
２０          ノード
２２          記憶装置
３１          プログラムＡ
３２          プログラムＢ
４１          解析プログラムＡ'
４２          解析プログラムＢ'
５１          入力データファイル
５３          出力データファイル
１２０        制御部
１２４        並列度調整部
１３０        記憶部
１９０        キューイングシステム
２００        並列計算部
【図１】
2013140490.tif 000003
【図２】
2013140490.tif 000004
【図３】
2013140490.tif 000005
【図４】
2013140490.tif 000006
【図５】
2013140490.tif 000007
【図６】
2013140490.tif 000008
【図７】
2013140490.tif 000009
【図８】
2013140490.tif 000010
【図９】
2013140490.tif 000011
【図１０】
2013140490.tif 000012
【図１１】
2013140490.tif 000013
【図１２】
2013140490.tif 000014
【図１４】
2013140490.tif 000015
【図１５】
2013140490.tif 000016
【図１３】
2013140490.tif 000017