Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

batchsim

計算クラスターで実行するシミュレーションをオフロード

説明

simJob = batchsim(in) は、単一のワーカーでバッチ ジョブを実行し、SimulationInput オブジェクト in で指定された入力を使用してモデルをシミュレートします。

simJob = batchsim(myCluster,in) は、クラスター オブジェクト myCluster で識別されたクラスターでバッチ ジョブを実行します。クラスター プロファイルが指定されない場合、batchsim では既定のクラスター プロファイルを並列基本設定でセットアップとして使用します。詳細については、クラスターの検出とクラスター プロファイルの使用 (Parallel Computing Toolbox)を参照してください。

simJob = batchsim(...,Name,Value) は、SimulationInput オブジェクトで指定された入力および Name,Value のペアとして指定されたオプションを使用してモデルをシミュレーションするバッチ ジョブを実行します。

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

batchsim コマンドは、Parallel Computing Toolbox™ ライセンスおよび MATLAB Parallel Server™ ライセンスを使用して計算クラスターでシミュレーションを実行します。batchsim は、並列プールが作成できない場合、シミュレーションを逐次実行します。Parallel Computing Toolbox ライセンスが使用できない場合、batchsim エラーが出力されます。

すべて折りたたむ

この例では、並列シミュレーションをバッチで実行する方法を示します。batchsim でシミュレーションを計算クラスターにオフロードすると、バッチ ジョブの処理中に他のタスクを実行するか、クライアント MATLAB を閉じ、バッチ ジョブに後からアクセスできます。

この例では、ex_sldemo_househeat モデルを使用して、シミュレーションをバッチで実行し、さまざまな温度の指定値のモデル動作を確認します。

モデルを開きます。

openExample('simulink/OpenTheModelExample');
open_system('ex_sldemo_househeat');
load_system('ex_sldemo_househeat')

さまざまな温度に対して一連の値を定義します。ここで、setPointValues は温度の標準範囲です。このベクトルの長さを使用して、次の手順で Simulink.SimulationInput オブジェクトの配列を作成できます。

setPointValues = 65:2:85;
spv_Length = length(setPointValues);

setPointValues を使用して、Simulink.SimulationInput オブジェクトの配列を初期化します。

in(1:spv_Length) = Simulink.SimulationInput('ex_sldemo_househeat');
for i = 1:1:spv_Length 
    in(i) = in(i).setBlockParameter('ex_sldemo_househeat/Set Point',...
        'Value',num2str(setPointValues(i)));
end

使用するワーカー数のプール サイズを指定します。シミュレーションの並列実行に使用されるワーカー数に加え、ヘッド ワーカーが必要です。この例では、3 つのワーカーで並列シミュレーションの 1 つのバッチジョブを実行できると仮定します。ジョブ オブジェクトは、以下のように有用なメタデータを返します。ジョブ ID を使用して、後で任意のマシンからジョブ オブジェクトにアクセスできます。NumWorkers は、シミュレーションを実行中のワーカー数を示します。NumWorkers は常に、引数 'Pool' で指定されたワーカー数に追加のヘッド ワーカーを加えた数になります。'Pool'3 に設定されています。'Pool' の値は、使用可能なワーカー数に基づいて変更できます。

simJob = batchsim(in,'Pool',3)
                  ID: 1
                Type: pool
          NumWorkers: 4
            Username: #####
               State: running
      SubmitDateTime: ##-###-#### ##:##:##
       StartDateTime: 
    Running Duration: 0 days 0h 0m 0s

fetchOutputs メソッドを使用してバッチ ジョブの結果にアクセスします。fetchOutputs メソッドは、ワーカーから結果を取得し、Simulink.SimulationOuput オブジェクトの配列を返します。

out = fetchOutputs(simJob)
1x11 Simulink.SimulationOutput array

入力引数

すべて折りたたむ

シミュレーション用のモデルの変更を指定するために使用される Simulink.SimulationInput オブジェクトまたは Simulink.SimulationInput オブジェクトの配列として指定されます。

例: in = Simulink.SimulationInput('vdp')

バッチ ジョブが実行されるクラスターの指定に使用されるクラスター オブジェクト。

名前と値の引数

例: 'Pool', 5

オプションのコンマ区切りされた Name,Value のペアの引数を指定します。Name は引数名、Value は対応する値です。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

文字ベクトル、文字ベクトルの cell 配列または配列で指定され、シミュレーションの実行前にワーカーの MATLAB 検索パスに追加されるパスを定義します。既定の検索パスは、ワーカー上とクライアント上で異なる場合があります。パスが異なる原因は、現在の作業フォルダー (pwd)、プラットフォームまたはネットワーク ファイル システムへのアクセスが異なるためである可能性があります。AdditionalPaths プロパティにより、必要なコード ファイル、データ ファイル、モデル ファイルなどをワーカーが正しい場所で検索するようにできます。

並列プールに添付する追加ファイルの cell 配列として指定します。

クライアント パス上でユーザーが追加したエントリを各ワーカー パスに追加するかどうかを制御するために true または false として指定します。

コード ファイルがジョブに自動的に付加されるかどうかを制御するために true または false として指定します。

diary を収集するかどうかを示す true または false として指定されます。

function handle'CleanupFcn' に指定して、シミュレーションの完了後、ワーカーごとに 1 回実行します。

クライアント セッションからワーカーにコピーされる環境変数の名前を指定します。ここで指定した名前は、該当する並列プロファイルで指定された EnvironmentVariables プロパティに追加され、環境変数の完全なリストが生成されます。リストされているが設定されていない変数はすべて、ワーカーにコピーされません。これらの環境変数は、バッチ ジョブが存在する期間にわたってワーカーで設定されます。

ManageDependencies'on' に設定されているときは、必要に応じてモデルの依存関係が自動的に並列ワーカーに送信されます。ManageDependencies'off' に設定されているときは、モデルの依存関係が並列プールに明示的に付加されます。

バッチ ジョブ自体を実行するワーカー "以外に"、ジョブ用に並列プールに加えられるワーカーの数を指定する整数。シミュレーションでは、このプールが実行に使用されます。プールには、バッチを実行しているワーカーに加えて N 個のワーカーが必要であるため、クラスターに少なくとも N+1 個の使用可能なワーカーがなければなりません。

クラスターの識別に使用されるクラスター プロファイルの名前。このオプションを省略した場合は、既定のプロファイルがクラスターの特定に使用され、ジョブおよびタスクのプロパティに適用されます。

function handle'SetupFcn' に指定して、シミュレーションの開始前にワーカーごとに 1 回実行します。

メモ

コンパイル エラーを回避するには、'LoadExternalInput' を 'off' に設定するか、buildRapidAcceleratorTarget を使用している場合は指定した外部入力が使用できることを確認します。

'on' に設定すると、コマンド ウィンドウのシミュレーションの進行状況が Simulink.Simulation.Job オブジェクトの diary にコピーされます。'off' に設定すると、進行状況は非表示になります。

'StopOnError''on' に設定すると、エラーが発生した場合にシミュレーションの実行が停止します。

TransferBaseWorkspaceVariablestrue に設定されている場合、モデルに使用される変数とベース ワークスペースに定義されている変数は並列ワーカーに転送されます。

UseFastRestarttrue に設定されている場合、シミュレーションは高速リスタートを使用してワーカーで実行されます。

メモ

batchsim を使用する場合は、UseFastRestart オプションを使用し、FastRestart オプションは使用しないでください。詳細については、高速リスタートのご利用の前にを参照してください。

出力引数

すべて折りたたむ

送信済みのバッチ ジョブのメタデータを含むオブジェクト。ID を使用してジョブ オブジェクトをポーリングし、シミュレーションのステータスを確認するか、ジョブの完了時に出力にアクセスします。

拡張機能

バージョン履歴

R2018b で導入

参考

関数

クラス