ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

batch

ワーカー上で MATLAB スクリプトまたは関数を実行する

構文

j = batch('aScript')
j = batch(myCluster,'aScript')
j = batch(fcn,N,{x1, ..., xn})
j = batch(myCluster,fcn,N,{x1,...,xn})
j = batch(...,'p1',v1,'p2',v2,...)

引数

j

バッチ ジョブ オブジェクト

'aScript'

ワーカーで評価する MATLAB コードのスクリプト

myCluster

クラスター計算リソースを表すクラスター オブジェクト

fcn

ワーカーで評価される関数ハンドルまたは関数名

N

評価される関数の出力引数の数

{x1, ..., xn}

関数の入力引数からなるセル配列

p1, p2

ジョブの動作を制御するオブジェクト プロパティや他の引数

v1, v2

対応するオブジェクト プロパティまたは引数の初期値

説明

j = batch('aScript') は既定のクラスター プロファイルによって指定されたクラスターのワーカー上で、ファイル aScript.m のスクリプト コードを実行します(メモ: スクリプト名の引数にファイル拡張子 .m を含めないでください)。この関数は、スクリプトを実行するジョブ オブジェクトのハンドル j を返します。スクリプト ファイル aScript.m はワーカーにコピーされます。

j = batch(myCluster,'aScript')batch('aScript') とほぼ同じですが、myCluster クラスター オブジェクトで特定されたクラスターのワーカー上でスクリプトが実行される点が異なります。

j = batch(fcn,N,{x1, ..., xn}) は既定のクラスター プロファイルによって指定されたクラスターのワーカー上で、関数ハンドルまたは関数名 fcn で指定された関数を実行します。この関数は、それを実行するジョブ オブジェクトのハンドル j を返します。この関数は指定した引数 x1,...,xn を用いて評価され、N 個の出力引数を返します。fcn の関数ファイルはワーカーにコピーされます。(関数名の引数にファイル拡張子 .m を含めないでください)。

j = batch(myCluster,fcn,N,{x1,...,xn})batch(fcn,N,{x1,...,xn}) とほぼ同じですが、myCluster クラスター オブジェクトで特定されたクラスターのワーカー上で実行される点が異なります。

j = batch(...,'p1',v1,'p2',v2,...) では、ジョブの動作を変更する追加のパラメーター/値のペアを受け入れます。特に指定のない限り、これらのパラメーターは関数およびスクリプトのバッチをサポートします。サポートされるパラメーターは以下のとおりです。

  • 'Workspace' — スクリプトが呼び出される直前にワーカーのワークスペースを定義する 1 行 1 列の構造体。この構造体のフィールド名は変数名を定義し、フィールド値はワークスペース変数に割り当てられます。既定では、このパラメーターには、バッチが実行される現在のワークスペース内の全変数用のフィールドが設定されます。このパラメーターではスクリプトの実行のみがサポートされます。

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

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

  • 'AttachedFiles' — 文字ベクトル、または文字ベクトルのセル配列。このリスト内の各文字ベクトルは、ワーカーに転送されるファイルまたはフォルダーを表します。

  • 'AutoAttachFiles' — コード ファイルを自動的にジョブに付加するかどうかを指定する論理値。true の場合、バッチ スクリプトまたは関数が解析され、依存するコード ファイルが自動的にワーカーに転送されます。既定値は true です。

  • 'CurrentFolder' — どのフォルダーでスクリプトが実行されるかを示す文字ベクトル。このフォルダーがワーカーに存在するという保証はありません。このプロパティの既定値は、batch コマンドを実行する際の、MATLAB の cwd です。引数が '.' の場合、バッチの実行前にフォルダーの変更はありません。

  • 'CaptureDiary' — この関数呼び出しからツールボックスでダイアリを収集するように指定する論理フラグ。収集されたデータについては、関数 diary を参照してください。既定値は true です。

  • 'Pool' — バッチ ジョブ自体を実行するワーカー "以外に"、ジョブ用に並列プールに加えられるワーカーの数を指定する整数。このスクリプトまたは関数では、バッチ コード内にある parforspmd などのステートメントの実行にこのプールを使用します。このプールではバッチを実行するワーカーに加えて N 個のワーカーが必要となるため、クラスターでは少なくとも N+1 個のワーカーが使用可能でなければなりません。バッチを実行するために並列プールを事前に実行しておく必要はありません。また、バッチにより作成される新しいプールは、既に開いている並列プールとは無関係です (バッチ並列ループの実行を参照)。既定値は 0 で、この場合、スクリプトまたは関数は並列プールなしで単一のワーカー上で実行されます。

並列プールを使用せずに、ワーカーでバッチ スクリプトを実行します。

 j = batch('script1');

実行に 2 つの追加ファイルが必要なバッチ スクリプトを実行します。

j = batch('myScript','AttachedFiles',{'mscr1.m','mscr2.m'});
wait(j);
load(j);

バッチ スクリプトを実行するワーカーに加えて並列プールの 8 つのワーカーを使用して、リモート クラスターでバッチ プール ジョブを実行します。ダイアリをキャプチャし、ジョブの結果をワークスペースに読み込みます。このジョブには合計 9 つのワーカーが必要です。

 j = batch('script1','Pool',8,'CaptureDiary',true);
 wait(j);   % Wait for the job to finish
 diary(j)   % Display the diary
 load(j)    % Load job workspace data into client workspace

ローカル ワーカーでバッチ プール ジョブを実行します。このジョブではプールの他の 2 つのローカル ワーカーが使用されます。クライアントに加え、ローカル マシンで合計 3 つのワーカーが必要となることに注意してください。

 j = batch('script1','Profile','local','Pool',2);

バッチ ジョブが完了したら、そのデータをクリーンアップします。

delete(j)

クラスターで、10 行 10 列の乱数行列を生成するバッチ関数を実行します。

c = parcluster();
j = batch(c,@rand,1,{10,10});

wait(j)   % Wait for the job to finish
diary(j)  % Display the diary

r = fetchOutputs(j); % Get results into a cell array
r{1}                 % Display result

ヒント

バッチ ジョブについてステータスの表示や進行状況の追跡を行うには、ジョブ モニターを使用してください (ジョブ モニターを参照)。また、ジョブ モニターを使用すると、別のセッションで作成されたバッチ ジョブのジョブ オブジェクトや、batch の呼び出しからジョブ オブジェクトを返さずに作成されたバッチ ジョブのジョブ オブジェクトを取得することもできます。

プログラミングの優れた書き方として、バッチ関数で作成したジョブが不要になったら、クラスター記憶域のリソースを消費し続けないよう削除してください。

参考

| | | |

R2008a で導入

この情報は役に立ちましたか?