(57)【要約】【課題】  本発明の課題は、多次元配列の分割割合を変更しつつシミュレーションプログラムを試行することによって、最適な分割割合を決定して本実行を行うことを目的とする。【解決手段】  上記課題は、並列処理を行うノード空間の複数の分割軸に対する分割割合を変更してシミュレーションプログラムを試行し、該分割割合毎に経過時間を取得して記憶部に保存する試行手段と、前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定する決定手段と、前記ノード空間の分割割合を前記決定手段によって決定された前記最適な分割割合に設定して、前記シミュレーションプログラムを本実行する本実行手段とを有することを特徴とする並列処理最適化装置により達成される。【選択図】  図４
2012221254.tif 000002
【特許請求の範囲】
【請求項１】
並列処理を行うノード空間の複数の分割軸に対する分割割合を変更してシミュレーションプログラムを試行し、該分割割合毎に経過時間を取得して記憶部に保存する試行手段と、
前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定する決定手段と、
前記ノード空間の分割割合を前記決定手段によって決定された前記最適な分割割合に設定して、前記シミュレーションプログラムを本実行する本実行手段とを有することを特徴とする並列処理最適化装置。
【請求項２】
前記試行手段は、前記シミュレーションプログラムの初期設定時に前記分割割合に従って該シミュレーションプログラムに係る配列を分割することを特徴とする請求項１記載の並列処理最適化装置。
【請求項３】
前記試行手段は、異なる分割割合を指定した実行シェルプログラムを実行することによって、該分割割合を変更することを特徴とする請求項１又は２記載の並列処理最適化装置。
【請求項４】
前記試行手段は、前記シミュレーションプログラムの繰り返しの処理区間毎に前記分割割合を動的に変更しつつ継続して前記シミュレーションプログラムを試行し、
前記本実行手段は、前記試行手段から継続して前記シミュレーションプログラムを本実行することを特徴とする請求項１記載の並列処理最適化装置。
【請求項５】
並列処理を行うノード空間でシミュレーションプログラムであって、
前記シミュレーションの実行中、繰り返しの処理区間毎に、前記ノード空間の複数の分割軸に対する分割割合を動的に変更しつつ該実行を継続して試行し、
前記分割割合毎に経過時間を取得して記憶部に保存し、
前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定し、
前記ノード空間の分割割合を前記決定された最適な分割割合に設定して、継続して本実行されるようにしたことを特徴とするプロセッサによって実行されるシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多次元配列を有するシミュレーションプログラムの複数の分割軸に対する最適な分割割合を自動的に決定する並列処理最適化装置及びシミュレーションプログラムに関する。
【背景技術】
【０００２】
近年、情報処理システムにおいて、ネットワークを介して接続された複数のノード計算機（プロセッサ）を用いて並列処理によりシミュレーションすることが行われている。
【０００３】
逐次計算機向けプログラムを分散型記憶並列計算機向けの並列プログラムに変換する場合に、データ分割パタンライブラリを用いて、各データ分割パタンに対応して予め定めた方法でデータとプログラムとを各プロセッサに割り付けて実行し、処理時間に関する量を計測してデータ分割パタンを比較評価することによって、最適データ分割を選択することが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−１３９２１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、大規模（分散記憶型）並列計算機は多数のノード計算機をネットワークを介して接続された構造をもっている。並列度が高くなるに従い、小規模並列計算機で十分であった分割方法では、多数のノードに計算負荷を分散しきれなくなり、並列計算効率を上げることが難しくなってきている。
【０００６】
並列計算効率を改善する、また、通信時間の抑制効果を求めて分割軸を増やすことが考えられる。例えば、これまで１軸（１次元）分割していたものを２軸（２次元）分割するということが必要になる。ノード数がｎの計算機に対して、１次元目の分割をn1、２次元目の分割をn2とするとn=n1×n2の関係がある。処理ごとに最適なn1とn2の比は異なる。該当する配列を扱う複数の処理がある場合、最適なn1とn2の組み合わせは、局所的には決定できず、通して実行して探る必要がある。そしてそれは、計算対象の系、計算機の規模、割り当てられるネットワーク構造上のノード配置などに依存しており、容易に決定することが難しい。さらに分割軸が３次元、４次元と増えていくと、その分割割合を決定することはますます困難になる。
【０００７】
例えば、10000ノードを使う場合を考える。ひとつの繰り返しの計算ステップ中の処理区間１の中ではn1=10, n2=1000と分割するのが最も計算効率がよく、処理区間２の中ではn1=100, n2=100と分割するのが最も効率がよいことが分かっていたとしても、ステップを通してどのような組み合わせが最もよいかは、試行してみないと決定できない。しかも、大規模並列計算機で試行するたびに割り当てられるネットワーク構造上のノード配置が異なる場合には、決定した分割割合が本当に最適なものになっていない可能性がある。
【０００８】
このような場合、一般には、複数の分割割合に対して、小規模の計算を行い、経過時間を測定し、最適な分割割合を予測する。
【０００９】
しかし、こうして決定した最適な分割割合が、大規模並列化した場合の最適な分割割合になっていない可能性がある。また、計算の限られた部分（１ステップ以上）を、同じ規模の並列計算機で予備的に行い、最適な分割割合を予測することも行われる。しかし、大規模並列計算のジョブを投入してから実行されるまでの待ち時間が大きく、生産性を落とす。また、予備計算を行うときに割り当てられたノード空間（プロセッサ空間）が、本計算時のものと異なる場合には、予測の信頼性が落ちる。あるいは、計算プログラムの核心部（処理の重い部分）の演算を抜き出してスケルトンプログラムを作り、性能予測シミュレーションを行うことも考えられる。しかし、これはスケルトンプログラムを作成し、性能予測プログラムを準備しなければならない、と言った問題がある。
【課題を解決するための手段】
【００１０】
開示の技術は、並列処理を行うノード空間の複数の分割軸に対する分割割合を変更してシミュレーションプログラムを試行し、該分割割合毎に経過時間を取得して記憶部に保存する試行手段と、前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定する決定手段と、前記ノード空間の分割割合を前記決定手段によって決定された前記最適な分割割合に設定して、前記シミュレーションプログラムを本実行する本実行手段とを有することを特徴とする並列処理最適化装置のように構成される。
【発明の効果】
【００１１】
開示の技術では、多次元配列の分割割合を変えながらシミュレーションプログラムを試行し、最適な分割割合を自動的に決定すると共に、試行時と同一のノード空間において最適な分割割合で該シミュレーションプログラムを本実行することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施例に係る並列計算システムの構成例を示す図である。
【図２】フロントエンド計算装置のハードウェア構成を示す図である。
【図３】並列計算制御部による制御処理を説明するためのフローチャート図である。
【図４】第１並列計算処理の一例を説明するためのフローチャート図である。
【図５】ノードで行われる処理を説明するための図である。
【図６】第１並列計算処理における処理フローを説明するための図（その１）である。
【図７】第１並列計算処理における処理フローを説明するための図（その２）である。
【図８】第１並列計算処理における処理フローを説明するための図（その３）である。
【図９】第１並列計算処理における処理フローを説明するための図（その４）である。
【図１０】第２並列計算処理の一例を説明するためのフローチャート図である。
【図１１】第２並列計算処理における処理フローを説明するための図（その１）である。
【図１２】第２並列計算処理における処理フローを説明するための図（その２）である。
【図１３】第２並列計算処理における処理フローを説明するための図（その３）である。
【図１４】第２並列計算処理における処理フローを説明するための図（その４）である。
【図１５】ノードに割り当てられた配列例を示す図である。
【図１６】ノードに割り当てられた配列の大きさを矩形で例示した図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態を図面に基づいて説明する。図１は、本実施例に係る並列計算システムの構成例を示す図である。図１に示す並列計算システム１０００は、フロントエンド計算装置１００とプロセッサ５を有する複数のノード２０とがネットワーク６を介して接続される。
【００１４】
フロントエンド計算装置１００は、コンピュータ（図２）であり、分割割合を変えながら確保したノード２０に並列計算を行わせ、最適な分割割合を決定する並列計算制御部１２０を有する。フロントエンド計算装置１００は、並列処理最適化装置に相当する。
【００１５】
フロントエンド計算装置１００に接続される外部記憶装置１３０には、プログラムＡ３０と、実行シェルプログラム４０と、分割割合評価プログラム５０とが記憶されている。また、分割割合に応じて処理区間の並列計算にかかった時間を示す経過時間ファイル４２が外部記憶装置１３０に記憶される。更に、分割割合評価プログラム５０による評価結果を示す評価結果ファイル５２が外部記憶装置１３０に記憶される。
【００１６】
プログラムＡ３０は、複数の並列分割軸を持つ配列（多次元配列）及び演算処理を持つプログラムであり、所望の結果を得られるか否かを検証するために１００回以上の繰り返し計算を行うため１０、０００台以上のノード２０を用いた大規模並列処理によって実行されるシミュレーションプログラムである。
【００１７】
処理区間とは、最適な分割割合を決定するためのプログラムＡ３０内の繰り返し（ループ）回数である。また、１回の繰り返しが、１ステップとしてカウントされる。
【００１８】
並列計算制御部１２０は、分割割合に基づく台数のノード２０を確保し、並列計算処理を割り当てる。並列計算制御部１２０は、実行シェルプログラム４０をロードして、異なる分割割合で処理区間の並列計算処理を割り付けたノード２０に行わせ、分割割合に対応する経過時間ファイル４２をノードから受信して外部記憶装置１３０に格納する。
【００１９】
並列計算制御部１２０は、分割割合に対応する経過時間ファイル４２を参照して、最適な分割割合を決定するための評価を行って、最適な分割割合を評価結果ファイル５２に記録する。そして、並列計算制御部１２０は、評価結果ファイル５２に記録された最適な分割割合に基づいたプログラムＡ３０の並列計算処理の本実施を最適な分割割合に基づいて割り付けたノード２０に実行させる。
【００２０】
各ノード２０は、プロセッサ５及びメモリ（主記憶装置）を有するコンピュータ装置であり、フロントエンド計算装置１００の並列計算制御部１２０による制御配下の元で、最適分割割合決定処理を含めて並列計算処理を実行する装置である。各ノード２０には、各ノード２０がアクセス可能な外部記憶装置２２が接続されており、外部記憶装置２２には処理に必要なデータが格納される。
【００２１】
複数のノード２０（１０、０００以上）によって並列計算部２００（クラスター計算機）が構成され、その内の一つのノード２０がマスターノード２０ｍとなり、他がスレーブノード２０として動作する。マスターノード２０ｍは、フロントエンド計算装置１００から転送されるプログラムＡ３０と、最適分割割合決定処理によって得られた分割割合に応じた経過時間を記録した経過時間ファイル４２とを自身の外部記憶装置２２に格納し、フロントエンド計算装置１００によって分割割合に従って割り当てられたスレーブにプログラムＡ３０を送信する。マスターノード２０ｍは、分割割合に応じた経過時間を監視して、処理区間（ステップ数）の実行に要した時間を経過時間ファイル４２に記録し、経過時間ファイル４２をフロントエンド計算装置１００へ転送する。
【００２２】
図２は、フロントエンド計算装置のハードウェア構成を示す図である。図２に示すフロントエンド計算装置１００は、コンピュータによって制御される装置であって、ＣＰＵ（Central Processing Unit）１１と、メモリユニット１２と、表示ユニット１３と、入力ユニット１５と、通信ユニット１６と、記憶装置１７と、ドライバ１８とを有し、システムバスＢに接続される。
【００２３】
ＣＰＵ１１は、メモリユニット１２に格納されたプログラムに従ってフロントエンド計算装置１００を制御する。メモリユニット１２には、ＲＡＭ（Random Access Memory）及びＲＯＭ（Read-Only Memory）等が用いられ、ＣＰＵ１１にて実行されるプログラム、ＣＰＵ１１での処理に必要なデータ、ＣＰＵ１１での処理にて得られたデータ等を格納する。また、メモリユニット１２の一部の領域が、ＣＰＵ１１での処理に利用されるワークエリアとして割り付けられている。
【００２４】
表示ユニット１３は、ＣＰＵ１１の制御のもとに必要な各種情報を表示する。入力ユニット１５は、マウス、キーボード等を有し、ユーザがフロントエンド計算装置１００が処理を行なうための必要な各種情報を入力するために用いられる。
【００２５】
通信ユニット１６は、例えばインターネット、ＬＡＮ（Local Area Network）等に接続し、並列計算部２００内のノード２０との間の通信制御をするための装置である。通信ユニット１６による通信は無線又は有線に限定されるものではない。記憶装置１７には、例えば、ハードディスクユニットが用いられ、各種処理を実行するプログラム等のデータを格納する。
【００２６】
フロントエンド計算装置１００の並列計算制御部１２０によって行われる制御処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）等の記憶媒体１９によってフロントエンド計算装置１００に提供される。即ち、プログラムが保存された記憶媒体１９がドライバ１８にセットされると、ドライバ１８が記憶媒体１９からプログラムを読み出し、その読み出されたプログラムがシステムバスＢを介して記憶装置１７にインストールされる。そして、プログラムが起動されると、記憶装置１７にインストールされたプログラムに従ってＣＰＵ１１がその処理を開始する。尚、プログラムを格納する媒体としてＣＤ−ＲＯＭに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。コンピュータ読取可能な記憶媒体として、ＣＤ−ＲＯＭの他に、ＤＶＤディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。また、外部ネットワークを介してプログラムを記憶装置１７に転送してもよい。あるいは、入力ユニット１５を使ってプログラムを作成し記憶装置１７に保存してもよい。
【００２７】
また、メモリユニット１２、記憶装置１７、及び外部記憶装置１３０で提供される一部又は全体の記憶領域が、本実施例に係るデータを格納する記憶部に相当する。
【００２８】
図３は、並列計算制御部による制御処理を説明するためのフローチャート図である。図３において、フロントエンド計算装置１００の並列計算制御部１２０は、分割方法が決まっているか否かを判断する（ステップＳ１１）。分割方法が決まっている場合、並列計算制御部１２０は、並列計算ジョブを投入し、並列計算ジョブの終了によりこの制御処理を終了する（ステップＳ１２−２）。
【００２９】
一方、分割方法が決まっていない場合、並列計算制御部１２０は、分割軸が２以上あり、かつ、最適な分割割合が決定済みであるか否かを判断する（ステップＳ１２）。この判断条件が成立する場合、並列計算制御部１２０は、並列計算ジョブを投入し、並列計算ジョブの終了によりこの制御処理を終了する（ステップＳ１２−２）。
【００３０】
一方、ステップＳ１２における判断条件が成立しない場合、並列計算制御部１２０は、更に、短時間で並列計算ジョブが終わるか、又はステップ数（繰り返し数）が小さいかを判断する（ステップＳ１３）。この判断条件が成立する場合、並列計算制御部１２０は、経験値（分割割合）を用いて、並列計算ジョブを投入し、並列計算ジョブの終了によりこの制御処理を終了する（ステップＳ１３−２）。経験値は、ユーザによって設定された分割割合であり、デフォルト値として記憶装置１７又は外部記憶装置１３０に格納される。
【００３１】
ステップＳ１３における判断条件が成立しない場合、並列計算制御部１２０は、ほぼ同じ内容の処理を１００ステップ以上繰り返すか否かを判断する（ステップＳ１４）。このステップＳ１４での判断条件が成立する場合、並列計算制御部１２０は、更に、ノードの割り付け方及びノード数に依存せずに、最適な分割割合を精度良く予測できるか否かを判断する（ステップＳ１５）。このステップＳ１５での判断条件が成立する場合、並列計算制御部１２０は、複数の予備（小規模）計算を行い最適な分割割合を決定し（ステップＳ１５−２）、並列計算ジョブを実行する（ステップＳ１５−４）。
【００３２】
一方、ステップＳ１５での判断条件が成立しない場合、並列計算制御部１２０は、プログラムＡ３０内に分割割合を動的に変更する機構を実現することができるか否かを判断する（ステップＳ１６）。ステップＳ１６での判断条件が成立しない場合、並列計算制御部１２０は、ジョブの投入により後述される第１並列計算処理を実行し（ステップＳ１７）、第１並列計算処理の終了によって、この制御処理を終了する。第１並列計算処理では、最適分割割合決定処理が行われると共に、最適な分割割合を決定後にはプログラムＡ３０の本実行が行われる。
【００３３】
一方、ステップＳ１６での判断条件が成立する場合、並列計算制御部１２０は、ジョブの投入により後述される第２並列計算処理を実行し（ステップＳ１８）、第２並列計算処理の終了によって、この制御処理を終了する。第２並列計算処理では、ノード２０にてプログラムＡ３０に組み込まれた最適分割割合決定処理によって分割割合が動的に変更され、最適な分割割合を決定後にはプログラムＡ３０の本実行が行われる。
【００３４】
先ず、並列計算制御部１２０によって行われる第１並列計算処理について図４から図９で説明する。図４は、第１並列計算処理の一例を説明するためのフローチャート図である。図４において、フロントエンド計算機１００の並列計算制御部１２０に、評価用データ３２が予め利用者によって与えられ、評価用データ３２に基づく実行シェルプログラム４０が生成され、外部記憶装置１３０に格納される。又は、評価用データ３２に基づいて、実行シェルプログラム４０を利用者が作成しておいてもよい。評価用データ３２に基づく実行シェルプログラム４０は、プログラム４０ａ、４０ｂ、及び４０ｃを含む。
【００３５】
評価用データ３２には、予め利用者によって設定された分割割合候補と評価ステップ数とが示されている。分割割合候補には２以上の評価される分割割合が指定されている。例えば、（１）「１０：１０００」、（２）「１００：１００」、及び（３）「２０：５００」が２軸分割の候補として指定される。また、評価ステップ数には、評価するためのステップ数が指定される。評価用データ３２は、記憶装置１７又は外部記憶装置１３０に格納される。
【００３６】
並列計算制御部１２０は、実行シェルプログラム４０をメモリユニット１２に読み込んで、ノード２０に並列計算処理の割り付けを行う（ステップＳ３０）。
【００３７】
並列計算制御部１２０は、実行シェルプログラム４０から最初のプログラム４０ａを実行する。プログラム４０ａは、例えば、
mpiexec -n 10000 programA n1=10, n2=1000, nstep=5 >file1
のようなシェルプログラムである。プログラム４０ａに従って、マスターノード２０ｍにプログラムＡ３０を転送し、１０、０００台のノード２０に候補（１）の分割割合で５ステップ数分の処理を実行させる（ステップＳ３１）。ステップＳ３１での処理を詳述する。
【００３８】
ステップＳ３１において、並列計算制御部１２０は、分割割合を候補（１）の１０：１０００でマスターノード２０ｍに与え、プログラムＡ３０を５ステップ実行させる（ステップＳ３１−２）。
【００３９】
その後、並列計算制御部１２０は、マスターノード２０ｍから５ステップの実行に要した時間ｔ１を含む経過時間ファイルを受信して、外部記憶装置に格納する（ステップＳ３１−４）。この例では、分割割合候補（１）「１０：１０００」に対応する経過時間ファイルをファイル名「file1」で示す。
【００４０】
並列計算制御部１２０は、マスターノード２０ｍにプログラムＡの実行を停止させる（ステップＳ３１−６）。
【００４１】
また、並列計算制御部１２０は、実行シェルプログラム４０から最初のプログラム４０ｂを実行する。プログラム４０ｂは、例えば、
mpiexec -n 10000 programA n1=100, n2=100, nstep=5 >file2
のようなシェルプログラムである。プログラム４０ｂに従って、マスターノード２０ｍにプログラムＡ３０を転送し、１０、０００台のノード２０に候補（２）の分割割合で５ステップ数分の処理を実行させる（ステップＳ３２）。ステップＳ３２での処理を詳述する。
【００４２】
ステップＳ３２において、並列計算制御部１２０は、分割割合を候補（２）の１００：１００でマスターノード２０ｍに与え、プログラムＡ３０を５ステップ実行させる（ステップＳ３２−２）。
【００４３】
その後、並列計算制御部１２０は、マスターノード２０ｍから５ステップの実行に要した時間ｔ２を含む経過時間ファイルを受信して、外部記憶装置に格納する（ステップＳ３２−４）。この例では、分割割合候補（２）「１００：１００」に対応する経過時間ファイルをファイル名「file2」で示す。
【００４４】
並列計算制御部１２０は、マスターノード２０ｍにプログラムＡの実行を停止させる（ステップＳ３２−６）。
【００４５】
更に、並列計算制御部１２０は、実行シェルプログラム４０から最初のプログラム４０ｃを実行する。プログラム４０ｃは、例えば、
mpiexec -n 10000 programA n1=20, n2=500, nstep=5 >file3
のようなシェルプログラムである。プログラム４０ｃに従って、マスターノード２０ｍにプログラムＡ３０を転送し、１０、０００台のノード２０に候補（３）の分割割合で５ステップ数分の処理を実行させる（ステップＳ３３）。ステップＳ３３での処理を詳述する。
【００４６】
ステップＳ３３において、並列計算制御部１２０は、分割割合を候補（３）の２０：５００でマスターノード２０ｍに与え、プログラムＡ３０を５ステップ実行させる（ステップＳ３３−２）。
【００４７】
その後、並列計算制御部１２０は、マスターノード２０ｍから５ステップの実行に要した時間ｔ３を含む経過時間ファイルを受信して、外部記憶装置に格納する（ステップＳ３３−４）。この例では、分割割合候補（３）「２０：５００」に対応する経過時間ファイルをファイル名「file3」で示す。
【００４８】
並列計算制御部１２０は、マスターノード２０ｍにプログラムＡの実行を停止させる（ステップＳ３３−６）。
【００４９】
全ての分割割合で５ステップの処理区間の実行を終了すると、並列計算制御部１２０は、分割割合評価プログラム５０を外部記憶装置１３０からメモリユニット１２に読み込んで、分割割合評価プログラム５０に従って、外部記憶装置１３０に格納された経過時間ファイル４２（file1、file2、及びfile3）に記録されている時間ｔ１、ｔ２、及びｔ３を評価して最適な分割割合を決定する（ステップＳ３４）。経過時間ｔ１、ｔ２、及びｔ３のうち最も短い時間を示す分割割合を最適な分割割合として決定してもよい。或いは、経過時間ｔ１、ｔ２、及びｔ３から最適な分割割合を予測してもよい。この場合、評価のために実行した分割割合候補（１）から（３）以外の分割割合となることもある。
【００５０】
分割割合評価プログラム５０は、例えば、
evaluate_div file1,file2,file3 >file4
であり、評価した結果は評価結果ファイル５２（ファイル名「file4」）に出力される。
【００５１】
そして、並列計算制御部１２０は、次元軸毎に出力された最適な分割割合を評価結果ファイル５２（file4）から取得する。この例では、２次元であるので、
n1opt=`awk '{print $1}'file4`
n2opt=`awk '{print $2}'file4`
のようなプログラムを実行することにより、次元軸毎の最適な分割割合を取得することができる。
【００５２】
並列計算制御部１２０は、ステップＳ３４で決定した最適な分割割合を用いて、ステップＳ３０で割り付けたノード２０にプログラムＡ３０を転送して、プログラムＡ３０の本実行を行わせる（ステップＳ３５）。例えば、
mpiexec -n 10000 programA n1=$n1opt, n2=$n2opt, nstep=unlimit
のようなプログラム６０によって、プログラムＡ３０の本実行が、並列計算部２００で行われる。終了条件（所定時間経過、又は、定めたステップ数）に達したらプログラムＡ３０の実行が終了となり、並列計算制御部１２０は、マスターノード２０ｍから本実行の結果を取得し、外部記憶領域１３０に格納した後、この第１並列計算処理を終了する。
【００５３】
ノード２０での処理を図５で説明する。図５は、ノード２０で行われる処理を説明するための図である。図５において、ノード２０は、フロントエンド計算装置１００から転送されたプログラムＡ３０を外部記憶装置２２に格納する。外部記憶装置２２に格納されたプログラムＡ３０を実行してシミュレーションが行われる。
【００５４】
ノード２０は、シミュレーションを行うための前処理を行い（ステップＳ７１）、収束判定の必要な処理核心部を実行する（ステップＳ７２）。前処理とは、プログラムＡ３０の初期設定に係る処理などを含む。初期設定では、フロントエンド計算装置１００の並列計算制御部１２０から与えられる分割割合候補に従って配列の分割が行われる。
【００５５】
そして、処理核心部から得た処理結果の収束判定を行う（ステップＳ７３）。処理結果が収束していないと判定した場合、ノード２０は、パラメータを修正して（ステップＳ７４）、再度、ステップＳ７２を実行する。そして、処理結果が収束したと判定した場合、ノード２０は、この処理を終了する。ノード２０は、収束結果をフロントエンド計算装置１００へ転送する。この際、スレーブノード２０の処理結果はマスターノード２０ｍで集約され、マスターノード２０ｍがフロントエンド計算装置１００へ転送するようにする。
【００５６】
ステップＳ７２、Ｓ７３、及びＳ７４が繰り返し部分であり、１ステップ（処理区間）に相当する。
【００５７】
図６から図８は、第１並列計算処理における処理フローを説明するための図である。図６から図８で示す手順によって一連の処理フローが示されている。この処理フローでは、図４に示す評価用データ３２の例で説明する。
【００５８】
図６を参照すると、開始処理の手順１において、外部記憶装置１３０から実行シェルプログラムファイル４０がフロントエンド計算装置１００に読み込まれ、読み込み順（プログラム４０ａ、４０ｂ、及び４０ｃの順）にプログラムが実行される。
【００５９】
分割割合候補（１）でプログラム４０ａが実行される手順２について、前半部を手順２（１）で後半部を手順２（２）で説明する。手順２（１）において、分割割合候補（１）「１０：１０００」に基づいて、並列計算部２００の全ノード２０のうち、並列計算制御部１２０によって１０、０００ノードが確保される。次に、マスターノード２０ｍにプログラムＡ３０が転送され外部記憶装置２２に格納される。そして、マスターノード２０ｍからスレーブノード２０が起動されることにより、分割割合候補（１）「１０：１０００」で分割された１０、０００ノードにおける各ノード２０で、プログラムＡ３０において処理区間の５ステップが実行される。
【００６０】
手順２（２）において、マスターノード２０ｍが、分割割合（分割割合候補（１）「１０：１０００」）と、プログラムＡ３０を１０、０００ノードで５ステップ実行した経過時間（前処理の実行時間を含まない）と経過時間ファイル４２（file1）に書き出し、経過時間ファイル４２（file1）は外部記憶装置２２に格納される。そして、マスターノード２０ｍは、外部記憶装置２２から経過時間ファイル４２（file1）をフロントエンド計算機１００に転送する。フロントエンド計算機１００は、転送された経過時間ファイル４２（file1）を外部記憶装置１３０に格納する。
【００６１】
図７の手順３において、フロントエンド計算機１００の並列計算制御部１２０によって次のプログラム４０ｂが実行される。
【００６２】
分割割合候補（２）でプログラム４０ａが実行される手順３について、前半部を手順３（１）で後半部を手順３（２）で説明する。手順３（１）において、分割割合候補（２）「１００：１００」に基づいて、並列計算部２００の全ノード２０のうち、並列計算制御部１２０によって１０、０００ノードが確保される。次に、マスターノード２０ｍにプログラムＡ３０が転送され外部記憶装置２２に格納される。そして、マスターノード２０ｍからスレーブノード２０が起動されることにより、分割割合候補（２）「１００：１００」で分割された１０、０００ノードにおける各ノード２０で、プログラムＡ３０において処理区間の５ステップが実行される。
【００６３】
手順３（２）において、マスターノード２０ｍが、分割割合（分割割合候補（２）「１００：１００」）と、プログラムＡ３０を１０、０００ノードで５ステップ実行した経過時間（前処理の実行時間を含まない）と経過時間ファイル４２（file2）に書き出し、経過時間ファイル４２（file2）は外部記憶装置２２に格納される。そして、マスターノード２０ｍは、外部記憶装置２２から経過時間ファイル４２（file2）をフロントエンド計算機１００に転送する。フロントエンド計算機１００は、転送された経過時間ファイル４２（file2）を外部記憶装置１３０に格納する。
【００６４】
図８の手順４において、フロントエンド計算機１００の並列計算制御部１２０によって次のプログラム４０ｃが実行される。
【００６５】
分割割合候補（３）でプログラム４０ａが実行される手順４について、前半部を手順４（１）で後半部を手順４（２）で説明する。手順４（１）において、分割割合候補（３）「２０：５００」に基づいて、並列計算部２００の全ノード２０のうち、並列計算制御部１２０によって１０、０００ノードが確保される。次に、マスターノード２０ｍにプログラムＡ３０が転送され外部記憶装置２２に格納される。そして、マスターノード２０ｍからスレーブノード２０が起動されることにより、分割割合候補（３）「２０：５００」で分割された１０、０００ノードにおける各ノード２０で、プログラムＡ３０において処理区間の５ステップが実行される。
【００６６】
手順４（２）において、マスターノード２０ｍが、分割割合（分割割合候補（３）「２０：５００」）と、プログラムＡ３０を１０、０００ノードで５ステップ実行した経過時間（前処理の実行時間を含まない）と経過時間ファイル４２（file3）に書き出し、経過時間ファイル４２（file3）は外部記憶装置２２に格納される。そして、マスターノード２０ｍは、外部記憶装置２２から経過時間ファイル４２（file3）をフロントエンド計算機１００に転送する。フロントエンド計算機１００は、転送された経過時間ファイル４２（file3）を外部記憶装置１３０に格納する。
【００６７】
図９の分割割合を評価する手順５において、並列計算制御部１２０は、分割割合評価プログラム５０を外部記憶装置１３０から読み込んで実行することによって、経過時間ファイル４２のfile1、file2、及びfile3の各々に記録されている分割割合（ｎ１，ｎ２）と経過時間との関係から最も効率的と考えられる最適な分割割合（ｎ１，ｎ２）を予測し、評価結果ファイル５２（file4）に記録する。分割割合（ｎ１，ｎ２）は、２次元の分割を示し、ｎ１は１次元目の分割数、ｎ２は２次元目の分割数を示す。全分割数ｎは、ｎ１×ｎ２となる。
【００６８】
手順５にて、前述した手順２、３、及び４で確保している並列計算部２００の１０、０００ノードは確保したままである。
【００６９】
最適な分割割合で実行する手順６において、並列計算制御部１２０は、手順２、３、及び４で確保している並列計算部２００の１０、０００ノードに、プログラムＡを所定の回数を実行させる。
【００７０】
終了処理を行う手順７において、マスターノード２０ｍによって、プログラムＡ３０の実行による計算結果を含む計算結果ファイル４８（fileA）、及びログファイル４９（log）が、フロントエンド計算装置１００に転送され、外部記憶装置１３０に格納される。
【００７１】
次に、並列計算制御部１２０によって行われる第２並列計算処理について図１０から図１４で説明する。図１０は、第２並列計算処理の一例を説明するためのフローチャート図である。図１０において、並列計算制御部１２０は、実行シェルプログラム４０を外部記憶装置１３０から読み込んで、マスターノード２０ｍを介して割り付けたノード２０にプログラムＡ３０'を実行させる。
【００７２】
評価用プログラム３４を含むプログラムＡ３０'と評価用ファイル４５（ファイル名「file5」）とが、並列計算制御部１２０によってマスターノード２０ｍに転送される。評価用プログラム３４は、候補毎に、分割割合候補と評価ステップ数に基づいて評価を行うプログラムである。
【００７３】
評価用ファイル４５（ファイル名「file5」）には、評価用データ３２が含まれている。この例では、（１）「１：１０００」、（２）「１０：１０００」、及び（３）「２５：４０」が２軸分割の候補として指定される。また、評価ステップ数には、評価するための５ステップが指定される。
【００７４】
マスターノード２０ｍの制御によりプログラムＡ３０'が実行され、以降、プログラムＡ３０'によって評価用プログラム３４を含めた第２並列計算処理が実行される。ステップＳ５１からＳ５５までの処理が評価用プログラム３４による処理に相当する。
【００７５】
マスターノード２０ｍのプログラムＡ３０'は、評価用ファイル４５（file5）内の最初の分割割合候補に従って１から５ステップ目までの処理を実行する（ステップＳ５１）。
【００７６】
ステップＳ５１において、マスターノード２０ｍのプログラムＡ３０'は、フロントエンド計算装置１００から転送され外部記憶装置２２に格納した評価用ファイル４５（file5）から最初の分割割合候補（１）「１：１０００」を取得して、分割割合を「１：１０００」に設定する（ステップＳ５１−２）。
【００７７】
マスターノード２０ｍのプログラムＡ３０'は、割り付けられたスレーブノード２０にプログラムＡ３０'の繰り返し部分において１ステップから５ステップまでを実行させると共に、自身も１ステップから５ステップまでを実行し、経過時間ｔ１を測定し、外部記憶装置２２内の経過時間ファイル４２に分割割合候補（１）「１：１０００」と経過時間ｔ１の値とを保存する（ステップＳ５１−４）。
【００７８】
マスターノード２０ｍのプログラムＡ３０'は、評価用ファイル４５（file5）内の次の分割割合候補に従って６から１０ステップ目までの処理を実行する（ステップＳ５２）。
【００７９】
ステップＳ５２において、マスターノード２０ｍのプログラムＡ３０'は、外部記憶装置２２に格納されている評価用ファイル４５（file5）から次の分割割合候補（２）「１０：１００」を取得して、分割割合を「１０：１００」に設定する（ステップＳ５２−２）。
【００８０】
マスターノード２０ｍのプログラムＡ３０'は、割り付けられたスレーブノード２０にプログラムＡ３０'の繰り返し部分において６ステップから１０ステップまで実行させると共に、自身も６ステップから１０ステップまで実行し、経過時間ｔ２を測定し、外部記憶装置２２内の経過時間ファイル４２に分割割合候補（２）「１０：１００」と経過時間ｔ２の値とを保存する（ステップＳ５２−４）。
【００８１】
マスターノード２０ｍのプログラムＡ３０'は、評価用ファイル４５（file5）内の次の分割割合候補に従って１１から１５ステップ目までの処理を実行する（ステップＳ５３）。
【００８２】
ステップＳ５３において、マスターノード２０ｍのプログラムＡ３０'は、外部記憶装置２２に格納されている評価用ファイル４５（file5）から次の分割割合候補（３）「２５：４０」を取得して、分割割合を「２５：４０」に設定する（ステップＳ５３−２）。
【００８３】
マスターノード２０ｍのプログラムＡ３０'は、割り付けられたスレーブノード２０にプログラムＡ３０'の繰り返し部分において１１ステップから１５ステップまで実行させると共に、自身も１１ステップから１５ステップまで実行し、経過時間ｔ３を測定し、外部記憶装置２２内の経過時間ファイル４２に分割割合候補（３）「２５：４０」と経過時間ｔ３の値とを保存する（ステップＳ５３−４）。
【００８４】
マスターノード２０ｍで実行されているプログラムＡ３０'は、マスターノード２０ｍの外部記憶装置２２に格納されている経過時間ファイル４２から、評価のために実行した３タイプの分割割合と、各分割割合に対応する経過時間ｔ１、ｔ２、及びｔ３から最適な分割割合を決定する（ステップＳ５４）。経過時間ｔ１、ｔ２、及びｔ３のうち最も短い時間を示す分割割合を最適な分割割合として決定してもよい。或いは、経過時間ｔ１、ｔ２、及びｔ３から最適な分割割合を予測してもよい。この場合、評価のために実行した分割割合候補（１）から（３）以外の分割割合となることもある。
【００８５】
マスターノード２０ｍのプログラムＡ３０'は、ステップＳ５４で決定した最適な分割割合に従って配列分割形状を変更して（ステップＳ５５）、１６ステップ目から終了条件を満たすまで実行する（ステップＳ５６）。そして、マスターノード２０ｍは、第２並列計算処理を終了する。
【００８６】
図１１から図１４は、第２並列計算処理における処理フローを説明するための図である。図１１から図１４で示す手順によって一連の処理フローが示されている。この処理フローでは、図１０に示す評価用データ３２の例で説明する。
【００８７】
図１１を参照すると、手順１において、外部記憶装置１３０から実行シェルプログラムファイル４０'がフロントエンド計算装置１００に読み込まれ、並列計算部２００のマスターノード２０ｍに対してプログラムＡ３０'の実行が指示される。プログラムＡ３０'と評価用ファイル４５（file5）とがマスターノード２０ｍの外部記憶装置２２に転送される。
【００８８】
１から５ステップ目までを実行する手順２について、前半部を手順２（１）で後半部を手順２（２）で説明する。手順２（１）において、マスターノード２０ｍは、フロントエンド計算装置１００の外部記憶装置１３０から転送されたプログラムＡ３０'を実行する。マスターノード２０ｍのプロセッサ５によって実行されたプログラムＡ３０'は、外部記憶装置２２に格納されている評価用ファイル４５（file5）から最初の分割割合候補（１）「１：１０００」に従って並列計算部２００の１、０００ノードを割り付けて分割する。マスターノード２０ｍからスレーブノード２０を起動し、各スレーブノード上でもプログラムＡ３０'を１から５ステップ目まで実行させる。
【００８９】
手順２（２）において、マスターノード２０ｍは、１から５ステップ目までの（前処理の実行時間を含まない）経過時間の値を外部記憶装置２２の経過時間ファイル４２に保存する。
【００９０】
図１２の６から１０ステップ目までを実行する手順３について、前半部を手順３（１）で後半部を手順３（２）で説明する。手順３（１）において、マスターノード２０ｍのプロセッサ５によって実行されたプログラムＡ３０'は、外部記憶装置２２に格納されている評価用ファイル４５（file5）から次の分割割合候補（２）「１０：１００」を取得する。プログラムＡ３０'は、分割割合候補（２）「１０：１００」に従って配列を再分割する。そして、マスターノード２０ｍとスレーブノード２０とで、６から１０ステップ目までが実行される。
【００９１】
手順３（２）において、マスターノード２０ｍは、６から１０ステップ目までの（前処理の実行時間を含まない）経過時間の値を外部記憶装置２２の経過時間ファイル４２に保存する。
【００９２】
図１３の１１から１５ステップ目までを実行する手順４について、前半部を手順４（１）で後半部を手順４（２）で説明する。手順４（１）において、マスターノード２０ｍのプロセッサ５によって実行されたプログラムＡ３０'は、外部記憶装置２２に格納されている評価用ファイル４５（file5）から３番目の分割割合候補（３）「２５：４０」を取得する。プログラムＡ３０'は、分割割合候補（３）「２５：４０」に従って配列を再分割する。そして、マスターノード２０ｍとスレーブノード２０とで、１１から１５ステップ目までが実行される。
【００９３】
手順４（２）において、マスターノード２０ｍは、１１から１５ステップ目までの（前処理の実行時間を含まない）経過時間の値を外部記憶装置２２の経過時間ファイル４２に保存する。
【００９４】
図１４の分割割合を評価する手順５において、マスターノード２０ｍのプロセッサ５によって実行されているプログラムＡが外部記憶装置２２内に格納されている経過時間ファイル４２（file5）に記憶されている分割割合候補（１）、（２）、及び（３）の夫々に対応する経過時間の関係から最適な分割割合（ｎ１及びｎ２の組み合せ）を予測計算して決定し、その値をスレーブノード２０に転送する。
【００９５】
最適な分割割合で１６ステップ目から実行する手順６において、プログラムＡが、最適な分割割合（ｎ１及びｎ２の値）に従って配列を再分割して、１６ステップ目から実行する。
【００９６】
終了処理を行う手順７において、マスターノード２０ｍによって、プログラムＡの実行による計算結果を含む計算結果ファイル４８（fileA）、及びログファイル４９（log）が、フロントエンド計算装置１００に転送され、外部記憶装置１３０に格納される。
【００９７】
第１並列計算処理では、分割割合候補毎に１ステップ目から５ステップ目までを処理し、また、決定した最適な分割割合を用いて、１ステップ目から５ステップ目までを処理するものである。一方、第２並列計算処理では、分割割合候補で実行したステップで得られた処理結果を無駄にすることがないため、並列処理を効率的に行うことができる。
【００９８】
また、第１並列計算処理は、第２並列計算処理と比べると、プログラムＡ３０自体の修正箇所が少ないという利点がある。
【００９９】
第１及び第２並列計算処理において、並列計算部２００の全ノード空間において割り当てられたノード空間を変えることなく、最適な分割割合の予測と本計算（又は、残りの計算の大部分）を実行することができるので、予測が正確である。
【０１００】
また、分割割合候補に従って順に分割割合を変え、最適な分割割合を探索する際に、プログラムの終了及び開始を繰り返さなくても実現できるため、計算時間を無駄にすることがない。
【０１０１】
上述した処理に加えて、予測値に従って分割割合を決定したあとも経過時間（計算時間）を追跡し、予測時間と実時間が異なる場合（又は、別の分割割合の予測時間の方が短いとき）には、実測値を用いて再度、最適な分割割合を決定し直すことも可能である。
【０１０２】
次に、図１５及び図１６で、本実施例に係る並列計算処理における配列の分割割当状況の変化について説明する。図１５は、ノードに割り当てられた配列例を示す図である。図１６は、ノードに割り当てられた配列の大きさを矩形で例示した図である。図１５及び図１６において、分割される配列Ａの大きさは（１：１００、１：１０００）である。
【０１０３】
図１５（Ａ）及び図１６（Ａ）は分割割合候補（１０：１０００）の場合を示す。図１５（Ｂ）及び図１６（Ｂ）は分割割合候補（１００：１００）の場合を示す。図１５（Ｃ）及び図１６（Ｃ）は分割割合候補（２０：５００）の場合を示す。
【０１０４】
例えば、分割割合候補（１０：１０００）、分割割合候補（１００：１００）、そして分割割合候補（２０：５００）の順で第１又は第２並列計算処理が行われた場合、ノードに割り当てられた配列の変化は、図１５（Ａ）、図１５（Ｂ）、そして図１５（Ｃ）の順に変化する。また、ノードに割り当てられた配列の大きさの変化は、図１６（Ａ）、図１６（Ｂ）、そして図１６（Ｃ）の順に変化する。
【０１０５】
図１５（Ａ）の分割割合候補（１０：１０００）の場合では、例えば、ノード０のマスターノードに配列Ａの（１：１０、１：１）部分が割り当てられる。他ノードにも配列Ａの部分が同様の大きさで順次割り当てられる。この分割割合候補（１０：１０００）の場合では、図１６（Ａ）に例示される矩形により、各ノードにおいて、１次元方向に処理負荷が大きいことが示される。
【０１０６】
図１５（Ｂ）の分割割合候補（１００：１００）の場合では、例えば、ノード０のマスターノードに配列Ａの（１：１、１：１０）部分が割り当てられる。他ノードにも配列Ａの部分が同様の大きさで順次割り当てられる。この分割割合候補（１００：１００）の場合では、図１６（Ｂ）に例示される矩形により、各ノードにおいて、２次元方向に処理負荷が大きいことが示される。
【０１０７】
図１５（Ｃ）の分割割合候補（２０：５００）の場合では、例えば、ノード０のマスターノードに配列Ａの（１：５、１：２）部分が割り当てられる。他ノードにも配列Ａの部分が同様の大きさで順次割り当てられる。この分割割合候補（２０：５００）の場合では、図１６（Ｃ）に例示される矩形により、各ノードにおいて、１次元方向及び２次元方向に均等な処理負荷であることが示される。
【０１０８】
このように、１次元方向及び２次元方向の処理の負荷を変化させた割り当てによって、定めされた処理区間のステップ数を試行することにより、最適な分割割合を予測することができる。
【０１０９】
本実施例における並列計算処理は、一定の処理を１００回以上繰り返し行う大規模な並列処理による、シミュレーションプログラムの実行に適応することができる。例えば、各原子に働く力を計算し、そこからある時間間隔後の原子位置を計算し更新するという処理を繰り返すような古典的分子動力学法に基づくシミュレーションプログラム、或いは、電子状態の初期値を何らかの方法で与え、量子論に従ってそれを自己無撞着的に更新するというＳＣＦ(Self Consistent Field)処理を繰り返して電子状態を収束させる第一原理分子動力学法に基づくシミュレーションプログラム等に適応可能である。
【０１１０】
具体的には、分割軸が２以上あり、最適な分割割合が未決定で、ほぼ同じ内容の処理を１００ステップ以上繰り返し、最適な分割割合を精度よく予測することが難しいプログラムである。第一原理分子動力学計算プログラムはそのようなプログラムの代表的な例である。
【０１１１】
波動関数Ψがエネルギーバンドの数だけあり、また各波動関数は基底関数（例えば平面波）で展開されているので、バンドと基底関数の係数のふたつの並列化軸（分割軸）を持つ。例えば、
【０１１２】
【数１】
2012221254.tif 000003
のように平面波で展開できる波動関数の場合、分割軸はｉ（バンド）とＧ（平面波波数ベクトル）である。
【０１１３】
上述した第１並列計算処理における実行シェルプログラム４０及び分割割合評価プログラム５０の内容は、下記のような内容となる。
【０１１４】
mpiexec -n 10000 ./programA n1=10, n2=1000, nstep=5 >file1
mpiexec -n 10000 ./programA n1=100,n2=100, nstep=5 >file2
mpiexec -n 10000 ./programA n1=20,n2=500, nstep=5 >file3
evaluate_div file1, file2, file3 >file4
n1opt=`grep n1 file4|awk '{print $2}'`
n2opt=`grep n2 file4|awk '{print $2}'`
mpiexec -n 10000 ./programA n1=$n1opt, n2=$n2opt, nstep=unlimit
ここで、file4の出力結果は次のようなものである。
【０１１５】
n1 25
n2 400
従って、この数１の計算例では、最適な分割割合は（２５：４００）となる。
【０１１６】
また、他の計算例として、Ａ（ｋ，ｉ）をフーリエ変換してＢ（ｊ，ｉ）を求め、この自乗をｉに関して和を算出する、
【０１１７】
【数２】
2012221254.tif 000004
がある。ｎ＝１００、かつ、ｉで和をとる範囲は１から１０００とする。この数２は、ノード間でネットワーク通信をする計算例であり、１次元目及び２次元目の方向のネットワーク通信が発生する。
【０１１８】
更に、他の計算例として、Ａ（ｋ，ｉ）に行列をかけて更新する、
【０１１９】
【数３】
2012221254.tif 000005
がある。この数３の計算例では、２次元目の方向のネットワーク通信は発生しない。
【０１２０】
本実施例における並列計算処理では、数１、数２、又は数３のような計算式を含むシミュレーションプログラム（プログラムＡ３０又は３０'）そのものを２以上の分割割合候補毎に実行させて最適な分割割合を決定するため、全体（の計算時間）に占める割合における一定期間の演算効率の測定であっても、全体の演算効率を精度良く予測することができる。
【０１２１】
ひとつのシミュレーションジョブの中で、処理を割り付けられると共に、ネットワーク６を介して相互に通信する複数のノードでなるノード空間を変更することなく、最適な分割割合を決定して本計算するため、ネットワーク空間上のノード配置の違いによる予測精度の乱れなどの問題を改善することができる。本実施例では、最適な分割割合を探るための複数回の予備計算を行うという非本質的な作業を必要としない。従って、ユーザは複数回の予備計算を行うための計算プログラムを開発する負担を削減することができる。
【０１２２】
また、上述では、分割割合候補を３つとした例で説明したが、より多くの候補を用いて試行して最適な分割割合を予測するようにしてもよい。
【０１２３】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【０１２４】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
並列処理を行うノード空間の複数の分割軸に対する分割割合を変更してシミュレーションプログラムを試行し、該分割割合毎に経過時間を取得して記憶部に保存する試行手段と、
前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定する決定手段と、
前記ノード空間の分割割合を前記決定手段によって決定された前記最適な分割割合に設定して、前記シミュレーションプログラムを本実行する本実行手段とを有することを特徴とする並列処理最適化装置。
（付記２）
前記試行手段は、前記シミュレーションプログラムの初期設定時に前記分割割合に従って該シミュレーションプログラムに係る配列を分割することを特徴とする付記１記載の並列処理最適化装置。
（付記３）
前記試行手段は、異なる分割割合を指定した実行シェルプログラムを実行することによって、該分割割合を変更することを特徴とする付記１又は２記載の並列処理最適化装置。
（付記４）
前記試行手段は、前記シミュレーションプログラムの繰り返しの処理区間毎に前記分割割合を動的に変更しつつ継続して前記シミュレーションプログラムを試行し、
前記本実行手段は、前記試行手段から継続して前記シミュレーションプログラムを本実行することを特徴とする付記１記載の並列処理最適化装置。
（付記５）
前記最適な分割割合による本実行において、各処理区間の計算時間を計測し、予測時間との誤差が所定値以上となる場合には、再度最適化することを特徴とする付記４記載の並列処理最適化装置。
（付記６）
並列処理を行うノード空間でシミュレーションプログラムであって、
前記シミュレーションの実行中、繰り返しの処理区間毎に、前記ノード空間の複数の分割軸に対する分割割合を動的に変更しつつ該実行を継続して試行し、
前記分割割合毎に経過時間を取得して記憶部に保存し、
前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定し、
前記ノード空間の分割割合を前記決定された最適な分割割合に設定して、継続して本実行されるようにしたことを特徴とするプロセッサによって実行されるシミュレーションプログラム。
（付記７）
並列処理を行うノード空間の複数の分割軸に対する分割割合を変更してシミュレーションプログラムを試行し、分割割合毎に経過時間を取得して記憶部に保存し、
前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定し、
前記ノード空間の分割割合を前記決定された前記最適な分割割合に設定して、前記シミュレーションプログラムを本実行する並列処理最適化方法。
【符号の説明】
【０１２５】
５        プロセッサ
６        ネットワーク
１１      ＣＰＵ
１２      メモリユニット
１３      表示ユニット
１５      入力ユニット
１６      通信ユニット
１７      記憶装置
１８      ドライバ
１９      記憶媒体
２０      ノード
２０ｍ    マスターノード
３０、３０'  プログラムＡ（シミュレーションプログラム）
４０      実行シェルプログラム
４２      経過時間ファイル
５０      分割割合評価プログラム
５２      評価結果ファイル
１００    フロントエンド計算装置
１２０    並列計算制御部
１３０    外部記憶装置
２００    並列計算部
１０００  並列計算システム
【図１】
2012221254.tif 000006
【図２】
2012221254.tif 000007
【図３】
2012221254.tif 000008
【図４】
2012221254.tif 000009
【図５】
2012221254.tif 000010
【図６】
2012221254.tif 000011
【図７】
2012221254.tif 000012
【図８】
2012221254.tif 000013
【図９】
2012221254.tif 000014
【図１０】
2012221254.tif 000015
【図１１】
2012221254.tif 000016
【図１２】
2012221254.tif 000017
【図１３】
2012221254.tif 000018
【図１４】
2012221254.tif 000019
【図１５】
2012221254.tif 000020
【図１６】
2012221254.tif 000021