このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
バッチ並列ジョブの実行
バッチ ジョブの実行
MATLAB® セッションの負荷をオフロードして別のセッションでバックグラウンドで実行するために、スクリプト内で batch
コマンドを使用できます。
スクリプトを作成するには、次のように入力します。
edit mywave
MATLAB エディターで、
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 mywave
MATLAB エディターで、
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 スクリプトをバッチ ジョブとして実行できます。それには、ファイルのフォルダーを参照し、ファイルを右クリックして [バッチ ジョブとしてスクリプトを実行] を選択します。バッチ ジョブは既定のクラスター プロファイルにより指定されているクラスター上で実行されます。次の図はスクリプト ファイル script1.m
を実行するメニュー オプションを示しています。
ブラウザーからスクリプトをバッチとして実行する際は、クラスターのワーカーを 1 つだけ使用します。このため、スクリプトに parfor
ループまたは spmd
ブロックが含まれている場合でも、クラスターのワーカー プールが追加で開くことはありません。こうしたコード ブロックはバッチ ジョブに使用される単一のワーカーで実行されます。バッチ スクリプトで追加のワーカー プールを開く必要がある場合は、並列プールでのバッチ ジョブの実行で説明したように、コマンド ラインから実行できます。
ブラウザーからバッチ ジョブを実行する場合は、ジョブ モニターも開かれます。ジョブ モニターはスケジューラ キューのジョブを追跡できるツールです。ジョブ モニターとその機能についての詳細については、ジョブ モニターを参照してください。