最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
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 をブロックしないため、結果を取得して表示するには、ジョブが完了するまで待機しなければなりません。
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