複数のシミュレーション ワークフローの比較
複数のシミュレーションのセットを実行する場合、それらを並列プール内の複数の MATLAB® ワーカー上で並列実行できます。複数のシミュレーションを実行するには、parsim
、'RunInBackground'
オプションをオンにした parsim
、または batchsim
を使用できます。
フロー チャートでは、parsim
、RunInBackground
をもつ parsim
および batchsim
を使用した複数のシミュレーションの実行の違いを示します。
parsim
および batchsim
コマンドは、Parallel Computing Toolbox™ ライセンスを使用して、シミュレーションを並列実行します。parsim
は、並列プールが作成できない場合または Parallel Computing Toolbox ライセンスが利用できない場合、シミュレーションを逐次実行します。batchsim
コマンドは、Parallel Computing Toolbox ライセンスがないと実行できません。
parsim
ワークフロー
複数のシミュレーションを実行するために Parallel Computing Toolbox で parsim
コマンドを使用すると、並列プールが自動的に設定され、シミュレーションが並列実行されます。クライアントは常に MATLAB ワーカーに関連付けられています。
標準 parsim
ワークフロー
モデルへの変更を指定するために
Simulink.SimulationInput
オブジェクトの配列in
を作成します。複数のシミュレーションの実行に必要な 1 回限りの設定を指定します。
SetupFcn
およびTransferBaseWorkspaceVariables
を使用して、並列ワーカー上で設定を実行します。parsim(in)
を実行して、これらの複数のシミュレーションを並列実行します。並列プールが存在しない場合、parsim
が作成します。parsim
は既定の設定を使用します。parsim(in,'SimulationManager','on')
のようにparsim
の'SimulationManager'
引数を'on'
に設定して、シミュレーション マネージャーを開くことができます。シミュレーション マネージャーにより、実行しているシミュレーションを監視し、シミュレーションの出力が準備できるとこれにアクセスできます。シミュレーション マネージャーによって、ワーカー上で実行しているシミュレーションに関する情報が得られます。詳細については、シミュレーション マネージャーを参照してください。すべてのシミュレーションが完了すると、
Simulink.SimulationOutput
オブジェクトの配列が得られます。
制限
MATLAB セッションを閉じると、ワーカー上のシミュレーションが停止し、部分的な結果を取得できません。
RunInBackground
ワークフローでの parsim
モデルへの変更を指定するために
Simulink.SimulationInput
オブジェクトの配列in
を作成します。複数のシミュレーションの実行に必要な 1 回限りの設定を指定します。
SetupFcn
およびTransferBaseWorkspaceVariables
を使用して、並列ワーカー上で設定を実行します。parsim(in,'RunInBackground','on')
のようにRunInBackground
オプションを'on'
に設定してparsim
を実行します。'RunInBackground'
オプションを'on'
に設定してシミュレーションを非同期で実行します。これにより、MATLAB コマンド プロンプトを利用し続けることができ、他のタスクでの作業が可能です。'RunInBackground'
オプションを'on'
に設定すると、parsim
はSimulink.Simulation.Future
オブジェクトを返します。このオブジェクトをポーリングして、シミュレーションのステータスの確認、シミュレーション完了時の出力の取得またはシミュレーションのキャンセルを行うことができます。詳細については、Simulink.Simulation.Future
を参照してください。
制限
MATLAB セッションを閉じると、ワーカー上のシミュレーションが停止し、部分的な結果を取得できません。
future
オブジェクトが消去されると、その後、シミュレーションの結果にアクセスできなくなります。Future
オブジェクトでfetchNext
メソッド ループをシミュレーション マネージャーと共に使用すると、Future
オブジェクトの取得で競合が発生します。完了したシミュレーションの出力を取得するには、fetchNext
メソッド ループまたはシミュレーション マネージャーのいずれかを使用します。
batchsim
ワークフロー
バッチ ワークフローは通常、MATLAB ワーカー上でシミュレーションを実行するジョブを送信し、その後それらのシミュレーションの結果にアクセスすることを意味します。シミュレーションをバッチで実行する場合、シミュレーションの実行を計算クラスターにオフロードします。バッチ処理の詳細については、シンプルなバッチ処理 (Parallel Computing Toolbox)を参照してください。
モデルへの変更を指定するために
Simulink.SimulationInput
オブジェクトの配列in
を作成します。複数のシミュレーションの実行に必要な 1 回限りの設定を指定します。
SetupFcn
およびTransferBaseWorkspaceVariables
を使用して、並列ワーカー上で設定を実行します。クラスターまたはデスクトップ バックグラウンドで実行するには、
batchsim
を呼び出し、シミュレーションの実行をオフロードします。batchsim
では、parsim
コマンドおよびbatch
コマンドと互換性のある大部分の引数を使用できます。詳細については、batchsim
を参照してください。batchsim
を使用して、シミュレーションを MATLAB ワーカーにオフロードします。バッチ ジョブを複数のワーカーで実行するには、batchsim(in, 'Pool', N)
のように、ジョブの並列プールに作成するワーカーの数を指定する整数であるプール サイズN
を指定します。少なくともN+1
個のワーカーがクラスターで利用できなければなりません。プール サイズが指定されていない場合、batchsim(in)
は、既定のクラスター プロファイルで指定されたクラスター内の単一のワーカー上でシミュレーションを実行します。メモ
Parallel Computing Toolbox ライセンスが利用できない場合に、プール サイズを指定して使用すると、
batchsim
エラーが発生します。batchsim
がシミュレーションを計算クラスターにオフロードすると、バッチ ジョブの処理中に他のタスクを実行したり、クライアントの MATLAB を閉じて、バッチ ジョブに後でアクセスしたりできます。バッチ ジョブの送信時に、
batchsim
はジョブ オブジェクトを返します。これには、後でバッチ ジョブにアクセスする際に使用できるジョブ ID およびその他の情報が含まれています。このジョブに再度アクセスすると、シミュレーションの進行状況を確認できます。
制限
クライアント セッションがワーカーに関連付けられていないため、ジョブが完了しないと出力にアクセスできません。
batchsim
では、シミュレーション マネージャーを使用してシミュレーションを監視できません。バッチ ジョブの場合、ジョブがキューに入っているか、処理中か、完了しているかを示すバッチ ジョブ モニターを使用できます。詳細については、ジョブ モニター (Parallel Computing Toolbox)を参照してください。
参考
関数
parsim
|batchsim
|batch
(Parallel Computing Toolbox) |parcluster
(Parallel Computing Toolbox) |getSimulationJobs
クラス
ツール
関連するトピック
- Running Multiple Simulations
- 家の熱モデルの parsim を使用した並列シミュレーションの実行
- 並列シミュレーションの実行
- シミュレーション マネージャーを使用した結果の解析
- バッチ処理 (Parallel Computing Toolbox)