JP2012221254A - 並列処理最適化装置及びシミュレーションプログラム - Google Patents

並列処理最適化装置及びシミュレーションプログラム Download PDF

Info

Publication number
JP2012221254A
JP2012221254A JP2011086737A JP2011086737A JP2012221254A JP 2012221254 A JP2012221254 A JP 2012221254A JP 2011086737 A JP2011086737 A JP 2011086737A JP 2011086737 A JP2011086737 A JP 2011086737A JP 2012221254 A JP2012221254 A JP 2012221254A
Authority
JP
Japan
Prior art keywords
division ratio
program
elapsed time
node
parallel
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.)
Withdrawn
Application number
JP2011086737A
Other languages
English (en)
Inventor
Takahiro Yamazaki
隆浩 山崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011086737A priority Critical patent/JP2012221254A/ja
Publication of JP2012221254A publication Critical patent/JP2012221254A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】 本発明の課題は、多次元配列の分割割合を変更しつつシミュレーションプログラムを試行することによって、最適な分割割合を決定して本実行を行うことを目的とする。
【解決手段】 上記課題は、並列処理を行うノード空間の複数の分割軸に対する分割割合を変更してシミュレーションプログラムを試行し、該分割割合毎に経過時間を取得して記憶部に保存する試行手段と、前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定する決定手段と、前記ノード空間の分割割合を前記決定手段によって決定された前記最適な分割割合に設定して、前記シミュレーションプログラムを本実行する本実行手段とを有することを特徴とする並列処理最適化装置により達成される。
【選択図】 図4

Description

本発明は、多次元配列を有するシミュレーションプログラムの複数の分割軸に対する最適な分割割合を自動的に決定する並列処理最適化装置及びシミュレーションプログラムに関する。
近年、情報処理システムにおいて、ネットワークを介して接続された複数のノード計算機(プロセッサ)を用いて並列処理によりシミュレーションすることが行われている。
逐次計算機向けプログラムを分散型記憶並列計算機向けの並列プログラムに変換する場合に、データ分割パタンライブラリを用いて、各データ分割パタンに対応して予め定めた方法でデータとプログラムとを各プロセッサに割り付けて実行し、処理時間に関する量を計測してデータ分割パタンを比較評価することによって、最適データ分割を選択することが提案されている。
特開平6−139212号公報
しかしながら、大規模(分散記憶型)並列計算機は多数のノード計算機をネットワークを介して接続された構造をもっている。並列度が高くなるに従い、小規模並列計算機で十分であった分割方法では、多数のノードに計算負荷を分散しきれなくなり、並列計算効率を上げることが難しくなってきている。
並列計算効率を改善する、また、通信時間の抑制効果を求めて分割軸を増やすことが考えられる。例えば、これまで1軸(1次元)分割していたものを2軸(2次元)分割するということが必要になる。ノード数がnの計算機に対して、1次元目の分割をn1、2次元目の分割をn2とするとn=n1×n2の関係がある。処理ごとに最適なn1とn2の比は異なる。該当する配列を扱う複数の処理がある場合、最適なn1とn2の組み合わせは、局所的には決定できず、通して実行して探る必要がある。そしてそれは、計算対象の系、計算機の規模、割り当てられるネットワーク構造上のノード配置などに依存しており、容易に決定することが難しい。さらに分割軸が3次元、4次元と増えていくと、その分割割合を決定することはますます困難になる。
例えば、10000ノードを使う場合を考える。ひとつの繰り返しの計算ステップ中の処理区間1の中ではn1=10, n2=1000と分割するのが最も計算効率がよく、処理区間2の中ではn1=100, n2=100と分割するのが最も効率がよいことが分かっていたとしても、ステップを通してどのような組み合わせが最もよいかは、試行してみないと決定できない。しかも、大規模並列計算機で試行するたびに割り当てられるネットワーク構造上のノード配置が異なる場合には、決定した分割割合が本当に最適なものになっていない可能性がある。
このような場合、一般には、複数の分割割合に対して、小規模の計算を行い、経過時間を測定し、最適な分割割合を予測する。
しかし、こうして決定した最適な分割割合が、大規模並列化した場合の最適な分割割合になっていない可能性がある。また、計算の限られた部分(1ステップ以上)を、同じ規模の並列計算機で予備的に行い、最適な分割割合を予測することも行われる。しかし、大規模並列計算のジョブを投入してから実行されるまでの待ち時間が大きく、生産性を落とす。また、予備計算を行うときに割り当てられたノード空間(プロセッサ空間)が、本計算時のものと異なる場合には、予測の信頼性が落ちる。あるいは、計算プログラムの核心部(処理の重い部分)の演算を抜き出してスケルトンプログラムを作り、性能予測シミュレーションを行うことも考えられる。しかし、これはスケルトンプログラムを作成し、性能予測プログラムを準備しなければならない、と言った問題がある。
開示の技術は、並列処理を行うノード空間の複数の分割軸に対する分割割合を変更してシミュレーションプログラムを試行し、該分割割合毎に経過時間を取得して記憶部に保存する試行手段と、前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定する決定手段と、前記ノード空間の分割割合を前記決定手段によって決定された前記最適な分割割合に設定して、前記シミュレーションプログラムを本実行する本実行手段とを有することを特徴とする並列処理最適化装置のように構成される。
開示の技術では、多次元配列の分割割合を変えながらシミュレーションプログラムを試行し、最適な分割割合を自動的に決定すると共に、試行時と同一のノード空間において最適な分割割合で該シミュレーションプログラムを本実行することができる。
本実施例に係る並列計算システムの構成例を示す図である。 フロントエンド計算装置のハードウェア構成を示す図である。 並列計算制御部による制御処理を説明するためのフローチャート図である。 第1並列計算処理の一例を説明するためのフローチャート図である。 ノードで行われる処理を説明するための図である。 第1並列計算処理における処理フローを説明するための図(その1)である。 第1並列計算処理における処理フローを説明するための図(その2)である。 第1並列計算処理における処理フローを説明するための図(その3)である。 第1並列計算処理における処理フローを説明するための図(その4)である。 第2並列計算処理の一例を説明するためのフローチャート図である。 第2並列計算処理における処理フローを説明するための図(その1)である。 第2並列計算処理における処理フローを説明するための図(その2)である。 第2並列計算処理における処理フローを説明するための図(その3)である。 第2並列計算処理における処理フローを説明するための図(その4)である。 ノードに割り当てられた配列例を示す図である。 ノードに割り当てられた配列の大きさを矩形で例示した図である。
以下、本発明の実施の形態を図面に基づいて説明する。図1は、本実施例に係る並列計算システムの構成例を示す図である。図1に示す並列計算システム1000は、フロントエンド計算装置100とプロセッサ5を有する複数のノード20とがネットワーク6を介して接続される。
フロントエンド計算装置100は、コンピュータ(図2)であり、分割割合を変えながら確保したノード20に並列計算を行わせ、最適な分割割合を決定する並列計算制御部120を有する。フロントエンド計算装置100は、並列処理最適化装置に相当する。
フロントエンド計算装置100に接続される外部記憶装置130には、プログラムA30と、実行シェルプログラム40と、分割割合評価プログラム50とが記憶されている。また、分割割合に応じて処理区間の並列計算にかかった時間を示す経過時間ファイル42が外部記憶装置130に記憶される。更に、分割割合評価プログラム50による評価結果を示す評価結果ファイル52が外部記憶装置130に記憶される。
プログラムA30は、複数の並列分割軸を持つ配列(多次元配列)及び演算処理を持つプログラムであり、所望の結果を得られるか否かを検証するために100回以上の繰り返し計算を行うため10、000台以上のノード20を用いた大規模並列処理によって実行されるシミュレーションプログラムである。
処理区間とは、最適な分割割合を決定するためのプログラムA30内の繰り返し(ループ)回数である。また、1回の繰り返しが、1ステップとしてカウントされる。
並列計算制御部120は、分割割合に基づく台数のノード20を確保し、並列計算処理を割り当てる。並列計算制御部120は、実行シェルプログラム40をロードして、異なる分割割合で処理区間の並列計算処理を割り付けたノード20に行わせ、分割割合に対応する経過時間ファイル42をノードから受信して外部記憶装置130に格納する。
並列計算制御部120は、分割割合に対応する経過時間ファイル42を参照して、最適な分割割合を決定するための評価を行って、最適な分割割合を評価結果ファイル52に記録する。そして、並列計算制御部120は、評価結果ファイル52に記録された最適な分割割合に基づいたプログラムA30の並列計算処理の本実施を最適な分割割合に基づいて割り付けたノード20に実行させる。
各ノード20は、プロセッサ5及びメモリ(主記憶装置)を有するコンピュータ装置であり、フロントエンド計算装置100の並列計算制御部120による制御配下の元で、最適分割割合決定処理を含めて並列計算処理を実行する装置である。各ノード20には、各ノード20がアクセス可能な外部記憶装置22が接続されており、外部記憶装置22には処理に必要なデータが格納される。
複数のノード20(10、000以上)によって並列計算部200(クラスター計算機)が構成され、その内の一つのノード20がマスターノード20mとなり、他がスレーブノード20として動作する。マスターノード20mは、フロントエンド計算装置100から転送されるプログラムA30と、最適分割割合決定処理によって得られた分割割合に応じた経過時間を記録した経過時間ファイル42とを自身の外部記憶装置22に格納し、フロントエンド計算装置100によって分割割合に従って割り当てられたスレーブにプログラムA30を送信する。マスターノード20mは、分割割合に応じた経過時間を監視して、処理区間(ステップ数)の実行に要した時間を経過時間ファイル42に記録し、経過時間ファイル42をフロントエンド計算装置100へ転送する。
図2は、フロントエンド計算装置のハードウェア構成を示す図である。図2に示すフロントエンド計算装置100は、コンピュータによって制御される装置であって、CPU(Central Processing Unit)11と、メモリユニット12と、表示ユニット13と、入力ユニット15と、通信ユニット16と、記憶装置17と、ドライバ18とを有し、システムバスBに接続される。
CPU11は、メモリユニット12に格納されたプログラムに従ってフロントエンド計算装置100を制御する。メモリユニット12には、RAM(Random Access Memory)及びROM(Read-Only Memory)等が用いられ、CPU11にて実行されるプログラム、CPU11での処理に必要なデータ、CPU11での処理にて得られたデータ等を格納する。また、メモリユニット12の一部の領域が、CPU11での処理に利用されるワークエリアとして割り付けられている。
表示ユニット13は、CPU11の制御のもとに必要な各種情報を表示する。入力ユニット15は、マウス、キーボード等を有し、ユーザがフロントエンド計算装置100が処理を行なうための必要な各種情報を入力するために用いられる。
通信ユニット16は、例えばインターネット、LAN(Local Area Network)等に接続し、並列計算部200内のノード20との間の通信制御をするための装置である。通信ユニット16による通信は無線又は有線に限定されるものではない。記憶装置17には、例えば、ハードディスクユニットが用いられ、各種処理を実行するプログラム等のデータを格納する。
フロントエンド計算装置100の並列計算制御部120によって行われる制御処理を実現するプログラムは、例えば、CD−ROM(Compact Disc Read-Only Memory)等の記憶媒体19によってフロントエンド計算装置100に提供される。即ち、プログラムが保存された記憶媒体19がドライバ18にセットされると、ドライバ18が記憶媒体19からプログラムを読み出し、その読み出されたプログラムがシステムバスBを介して記憶装置17にインストールされる。そして、プログラムが起動されると、記憶装置17にインストールされたプログラムに従ってCPU11がその処理を開始する。尚、プログラムを格納する媒体としてCD−ROMに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。コンピュータ読取可能な記憶媒体として、CD−ROMの他に、DVDディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。また、外部ネットワークを介してプログラムを記憶装置17に転送してもよい。あるいは、入力ユニット15を使ってプログラムを作成し記憶装置17に保存してもよい。
また、メモリユニット12、記憶装置17、及び外部記憶装置130で提供される一部又は全体の記憶領域が、本実施例に係るデータを格納する記憶部に相当する。
図3は、並列計算制御部による制御処理を説明するためのフローチャート図である。図3において、フロントエンド計算装置100の並列計算制御部120は、分割方法が決まっているか否かを判断する(ステップS11)。分割方法が決まっている場合、並列計算制御部120は、並列計算ジョブを投入し、並列計算ジョブの終了によりこの制御処理を終了する(ステップS12−2)。
一方、分割方法が決まっていない場合、並列計算制御部120は、分割軸が2以上あり、かつ、最適な分割割合が決定済みであるか否かを判断する(ステップS12)。この判断条件が成立する場合、並列計算制御部120は、並列計算ジョブを投入し、並列計算ジョブの終了によりこの制御処理を終了する(ステップS12−2)。
一方、ステップS12における判断条件が成立しない場合、並列計算制御部120は、更に、短時間で並列計算ジョブが終わるか、又はステップ数(繰り返し数)が小さいかを判断する(ステップS13)。この判断条件が成立する場合、並列計算制御部120は、経験値(分割割合)を用いて、並列計算ジョブを投入し、並列計算ジョブの終了によりこの制御処理を終了する(ステップS13−2)。経験値は、ユーザによって設定された分割割合であり、デフォルト値として記憶装置17又は外部記憶装置130に格納される。
ステップS13における判断条件が成立しない場合、並列計算制御部120は、ほぼ同じ内容の処理を100ステップ以上繰り返すか否かを判断する(ステップS14)。このステップS14での判断条件が成立する場合、並列計算制御部120は、更に、ノードの割り付け方及びノード数に依存せずに、最適な分割割合を精度良く予測できるか否かを判断する(ステップS15)。このステップS15での判断条件が成立する場合、並列計算制御部120は、複数の予備(小規模)計算を行い最適な分割割合を決定し(ステップS15−2)、並列計算ジョブを実行する(ステップS15−4)。
一方、ステップS15での判断条件が成立しない場合、並列計算制御部120は、プログラムA30内に分割割合を動的に変更する機構を実現することができるか否かを判断する(ステップS16)。ステップS16での判断条件が成立しない場合、並列計算制御部120は、ジョブの投入により後述される第1並列計算処理を実行し(ステップS17)、第1並列計算処理の終了によって、この制御処理を終了する。第1並列計算処理では、最適分割割合決定処理が行われると共に、最適な分割割合を決定後にはプログラムA30の本実行が行われる。
一方、ステップS16での判断条件が成立する場合、並列計算制御部120は、ジョブの投入により後述される第2並列計算処理を実行し(ステップS18)、第2並列計算処理の終了によって、この制御処理を終了する。第2並列計算処理では、ノード20にてプログラムA30に組み込まれた最適分割割合決定処理によって分割割合が動的に変更され、最適な分割割合を決定後にはプログラムA30の本実行が行われる。
先ず、並列計算制御部120によって行われる第1並列計算処理について図4から図9で説明する。図4は、第1並列計算処理の一例を説明するためのフローチャート図である。図4において、フロントエンド計算機100の並列計算制御部120に、評価用データ32が予め利用者によって与えられ、評価用データ32に基づく実行シェルプログラム40が生成され、外部記憶装置130に格納される。又は、評価用データ32に基づいて、実行シェルプログラム40を利用者が作成しておいてもよい。評価用データ32に基づく実行シェルプログラム40は、プログラム40a、40b、及び40cを含む。
評価用データ32には、予め利用者によって設定された分割割合候補と評価ステップ数とが示されている。分割割合候補には2以上の評価される分割割合が指定されている。例えば、(1)「10:1000」、(2)「100:100」、及び(3)「20:500」が2軸分割の候補として指定される。また、評価ステップ数には、評価するためのステップ数が指定される。評価用データ32は、記憶装置17又は外部記憶装置130に格納される。
並列計算制御部120は、実行シェルプログラム40をメモリユニット12に読み込んで、ノード20に並列計算処理の割り付けを行う(ステップS30)。
並列計算制御部120は、実行シェルプログラム40から最初のプログラム40aを実行する。プログラム40aは、例えば、
mpiexec -n 10000 programA n1=10, n2=1000, nstep=5 >file1
のようなシェルプログラムである。プログラム40aに従って、マスターノード20mにプログラムA30を転送し、10、000台のノード20に候補(1)の分割割合で5ステップ数分の処理を実行させる(ステップS31)。ステップS31での処理を詳述する。
ステップS31において、並列計算制御部120は、分割割合を候補(1)の10:1000でマスターノード20mに与え、プログラムA30を5ステップ実行させる(ステップS31−2)。
その後、並列計算制御部120は、マスターノード20mから5ステップの実行に要した時間t1を含む経過時間ファイルを受信して、外部記憶装置に格納する(ステップS31−4)。この例では、分割割合候補(1)「10:1000」に対応する経過時間ファイルをファイル名「file1」で示す。
並列計算制御部120は、マスターノード20mにプログラムAの実行を停止させる(ステップS31−6)。
また、並列計算制御部120は、実行シェルプログラム40から最初のプログラム40bを実行する。プログラム40bは、例えば、
mpiexec -n 10000 programA n1=100, n2=100, nstep=5 >file2
のようなシェルプログラムである。プログラム40bに従って、マスターノード20mにプログラムA30を転送し、10、000台のノード20に候補(2)の分割割合で5ステップ数分の処理を実行させる(ステップS32)。ステップS32での処理を詳述する。
ステップS32において、並列計算制御部120は、分割割合を候補(2)の100:100でマスターノード20mに与え、プログラムA30を5ステップ実行させる(ステップS32−2)。
その後、並列計算制御部120は、マスターノード20mから5ステップの実行に要した時間t2を含む経過時間ファイルを受信して、外部記憶装置に格納する(ステップS32−4)。この例では、分割割合候補(2)「100:100」に対応する経過時間ファイルをファイル名「file2」で示す。
並列計算制御部120は、マスターノード20mにプログラムAの実行を停止させる(ステップS32−6)。
更に、並列計算制御部120は、実行シェルプログラム40から最初のプログラム40cを実行する。プログラム40cは、例えば、
mpiexec -n 10000 programA n1=20, n2=500, nstep=5 >file3
のようなシェルプログラムである。プログラム40cに従って、マスターノード20mにプログラムA30を転送し、10、000台のノード20に候補(3)の分割割合で5ステップ数分の処理を実行させる(ステップS33)。ステップS33での処理を詳述する。
ステップS33において、並列計算制御部120は、分割割合を候補(3)の20:500でマスターノード20mに与え、プログラムA30を5ステップ実行させる(ステップS33−2)。
その後、並列計算制御部120は、マスターノード20mから5ステップの実行に要した時間t3を含む経過時間ファイルを受信して、外部記憶装置に格納する(ステップS33−4)。この例では、分割割合候補(3)「20:500」に対応する経過時間ファイルをファイル名「file3」で示す。
並列計算制御部120は、マスターノード20mにプログラムAの実行を停止させる(ステップS33−6)。
全ての分割割合で5ステップの処理区間の実行を終了すると、並列計算制御部120は、分割割合評価プログラム50を外部記憶装置130からメモリユニット12に読み込んで、分割割合評価プログラム50に従って、外部記憶装置130に格納された経過時間ファイル42(file1、file2、及びfile3)に記録されている時間t1、t2、及びt3を評価して最適な分割割合を決定する(ステップS34)。経過時間t1、t2、及びt3のうち最も短い時間を示す分割割合を最適な分割割合として決定してもよい。或いは、経過時間t1、t2、及びt3から最適な分割割合を予測してもよい。この場合、評価のために実行した分割割合候補(1)から(3)以外の分割割合となることもある。
分割割合評価プログラム50は、例えば、
evaluate_div file1,file2,file3 >file4
であり、評価した結果は評価結果ファイル52(ファイル名「file4」)に出力される。
そして、並列計算制御部120は、次元軸毎に出力された最適な分割割合を評価結果ファイル52(file4)から取得する。この例では、2次元であるので、
n1opt=`awk '{print $1}'file4`
n2opt=`awk '{print $2}'file4`
のようなプログラムを実行することにより、次元軸毎の最適な分割割合を取得することができる。
並列計算制御部120は、ステップS34で決定した最適な分割割合を用いて、ステップS30で割り付けたノード20にプログラムA30を転送して、プログラムA30の本実行を行わせる(ステップS35)。例えば、
mpiexec -n 10000 programA n1=$n1opt, n2=$n2opt, nstep=unlimit
のようなプログラム60によって、プログラムA30の本実行が、並列計算部200で行われる。終了条件(所定時間経過、又は、定めたステップ数)に達したらプログラムA30の実行が終了となり、並列計算制御部120は、マスターノード20mから本実行の結果を取得し、外部記憶領域130に格納した後、この第1並列計算処理を終了する。
ノード20での処理を図5で説明する。図5は、ノード20で行われる処理を説明するための図である。図5において、ノード20は、フロントエンド計算装置100から転送されたプログラムA30を外部記憶装置22に格納する。外部記憶装置22に格納されたプログラムA30を実行してシミュレーションが行われる。
ノード20は、シミュレーションを行うための前処理を行い(ステップS71)、収束判定の必要な処理核心部を実行する(ステップS72)。前処理とは、プログラムA30の初期設定に係る処理などを含む。初期設定では、フロントエンド計算装置100の並列計算制御部120から与えられる分割割合候補に従って配列の分割が行われる。
そして、処理核心部から得た処理結果の収束判定を行う(ステップS73)。処理結果が収束していないと判定した場合、ノード20は、パラメータを修正して(ステップS74)、再度、ステップS72を実行する。そして、処理結果が収束したと判定した場合、ノード20は、この処理を終了する。ノード20は、収束結果をフロントエンド計算装置100へ転送する。この際、スレーブノード20の処理結果はマスターノード20mで集約され、マスターノード20mがフロントエンド計算装置100へ転送するようにする。
ステップS72、S73、及びS74が繰り返し部分であり、1ステップ(処理区間)に相当する。
図6から図8は、第1並列計算処理における処理フローを説明するための図である。図6から図8で示す手順によって一連の処理フローが示されている。この処理フローでは、図4に示す評価用データ32の例で説明する。
図6を参照すると、開始処理の手順1において、外部記憶装置130から実行シェルプログラムファイル40がフロントエンド計算装置100に読み込まれ、読み込み順(プログラム40a、40b、及び40cの順)にプログラムが実行される。
分割割合候補(1)でプログラム40aが実行される手順2について、前半部を手順2(1)で後半部を手順2(2)で説明する。手順2(1)において、分割割合候補(1)「10:1000」に基づいて、並列計算部200の全ノード20のうち、並列計算制御部120によって10、000ノードが確保される。次に、マスターノード20mにプログラムA30が転送され外部記憶装置22に格納される。そして、マスターノード20mからスレーブノード20が起動されることにより、分割割合候補(1)「10:1000」で分割された10、000ノードにおける各ノード20で、プログラムA30において処理区間の5ステップが実行される。
手順2(2)において、マスターノード20mが、分割割合(分割割合候補(1)「10:1000」)と、プログラムA30を10、000ノードで5ステップ実行した経過時間(前処理の実行時間を含まない)と経過時間ファイル42(file1)に書き出し、経過時間ファイル42(file1)は外部記憶装置22に格納される。そして、マスターノード20mは、外部記憶装置22から経過時間ファイル42(file1)をフロントエンド計算機100に転送する。フロントエンド計算機100は、転送された経過時間ファイル42(file1)を外部記憶装置130に格納する。
図7の手順3において、フロントエンド計算機100の並列計算制御部120によって次のプログラム40bが実行される。
分割割合候補(2)でプログラム40aが実行される手順3について、前半部を手順3(1)で後半部を手順3(2)で説明する。手順3(1)において、分割割合候補(2)「100:100」に基づいて、並列計算部200の全ノード20のうち、並列計算制御部120によって10、000ノードが確保される。次に、マスターノード20mにプログラムA30が転送され外部記憶装置22に格納される。そして、マスターノード20mからスレーブノード20が起動されることにより、分割割合候補(2)「100:100」で分割された10、000ノードにおける各ノード20で、プログラムA30において処理区間の5ステップが実行される。
手順3(2)において、マスターノード20mが、分割割合(分割割合候補(2)「100:100」)と、プログラムA30を10、000ノードで5ステップ実行した経過時間(前処理の実行時間を含まない)と経過時間ファイル42(file2)に書き出し、経過時間ファイル42(file2)は外部記憶装置22に格納される。そして、マスターノード20mは、外部記憶装置22から経過時間ファイル42(file2)をフロントエンド計算機100に転送する。フロントエンド計算機100は、転送された経過時間ファイル42(file2)を外部記憶装置130に格納する。
図8の手順4において、フロントエンド計算機100の並列計算制御部120によって次のプログラム40cが実行される。
分割割合候補(3)でプログラム40aが実行される手順4について、前半部を手順4(1)で後半部を手順4(2)で説明する。手順4(1)において、分割割合候補(3)「20:500」に基づいて、並列計算部200の全ノード20のうち、並列計算制御部120によって10、000ノードが確保される。次に、マスターノード20mにプログラムA30が転送され外部記憶装置22に格納される。そして、マスターノード20mからスレーブノード20が起動されることにより、分割割合候補(3)「20:500」で分割された10、000ノードにおける各ノード20で、プログラムA30において処理区間の5ステップが実行される。
手順4(2)において、マスターノード20mが、分割割合(分割割合候補(3)「20:500」)と、プログラムA30を10、000ノードで5ステップ実行した経過時間(前処理の実行時間を含まない)と経過時間ファイル42(file3)に書き出し、経過時間ファイル42(file3)は外部記憶装置22に格納される。そして、マスターノード20mは、外部記憶装置22から経過時間ファイル42(file3)をフロントエンド計算機100に転送する。フロントエンド計算機100は、転送された経過時間ファイル42(file3)を外部記憶装置130に格納する。
図9の分割割合を評価する手順5において、並列計算制御部120は、分割割合評価プログラム50を外部記憶装置130から読み込んで実行することによって、経過時間ファイル42のfile1、file2、及びfile3の各々に記録されている分割割合(n1,n2)と経過時間との関係から最も効率的と考えられる最適な分割割合(n1,n2)を予測し、評価結果ファイル52(file4)に記録する。分割割合(n1,n2)は、2次元の分割を示し、n1は1次元目の分割数、n2は2次元目の分割数を示す。全分割数nは、n1×n2となる。
手順5にて、前述した手順2、3、及び4で確保している並列計算部200の10、000ノードは確保したままである。
最適な分割割合で実行する手順6において、並列計算制御部120は、手順2、3、及び4で確保している並列計算部200の10、000ノードに、プログラムAを所定の回数を実行させる。
終了処理を行う手順7において、マスターノード20mによって、プログラムA30の実行による計算結果を含む計算結果ファイル48(fileA)、及びログファイル49(log)が、フロントエンド計算装置100に転送され、外部記憶装置130に格納される。
次に、並列計算制御部120によって行われる第2並列計算処理について図10から図14で説明する。図10は、第2並列計算処理の一例を説明するためのフローチャート図である。図10において、並列計算制御部120は、実行シェルプログラム40を外部記憶装置130から読み込んで、マスターノード20mを介して割り付けたノード20にプログラムA30'を実行させる。
評価用プログラム34を含むプログラムA30'と評価用ファイル45(ファイル名「file5」)とが、並列計算制御部120によってマスターノード20mに転送される。評価用プログラム34は、候補毎に、分割割合候補と評価ステップ数に基づいて評価を行うプログラムである。
評価用ファイル45(ファイル名「file5」)には、評価用データ32が含まれている。この例では、(1)「1:1000」、(2)「10:1000」、及び(3)「25:40」が2軸分割の候補として指定される。また、評価ステップ数には、評価するための5ステップが指定される。
マスターノード20mの制御によりプログラムA30'が実行され、以降、プログラムA30'によって評価用プログラム34を含めた第2並列計算処理が実行される。ステップS51からS55までの処理が評価用プログラム34による処理に相当する。
マスターノード20mのプログラムA30'は、評価用ファイル45(file5)内の最初の分割割合候補に従って1から5ステップ目までの処理を実行する(ステップS51)。
ステップS51において、マスターノード20mのプログラムA30'は、フロントエンド計算装置100から転送され外部記憶装置22に格納した評価用ファイル45(file5)から最初の分割割合候補(1)「1:1000」を取得して、分割割合を「1:1000」に設定する(ステップS51−2)。
マスターノード20mのプログラムA30'は、割り付けられたスレーブノード20にプログラムA30'の繰り返し部分において1ステップから5ステップまでを実行させると共に、自身も1ステップから5ステップまでを実行し、経過時間t1を測定し、外部記憶装置22内の経過時間ファイル42に分割割合候補(1)「1:1000」と経過時間t1の値とを保存する(ステップS51−4)。
マスターノード20mのプログラムA30'は、評価用ファイル45(file5)内の次の分割割合候補に従って6から10ステップ目までの処理を実行する(ステップS52)。
ステップS52において、マスターノード20mのプログラムA30'は、外部記憶装置22に格納されている評価用ファイル45(file5)から次の分割割合候補(2)「10:100」を取得して、分割割合を「10:100」に設定する(ステップS52−2)。
マスターノード20mのプログラムA30'は、割り付けられたスレーブノード20にプログラムA30'の繰り返し部分において6ステップから10ステップまで実行させると共に、自身も6ステップから10ステップまで実行し、経過時間t2を測定し、外部記憶装置22内の経過時間ファイル42に分割割合候補(2)「10:100」と経過時間t2の値とを保存する(ステップS52−4)。
マスターノード20mのプログラムA30'は、評価用ファイル45(file5)内の次の分割割合候補に従って11から15ステップ目までの処理を実行する(ステップS53)。
ステップS53において、マスターノード20mのプログラムA30'は、外部記憶装置22に格納されている評価用ファイル45(file5)から次の分割割合候補(3)「25:40」を取得して、分割割合を「25:40」に設定する(ステップS53−2)。
マスターノード20mのプログラムA30'は、割り付けられたスレーブノード20にプログラムA30'の繰り返し部分において11ステップから15ステップまで実行させると共に、自身も11ステップから15ステップまで実行し、経過時間t3を測定し、外部記憶装置22内の経過時間ファイル42に分割割合候補(3)「25:40」と経過時間t3の値とを保存する(ステップS53−4)。
マスターノード20mで実行されているプログラムA30'は、マスターノード20mの外部記憶装置22に格納されている経過時間ファイル42から、評価のために実行した3タイプの分割割合と、各分割割合に対応する経過時間t1、t2、及びt3から最適な分割割合を決定する(ステップS54)。経過時間t1、t2、及びt3のうち最も短い時間を示す分割割合を最適な分割割合として決定してもよい。或いは、経過時間t1、t2、及びt3から最適な分割割合を予測してもよい。この場合、評価のために実行した分割割合候補(1)から(3)以外の分割割合となることもある。
マスターノード20mのプログラムA30'は、ステップS54で決定した最適な分割割合に従って配列分割形状を変更して(ステップS55)、16ステップ目から終了条件を満たすまで実行する(ステップS56)。そして、マスターノード20mは、第2並列計算処理を終了する。
図11から図14は、第2並列計算処理における処理フローを説明するための図である。図11から図14で示す手順によって一連の処理フローが示されている。この処理フローでは、図10に示す評価用データ32の例で説明する。
図11を参照すると、手順1において、外部記憶装置130から実行シェルプログラムファイル40'がフロントエンド計算装置100に読み込まれ、並列計算部200のマスターノード20mに対してプログラムA30'の実行が指示される。プログラムA30'と評価用ファイル45(file5)とがマスターノード20mの外部記憶装置22に転送される。
1から5ステップ目までを実行する手順2について、前半部を手順2(1)で後半部を手順2(2)で説明する。手順2(1)において、マスターノード20mは、フロントエンド計算装置100の外部記憶装置130から転送されたプログラムA30'を実行する。マスターノード20mのプロセッサ5によって実行されたプログラムA30'は、外部記憶装置22に格納されている評価用ファイル45(file5)から最初の分割割合候補(1)「1:1000」に従って並列計算部200の1、000ノードを割り付けて分割する。マスターノード20mからスレーブノード20を起動し、各スレーブノード上でもプログラムA30'を1から5ステップ目まで実行させる。
手順2(2)において、マスターノード20mは、1から5ステップ目までの(前処理の実行時間を含まない)経過時間の値を外部記憶装置22の経過時間ファイル42に保存する。
図12の6から10ステップ目までを実行する手順3について、前半部を手順3(1)で後半部を手順3(2)で説明する。手順3(1)において、マスターノード20mのプロセッサ5によって実行されたプログラムA30'は、外部記憶装置22に格納されている評価用ファイル45(file5)から次の分割割合候補(2)「10:100」を取得する。プログラムA30'は、分割割合候補(2)「10:100」に従って配列を再分割する。そして、マスターノード20mとスレーブノード20とで、6から10ステップ目までが実行される。
手順3(2)において、マスターノード20mは、6から10ステップ目までの(前処理の実行時間を含まない)経過時間の値を外部記憶装置22の経過時間ファイル42に保存する。
図13の11から15ステップ目までを実行する手順4について、前半部を手順4(1)で後半部を手順4(2)で説明する。手順4(1)において、マスターノード20mのプロセッサ5によって実行されたプログラムA30'は、外部記憶装置22に格納されている評価用ファイル45(file5)から3番目の分割割合候補(3)「25:40」を取得する。プログラムA30'は、分割割合候補(3)「25:40」に従って配列を再分割する。そして、マスターノード20mとスレーブノード20とで、11から15ステップ目までが実行される。
手順4(2)において、マスターノード20mは、11から15ステップ目までの(前処理の実行時間を含まない)経過時間の値を外部記憶装置22の経過時間ファイル42に保存する。
図14の分割割合を評価する手順5において、マスターノード20mのプロセッサ5によって実行されているプログラムAが外部記憶装置22内に格納されている経過時間ファイル42(file5)に記憶されている分割割合候補(1)、(2)、及び(3)の夫々に対応する経過時間の関係から最適な分割割合(n1及びn2の組み合せ)を予測計算して決定し、その値をスレーブノード20に転送する。
最適な分割割合で16ステップ目から実行する手順6において、プログラムAが、最適な分割割合(n1及びn2の値)に従って配列を再分割して、16ステップ目から実行する。
終了処理を行う手順7において、マスターノード20mによって、プログラムAの実行による計算結果を含む計算結果ファイル48(fileA)、及びログファイル49(log)が、フロントエンド計算装置100に転送され、外部記憶装置130に格納される。
第1並列計算処理では、分割割合候補毎に1ステップ目から5ステップ目までを処理し、また、決定した最適な分割割合を用いて、1ステップ目から5ステップ目までを処理するものである。一方、第2並列計算処理では、分割割合候補で実行したステップで得られた処理結果を無駄にすることがないため、並列処理を効率的に行うことができる。
また、第1並列計算処理は、第2並列計算処理と比べると、プログラムA30自体の修正箇所が少ないという利点がある。
第1及び第2並列計算処理において、並列計算部200の全ノード空間において割り当てられたノード空間を変えることなく、最適な分割割合の予測と本計算(又は、残りの計算の大部分)を実行することができるので、予測が正確である。
また、分割割合候補に従って順に分割割合を変え、最適な分割割合を探索する際に、プログラムの終了及び開始を繰り返さなくても実現できるため、計算時間を無駄にすることがない。
上述した処理に加えて、予測値に従って分割割合を決定したあとも経過時間(計算時間)を追跡し、予測時間と実時間が異なる場合(又は、別の分割割合の予測時間の方が短いとき)には、実測値を用いて再度、最適な分割割合を決定し直すことも可能である。
次に、図15及び図16で、本実施例に係る並列計算処理における配列の分割割当状況の変化について説明する。図15は、ノードに割り当てられた配列例を示す図である。図16は、ノードに割り当てられた配列の大きさを矩形で例示した図である。図15及び図16において、分割される配列Aの大きさは(1:100、1:1000)である。
図15(A)及び図16(A)は分割割合候補(10:1000)の場合を示す。図15(B)及び図16(B)は分割割合候補(100:100)の場合を示す。図15(C)及び図16(C)は分割割合候補(20:500)の場合を示す。
例えば、分割割合候補(10:1000)、分割割合候補(100:100)、そして分割割合候補(20:500)の順で第1又は第2並列計算処理が行われた場合、ノードに割り当てられた配列の変化は、図15(A)、図15(B)、そして図15(C)の順に変化する。また、ノードに割り当てられた配列の大きさの変化は、図16(A)、図16(B)、そして図16(C)の順に変化する。
図15(A)の分割割合候補(10:1000)の場合では、例えば、ノード0のマスターノードに配列Aの(1:10、1:1)部分が割り当てられる。他ノードにも配列Aの部分が同様の大きさで順次割り当てられる。この分割割合候補(10:1000)の場合では、図16(A)に例示される矩形により、各ノードにおいて、1次元方向に処理負荷が大きいことが示される。
図15(B)の分割割合候補(100:100)の場合では、例えば、ノード0のマスターノードに配列Aの(1:1、1:10)部分が割り当てられる。他ノードにも配列Aの部分が同様の大きさで順次割り当てられる。この分割割合候補(100:100)の場合では、図16(B)に例示される矩形により、各ノードにおいて、2次元方向に処理負荷が大きいことが示される。
図15(C)の分割割合候補(20:500)の場合では、例えば、ノード0のマスターノードに配列Aの(1:5、1:2)部分が割り当てられる。他ノードにも配列Aの部分が同様の大きさで順次割り当てられる。この分割割合候補(20:500)の場合では、図16(C)に例示される矩形により、各ノードにおいて、1次元方向及び2次元方向に均等な処理負荷であることが示される。
このように、1次元方向及び2次元方向の処理の負荷を変化させた割り当てによって、定めされた処理区間のステップ数を試行することにより、最適な分割割合を予測することができる。
本実施例における並列計算処理は、一定の処理を100回以上繰り返し行う大規模な並列処理による、シミュレーションプログラムの実行に適応することができる。例えば、各原子に働く力を計算し、そこからある時間間隔後の原子位置を計算し更新するという処理を繰り返すような古典的分子動力学法に基づくシミュレーションプログラム、或いは、電子状態の初期値を何らかの方法で与え、量子論に従ってそれを自己無撞着的に更新するというSCF(Self Consistent Field)処理を繰り返して電子状態を収束させる第一原理分子動力学法に基づくシミュレーションプログラム等に適応可能である。
具体的には、分割軸が2以上あり、最適な分割割合が未決定で、ほぼ同じ内容の処理を100ステップ以上繰り返し、最適な分割割合を精度よく予測することが難しいプログラムである。第一原理分子動力学計算プログラムはそのようなプログラムの代表的な例である。
波動関数Ψがエネルギーバンドの数だけあり、また各波動関数は基底関数(例えば平面波)で展開されているので、バンドと基底関数の係数のふたつの並列化軸(分割軸)を持つ。例えば、
Figure 2012221254

のように平面波で展開できる波動関数の場合、分割軸はi(バンド)とG(平面波波数ベクトル)である。
上述した第1並列計算処理における実行シェルプログラム40及び分割割合評価プログラム50の内容は、下記のような内容となる。
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
従って、この数1の計算例では、最適な分割割合は(25:400)となる。
また、他の計算例として、A(k,i)をフーリエ変換してB(j,i)を求め、この自乗をiに関して和を算出する、
Figure 2012221254

がある。n=100、かつ、iで和をとる範囲は1から1000とする。この数2は、ノード間でネットワーク通信をする計算例であり、1次元目及び2次元目の方向のネットワーク通信が発生する。
更に、他の計算例として、A(k,i)に行列をかけて更新する、
Figure 2012221254

がある。この数3の計算例では、2次元目の方向のネットワーク通信は発生しない。
本実施例における並列計算処理では、数1、数2、又は数3のような計算式を含むシミュレーションプログラム(プログラムA30又は30')そのものを2以上の分割割合候補毎に実行させて最適な分割割合を決定するため、全体(の計算時間)に占める割合における一定期間の演算効率の測定であっても、全体の演算効率を精度良く予測することができる。
ひとつのシミュレーションジョブの中で、処理を割り付けられると共に、ネットワーク6を介して相互に通信する複数のノードでなるノード空間を変更することなく、最適な分割割合を決定して本計算するため、ネットワーク空間上のノード配置の違いによる予測精度の乱れなどの問題を改善することができる。本実施例では、最適な分割割合を探るための複数回の予備計算を行うという非本質的な作業を必要としない。従って、ユーザは複数回の予備計算を行うための計算プログラムを開発する負担を削減することができる。
また、上述では、分割割合候補を3つとした例で説明したが、より多くの候補を用いて試行して最適な分割割合を予測するようにしてもよい。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
並列処理を行うノード空間の複数の分割軸に対する分割割合を変更してシミュレーションプログラムを試行し、該分割割合毎に経過時間を取得して記憶部に保存する試行手段と、
前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定する決定手段と、
前記ノード空間の分割割合を前記決定手段によって決定された前記最適な分割割合に設定して、前記シミュレーションプログラムを本実行する本実行手段とを有することを特徴とする並列処理最適化装置。
(付記2)
前記試行手段は、前記シミュレーションプログラムの初期設定時に前記分割割合に従って該シミュレーションプログラムに係る配列を分割することを特徴とする付記1記載の並列処理最適化装置。
(付記3)
前記試行手段は、異なる分割割合を指定した実行シェルプログラムを実行することによって、該分割割合を変更することを特徴とする付記1又は2記載の並列処理最適化装置。
(付記4)
前記試行手段は、前記シミュレーションプログラムの繰り返しの処理区間毎に前記分割割合を動的に変更しつつ継続して前記シミュレーションプログラムを試行し、
前記本実行手段は、前記試行手段から継続して前記シミュレーションプログラムを本実行することを特徴とする付記1記載の並列処理最適化装置。
(付記5)
前記最適な分割割合による本実行において、各処理区間の計算時間を計測し、予測時間との誤差が所定値以上となる場合には、再度最適化することを特徴とする付記4記載の並列処理最適化装置。
(付記6)
並列処理を行うノード空間でシミュレーションプログラムであって、
前記シミュレーションの実行中、繰り返しの処理区間毎に、前記ノード空間の複数の分割軸に対する分割割合を動的に変更しつつ該実行を継続して試行し、
前記分割割合毎に経過時間を取得して記憶部に保存し、
前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定し、
前記ノード空間の分割割合を前記決定された最適な分割割合に設定して、継続して本実行されるようにしたことを特徴とするプロセッサによって実行されるシミュレーションプログラム。
(付記7)
並列処理を行うノード空間の複数の分割軸に対する分割割合を変更してシミュレーションプログラムを試行し、分割割合毎に経過時間を取得して記憶部に保存し、
前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定し、
前記ノード空間の分割割合を前記決定された前記最適な分割割合に設定して、前記シミュレーションプログラムを本実行する並列処理最適化方法。
5 プロセッサ
6 ネットワーク
11 CPU
12 メモリユニット
13 表示ユニット
15 入力ユニット
16 通信ユニット
17 記憶装置
18 ドライバ
19 記憶媒体
20 ノード
20m マスターノード
30、30' プログラムA(シミュレーションプログラム)
40 実行シェルプログラム
42 経過時間ファイル
50 分割割合評価プログラム
52 評価結果ファイル
100 フロントエンド計算装置
120 並列計算制御部
130 外部記憶装置
200 並列計算部
1000 並列計算システム

Claims (5)

  1. 並列処理を行うノード空間の複数の分割軸に対する分割割合を変更してシミュレーションプログラムを試行し、該分割割合毎に経過時間を取得して記憶部に保存する試行手段と、
    前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定する決定手段と、
    前記ノード空間の分割割合を前記決定手段によって決定された前記最適な分割割合に設定して、前記シミュレーションプログラムを本実行する本実行手段とを有することを特徴とする並列処理最適化装置。
  2. 前記試行手段は、前記シミュレーションプログラムの初期設定時に前記分割割合に従って該シミュレーションプログラムに係る配列を分割することを特徴とする請求項1記載の並列処理最適化装置。
  3. 前記試行手段は、異なる分割割合を指定した実行シェルプログラムを実行することによって、該分割割合を変更することを特徴とする請求項1又は2記載の並列処理最適化装置。
  4. 前記試行手段は、前記シミュレーションプログラムの繰り返しの処理区間毎に前記分割割合を動的に変更しつつ継続して前記シミュレーションプログラムを試行し、
    前記本実行手段は、前記試行手段から継続して前記シミュレーションプログラムを本実行することを特徴とする請求項1記載の並列処理最適化装置。
  5. 並列処理を行うノード空間でシミュレーションプログラムであって、
    前記シミュレーションの実行中、繰り返しの処理区間毎に、前記ノード空間の複数の分割軸に対する分割割合を動的に変更しつつ該実行を継続して試行し、
    前記分割割合毎に経過時間を取得して記憶部に保存し、
    前記記憶部に保存された前記経過時間の比較によって最適な分割割合を決定し、
    前記ノード空間の分割割合を前記決定された最適な分割割合に設定して、継続して本実行されるようにしたことを特徴とするプロセッサによって実行されるシミュレーションプログラム。
JP2011086737A 2011-04-08 2011-04-08 並列処理最適化装置及びシミュレーションプログラム Withdrawn JP2012221254A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011086737A JP2012221254A (ja) 2011-04-08 2011-04-08 並列処理最適化装置及びシミュレーションプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011086737A JP2012221254A (ja) 2011-04-08 2011-04-08 並列処理最適化装置及びシミュレーションプログラム

Publications (1)

Publication Number Publication Date
JP2012221254A true JP2012221254A (ja) 2012-11-12

Family

ID=47272675

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011086737A Withdrawn JP2012221254A (ja) 2011-04-08 2011-04-08 並列処理最適化装置及びシミュレーションプログラム

Country Status (1)

Country Link
JP (1) JP2012221254A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012221584A1 (de) 2012-10-03 2014-04-03 Honda Motor Co., Ltd. Verfahren zum Herstellen einerPolypropylen-Zusammensetzung und Polypropylen-Zusammensetzung
CN106842171A (zh) * 2016-12-20 2017-06-13 中国船舶重工集团公司第七〇五研究所 一种基于任务自动分配的主被动水声阵列信号仿真并行计算方法
KR101918051B1 (ko) 2017-05-17 2018-11-15 에스케이하이닉스 주식회사 Epoch 기반의 시뮬레이션 방법
CN110858149A (zh) * 2018-08-22 2020-03-03 中国石油化工股份有限公司 并行正演数值模拟自优化方法及系统

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012221584A1 (de) 2012-10-03 2014-04-03 Honda Motor Co., Ltd. Verfahren zum Herstellen einerPolypropylen-Zusammensetzung und Polypropylen-Zusammensetzung
CN106842171A (zh) * 2016-12-20 2017-06-13 中国船舶重工集团公司第七〇五研究所 一种基于任务自动分配的主被动水声阵列信号仿真并行计算方法
CN106842171B (zh) * 2016-12-20 2019-06-18 中国船舶重工集团公司第七一五研究所 一种基于任务自动分配的主被动水声阵列信号仿真并行计算方法
KR101918051B1 (ko) 2017-05-17 2018-11-15 에스케이하이닉스 주식회사 Epoch 기반의 시뮬레이션 방법
CN110858149A (zh) * 2018-08-22 2020-03-03 中国石油化工股份有限公司 并行正演数值模拟自优化方法及系统

Similar Documents

Publication Publication Date Title
US10963787B2 (en) Systems and methods for generation of sparse code for convolutional neural networks
US11216732B2 (en) Systems and methods for generation of sparse code for convolutional neural networks
JP6176111B2 (ja) 分散処理管理装置及び分散処理管理方法
Phillips et al. A CUDA implementation of the High Performance Conjugate Gradient benchmark
US9916283B2 (en) Method and system for solving a problem involving a hypergraph partitioning
US20150012629A1 (en) Producing a benchmark describing characteristics of map and reduce tasks
JP2012221254A (ja) 並列処理最適化装置及びシミュレーションプログラム
KR102452206B1 (ko) 빅데이터 분석을 위한 인공지능 기반의 클라우드 최적화 장치 및 방법
Kim et al. MPEC: Distributed matrix multiplication performance modeling on a scale-out cloud environment for data mining jobs
Ilić et al. High-performance computing on heterogeneous systems: Database queries on CPU and GPU
Shichkina et al. Applying the list method to the transformation of parallel algorithms into account temporal characteristics of operations
WO2021054990A1 (en) Systems and methods for generation of sparse code for convolutional neural networks
Sakurai et al. A sparse matrix library with automatic selection of iterative solvers and preconditioners
Ma et al. GPU parallelization of unstructured/hybrid grid ALE multigrid unsteady solver for moving body problems
KR20200010644A (ko) 컴퓨터 수행 가능한 클라우드 기반의 인공지능 연산 서비스 방법
JP5120778B2 (ja) 分散メモリ型マルチプロセッサシステム、マスク付き逆シフト通信方法及びプログラム
Wang et al. Speeding up profiling program’s runtime characteristics for workload consolidation
Zhao et al. AutoGraph: Optimizing DNN computation graph for parallel GPU kernel execution
Banković Parallelizing simplex within SMT solvers
Orland et al. A case study on addressing complex load imbalance in OpenMP
Benitez et al. Parallel performance model for vertex repositioning algorithms and application to mesh partitioning
WO2011090032A1 (ja) 並列処理プログラム生成方法、並列処理プログラム生成プログラム、及び並列処理プログラム生成装置
Freire et al. A GPU method for the analysis stage of the SPTRSV kernel
JP6183359B2 (ja) 設計支援装置、設計支援方法及びプログラム
Zorin et al. Simulated annealing algorithm for job shop scheduling on reliable real-time systems

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20140701