複数のシミュレーション ワークフローの比較
複数のシミュレーションのセットを実行する場合、それらを並列プール内の複数の 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)