Main Content

複数のシミュレーション ワークフローの比較

複数のシミュレーションのセットを実行する場合、それらを並列プール内の複数の MATLAB® ワーカー上で並列実行できます。複数のシミュレーションを実行するには、parsim'RunInBackground' オプションをオンにした parsim、または batchsim を使用できます。

フロー チャートでは、parsimRunInBackground をもつ parsim および batchsim を使用した複数のシミュレーションの実行の違いを示します。

parsim および batchsim コマンドは、Parallel Computing Toolbox™ ライセンスを使用して、シミュレーションを並列実行します。parsim は、並列プールが作成できない場合または Parallel Computing Toolbox ライセンスが利用できない場合、シミュレーションを逐次実行します。batchsim コマンドは、Parallel Computing Toolbox ライセンスがないと実行できません。

parsim ワークフロー

複数のシミュレーションを実行するために Parallel Computing Toolbox で parsim コマンドを使用すると、並列プールが自動的に設定され、シミュレーションが並列実行されます。クライアントは常に MATLAB ワーカーに関連付けられています。

標準 parsim ワークフロー

  1. モデルへの変更を指定するために Simulink.SimulationInput オブジェクトの配列 in を作成します。

  2. 複数のシミュレーションの実行に必要な 1 回限りの設定を指定します。SetupFcn および TransferBaseWorkspaceVariables を使用して、並列ワーカー上で設定を実行します。

  3. parsim(in) を実行して、これらの複数のシミュレーションを並列実行します。並列プールが存在しない場合、parsim が作成します。parsim は既定の設定を使用します。

  4. parsim(in,'SimulationManager','on') のように parsim'SimulationManager' 引数を 'on' に設定して、シミュレーション マネージャーを開くことができます。シミュレーション マネージャーにより、実行しているシミュレーションを監視し、シミュレーションの出力が準備できるとこれにアクセスできます。シミュレーション マネージャーによって、ワーカー上で実行しているシミュレーションに関する情報が得られます。詳細については、シミュレーション マネージャーを参照してください。

  5. すべてのシミュレーションが完了すると、Simulink.SimulationOutput オブジェクトの配列が得られます。

制限

  • MATLAB セッションを閉じると、ワーカー上のシミュレーションが停止し、部分的な結果を取得できません。

RunInBackground ワークフローでの parsim

  1. モデルへの変更を指定するために Simulink.SimulationInput オブジェクトの配列 in を作成します。

  2. 複数のシミュレーションの実行に必要な 1 回限りの設定を指定します。SetupFcn および TransferBaseWorkspaceVariables を使用して、並列ワーカー上で設定を実行します。

  3. parsim(in,'RunInBackground','on') のように RunInBackground オプションを 'on' に設定して parsim を実行します。'RunInBackground' オプションを 'on' に設定してシミュレーションを非同期で実行します。これにより、MATLAB コマンド プロンプトを利用し続けることができ、他のタスクでの作業が可能です。

  4. 'RunInBackground' オプションを 'on' に設定すると、parsimSimulink.Simulation.Future オブジェクトを返します。このオブジェクトをポーリングして、シミュレーションのステータスの確認、シミュレーション完了時の出力の取得またはシミュレーションのキャンセルを行うことができます。詳細については、Simulink.Simulation.Future を参照してください。

制限

  • MATLAB セッションを閉じると、ワーカー上のシミュレーションが停止し、部分的な結果を取得できません。future オブジェクトが消去されると、その後、シミュレーションの結果にアクセスできなくなります。

  • Future オブジェクトで fetchNext メソッド ループをシミュレーション マネージャーと共に使用すると、Future オブジェクトの取得で競合が発生します。完了したシミュレーションの出力を取得するには、fetchNext メソッド ループまたはシミュレーション マネージャーのいずれかを使用します。

batchsim ワークフロー

バッチ ワークフローは通常、MATLAB ワーカー上でシミュレーションを実行するジョブを送信し、その後それらのシミュレーションの結果にアクセスすることを意味します。シミュレーションをバッチで実行する場合、シミュレーションの実行を計算クラスターにオフロードします。バッチ処理の詳細については、シンプルなバッチ処理 (Parallel Computing Toolbox)を参照してください。

  1. モデルへの変更を指定するために Simulink.SimulationInput オブジェクトの配列 in を作成します。

  2. 複数のシミュレーションの実行に必要な 1 回限りの設定を指定します。SetupFcn および TransferBaseWorkspaceVariables を使用して、並列ワーカー上で設定を実行します。

  3. クラスターまたはデスクトップ バックグラウンドで実行するには、batchsim を呼び出し、シミュレーションの実行をオフロードします。batchsim では、parsim コマンドおよび batch コマンドと互換性のある大部分の引数を使用できます。詳細については、batchsim を参照してください。

    batchsim を使用して、シミュレーションを MATLAB ワーカーにオフロードします。バッチ ジョブを複数のワーカーで実行するには、batchsim(in, 'Pool', N) のように、ジョブの並列プールに作成するワーカーの数を指定する整数であるプール サイズ N を指定します。少なくとも N+1 個のワーカーがクラスターで利用できなければなりません。プール サイズが指定されていない場合、batchsim(in) は、既定のクラスター プロファイルで指定されたクラスター内の単一のワーカー上でシミュレーションを実行します。

    メモ

    Parallel Computing Toolbox ライセンスが利用できない場合に、プール サイズを指定して使用すると、batchsim エラーが発生します。

  4. batchsim がシミュレーションを計算クラスターにオフロードすると、バッチ ジョブの処理中に他のタスクを実行したり、クライアントの MATLAB を閉じて、バッチ ジョブに後でアクセスしたりできます。

  5. バッチ ジョブの送信時に、batchsim はジョブ オブジェクトを返します。これには、後でバッチ ジョブにアクセスする際に使用できるジョブ ID およびその他の情報が含まれています。このジョブに再度アクセスすると、シミュレーションの進行状況を確認できます。

制限

  • クライアント セッションがワーカーに関連付けられていないため、ジョブが完了しないと出力にアクセスできません。

  • batchsim では、シミュレーション マネージャーを使用してシミュレーションを監視できません。バッチ ジョブの場合、ジョブがキューに入っているか、処理中か、完了しているかを示すバッチ ジョブ モニターを使用できます。詳細については、ジョブ モニター (Parallel Computing Toolbox)を参照してください。

参考

関数

クラス

ツール

関連するトピック