このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
複数のシミュレーションのセットを実行する場合、それらを並列プール内の複数の 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)を参照してください。
batchsim
| getSimulationJobs
| parsim
| Simulation
Manager
| batch
(Parallel Computing Toolbox) | parcluster
(Parallel Computing Toolbox)