Main Content

batchsim

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

説明

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

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

simJob = batchsim(___,Name=Value) は、SimulationInput オブジェクトで指定された入力と、1 つ以上の名前と値の引数を使用して指定されたオプションを使用してモデルをシミュレートするバッチ ジョブを実行します。

関数 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")

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

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

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

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

使用するワーカー数のプール サイズを指定します。シミュレーションの並列実行に使用されるワーカー数に加え、ヘッド ワーカーが必要です。この例では、3 つのワーカーで並列シミュレーションの 1 つのバッチ ジョブを実行できると仮定します。ジョブ オブジェクトには有用なメタデータが含まれています。ジョブ ID を使用すると、後で任意のマシンからジョブ オブジェクトにアクセスできます。NumWorkers は、シミュレーションを実行しているワーカーの数を示します。NumWorkers は常に、名前と値の引数 Pool を使用して指定されたワーカーおよび追加のヘッド ワーカーの総数です。この例では、Pool3 に設定されています。ワーカーの可用性に基づいて 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 オブジェクトの配列として指定します。SimulationInput オブジェクトには、各シミュレーションで使用する初期状態、外部入力、変数、およびパラメーター値が保存されます。

バッチ シミュレーションを実行するクラスター。parallel.Cluster (Parallel Computing Toolbox) オブジェクトとして指定します。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: Pool=5

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

並列プールに付加するファイル。文字ベクトルの cell 配列として指定します。

クライアント パスのカスタムの追加項目を各ワーカー パスに追加するオプション。"true" または "false" として指定します。

コード ファイルをジョブに自動的に付加するオプション。"true" または "false" として指定します。

diary を収集するオプション。"true" または "false" として指定します。

シミュレーションの実行後にワーカーごとに 1 回実行される関数。関数ハンドルとして指定します。

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

モデルの依存関係を管理するオプション。"on" または "off" として指定します。ManageDependencies"on" に設定されているときは、必要に応じてモデルの依存関係が自動的に並列ワーカーに送信されます。ManageDependencies"off" に設定されているときは、モデルの依存関係を並列プールに明示的に付加します。

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

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

シミュレーションの開始前にワーカーごとに 1 回実行される関数。関数ハンドルとして指定します。

メモ

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

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

シミュレーション エラーが発生した場合に残りのシミュレーションをスキップするオプション。"off" または "on" として指定します。引数 StopOnError"on" として指定すると、シミュレーション エラーが発生した場合にシミュレーションの実行が停止します。

変数を並列ワーカーに転送するオプション。"off" または "on" として指定します。TransferBaseWorkspaceVariables"on" に設定されている場合、モデルに使用される変数とベース ワークスペースに定義されている変数は並列ワーカーに転送されます。

シミュレーションで高速リスタートを使用するオプション。"off" または "on" として指定します。UseFastRestart"on" に設定されている場合、シミュレーションは高速リスタートを使用してワーカーで実行されます。

出力引数

すべて折りたたむ

バッチジョブのメタデータとシミュレーション出力へのアクセス。Simulink.Simulation.Job オブジェクトとして返されます。Simulink.Simulation.Job オブジェクトのプロパティは、バッチ ジョブの構成や進行状況に関する情報など、バッチ ジョブのメタデータを提供します。State プロパティを使用してバッチ ジョブのステータスを確認します。

バッチ シミュレーションの出力にアクセスするには、関数 fetchOutputs を使用します。

拡張機能

バージョン履歴

R2018b で導入

参考

関数

オブジェクト