Simulink モデルを Parallel Computing Toolbox で分散して実行できますか?
4 views (last 30 days)
Show older comments
MathWorks Support Team
on 26 Apr 2013
Edited: MathWorks Support Team
on 20 Nov 2020
Simulink モデルのシミュレーションに関して、以下のいずれかの条件下で、Parallel Computing Toolbox を使って処理を分散できるかどうか、教えてください。
1. 1つの Simulink モデルを異なるコア、プロセッサーもしくはクラスターマシン上で実行する。モデルの実行は、それぞれ異なる独立なパラメータ、データセットにて実行する。
2. 複数の Simulink モデルを異なるコア、プロセッサー、もしくはクラスターマシン上で実行する。
Accepted Answer
MathWorks Support Team
on 20 Nov 2020
Edited: MathWorks Support Team
on 20 Nov 2020
Parallel Computing Toolbox を用いて Simulink モデルを並列処理で実行する方法として、主に
1. PARFOR 関数を使用して並列にモデルを実行する方法
2. 各ワーカーにジョブを割り当てる方法
があります。以下、それぞれについて説明します。
1. PARFOR 関数を使用して並列にモデルを実行する方法
サンプルファイル parfor_example.zip を、ページ下部よりダウンロードできます。 ZIP ファイルを解凍すると、以下の 2 つのファイルがあります。
- test_parfor.m: PARFOR 内でシミュレーションを実行するプログラム
- sys_r10b.mdl: サンプルモデル(R2010b にて作成)
動作を確認するには、2つのファイルをカレントディレクトリに保存後、以下のコマンドを実行してください。
matlabpool open
test_parfor
PARFOR 関数の詳細については、>>doc parfor よりヘルプドキュメントをご覧下さい。
2. 各ワーカーにジョブを割り当てる方法
まず、ジョブを分散させるためには、以下の条件が満たされている必要があります。
- Simulink モデルの .mdl ファイルは、各ワーカーに対して、分散されたジョブにおいて個々に独立である必要があります。またモデルが依存するその他のファイルも同様です。全てのネットワークパスの依存関係がある場合は、指定されている必要があります。
- 各ワーカー上でモデルを独立に実行させるために SIM コマンドを記述した MATLAB ファンクションを記述します。
サンプルファイル job_example.zip を、ページ下部よりダウンロードできます。 ZIP ファイルを解凍すると、以下の 4 つのファイルがあります。
- samp_mpmd.m: 分散処理を記述したメインの MATLAB スクリプト
- samp_mpmd_R2012a_or_later.m: samp_mpmd.m をR2012a 以降用に書き換えたもの
- mysimfunc.m: model を実行するための MATLAB ファンクション
- sys1.mdl: サンプルモデル 1 (R2010b にて作成)
- sys2.mdl: サンプルモデル 2 (R2010b にて作成)
以下の例では、2つのローカルワーカー上で、2 つの Simulink モデルに対して、別々のデータセットでシミュレーションを行います。
動作を確認するには、4つのファイルをカレントディレクトリに保存し、samp_mpmd.m を実行してください。
なお、単一のマルチコアマシンと対照的に、クラスターコンピュータ上で Simulink のシミュレーションを分散させて実行することが推奨されています。これは、MATLAB の分散処理についても同じことが言えます。それぞれの実行時間は、各ワーカーにおける通信や初期化のオーバーヘッドをはるかに上回るため、クラスターマシンにそれぞれ大規模なシミュレーションを分散させることで、処理時間の短縮に繋がります。
単一のマルチコアマシン上では、その他の重要な制約要素、例えば全てのコアは一つのメモリバスを共有するといった要素が作用します。
関連する情報が以下の URL よりご覧いただけます。
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!