バッチ並列ジョブの実行
バッチ ジョブの実行
MATLAB® セッションの負荷をオフロードして別のセッションでバックグラウンドで実行するために、スクリプト内で batch コマンドを使用できます。
スクリプトを作成するには、次のように入力します。
edit mywaveMATLAB エディターで、
forループを作成します。for i = 1:1024 A(i) = sin(i*2*pi/1024); end
ファイルを保存してエディターを閉じます。
MATLAB コマンド ウィンドウで
batchコマンドを使用して、独立した MATLAB ワーカーでスクリプトを実行します。job = batch('mywave')
batchは MATLAB をブロックしないため、計算の実行中に作業を続行できます。ジョブが完了するまで MATLAB をブロックする必要がある場合は、ジョブ オブジェクトに対して関数waitを使用します。wait(job)
ジョブの終了後、その結果を取得して表示することができます。
loadコマンドによって、ワーカーで作成された変数がクライアント ワークスペースに転送され、そこで結果を表示することができます。load(job,'A') plot(A)ジョブが完了したら、そのデータを永久的に削除し、その参照をワークスペースから削除します。
delete(job) clear job
batch はコードをローカル ワーカーまたはクラスター ワーカーで実行しますが、並列プールは必要ではありません。
batch を使用してスクリプトまたは関数を実行できます。詳細については、関数 batch のリファレンス ページを参照してください。
並列プールでのバッチ ジョブの実行
ジョブをオフロードする機能と並列プールでループを実行する機能は組み合わせることができます。この例では、この 2 つを組み合わせてシンプルなバッチの parfor ループを作成します。
スクリプトを作成するには、以下を入力します。
edit mywaveMATLAB エディターで、
parforループを作成します。parfor i = 1:1024 A(i) = sin(i*2*pi/1024); end
ファイルを保存してエディターを閉じます。
MATLAB で
batchコマンドを使用してスクリプトを実行します。スクリプトではループに並列プールが使用されるように指定します。job = batch('mywave','Pool',3)
このコマンドでは、(バッチ スクリプトを実行するワーカーの他に) 3 つのワーカーでループ反復を評価するよう指定しています。したがって、この例ではバッチ スクリプトを実行する 1 つのワーカーを含め、合計で 4 つのローカル ワーカーを使用します。次の図のように、実行される MATLAB セッションは全部で 5 つあります。

結果を表示するには、以下を入力します。
wait(job) load(job,'A') plot(A)結果は前と同じように見えますが、実行方法に 2 つの重要な違いがあります。
parforループを定義して結果を累積する作業がbatchにより別の MATLAB セッションにオフロードされる。ループの反復が、1 つの MATLAB ワーカーから同時実行される別の一連のワーカーに分散されるため (
'Pool'とparfor)、ループがただ 1 つのワーカーで実行される場合より高速で実行される可能性がある。
ジョブが完了したら、そのデータを永久的に削除し、その参照をワークスペースから削除します。
delete(job) clear job
[ファイル] パネルでのスクリプトのバッチ ジョブとしての実行
[ファイル] パネルから MATLAB スクリプトをバッチ ジョブとして実行できます。これを行うには、ファイルのフォルダーを参照し、ファイルを右クリックして [バッチ ジョブとしてスクリプトを実行] を選択します。バッチ ジョブは既定のクラスター プロファイルにより指定されているクラスター上で実行されます。次の図はスクリプト ファイル myScript.m を実行するオプションを示しています。

[ファイル] パネルからスクリプトをバッチとして実行する際は、クラスターのワーカーを 1 つだけ使用します。このため、スクリプトに parfor ループまたは spmd ブロックが含まれている場合でも、クラスターのワーカー プールが追加で開くことはありません。こうしたコード ブロックはバッチ ジョブに使用される単一のワーカーで実行されます。バッチ スクリプトで追加のワーカー プールを開く必要がある場合は、並列プールでのバッチ ジョブの実行で説明したように、コマンド ラインから実行できます。
[ファイル] パネルからバッチ ジョブを実行する場合は、ジョブ モニターも開かれます。ジョブ モニターはスケジューラ キューのジョブを追跡できるツールです。ジョブ モニターとその機能についての詳細については、ジョブ モニターを参照してください。