Main Content

parfevalOnAll

並列プールのすべてのワーカーで関数を非同期実行

説明

F = parfevalOnAll(p,fcn,numFcnOut,X1,...,Xm) は並列プール p にあるすべてのワーカーで関数 fcn の非同期実行を要求します。関数 parfevalOnAll は、入力引数 X1,...,Xm を用いて各ワーカー上で fcn を評価し、numFcnOut 出力引数を返します。すべてのワーカーが fcn の実行を完了したら、Future オブジェクト F から結果を取得できます。

F = parfevalOnAll(fcn,numFcnOut,X1,...,Xm) は、現在の並列プールにあるすべてのワーカーでの非同期実行を要求します。プールが存在せず、プールの自動作成が有効になっている場合、MATLAB® は新しい並列プールを起動します。

メモ

clear を使用する場合は、parforspmd ではなく parfevalOnAll を使用してください。これにより、ワークスペースの透過性が維持されます。parfor ループまたは spmd ステートメント内での透過性の確保を参照してください。

すべて折りたたむ

関数 parfevalOnAll を使用すると、ワークスペースの透過性を維持したまま、すべてのワーカーでクリーン アップ関数を実行できます。

たとえば、シミュレーションの分散用の一時フォルダーを削除する前に mex ファイルをアンロードするには、parfevalOnAll を使用して、関数 clear をすべてのワーカーで実行します。clear には 0 個の出力引数があるため、parfevalOnAll の入力引数 numFcnOut0 を指定します。

parfevalOnAll(@clear,0,"mex");

すべてのワーカーですべての Simulink モデル ウィンドウを閉じるには、関数 parfevalOnAll を使用して bdclose を実行します。

p = gcp; % Get the current parallel pool
f = parfevalOnAll(p,@bdclose,0,"all");

いずれの場合も、関数 fetchOutputs を使用して、完了するまで待機して正常に完了したことを検証します。出力引数を要求しない場合であっても、Future に fetchOutputs を使用してワーカーからのエラーをチェックできます。

fetchOutputs(f)

入力引数

すべて折りたたむ

ワーカーの並列プール。parallel.Pool オブジェクトとして指定します。関数 parpool を使用して並列プールを作成できます。

ワーカーで実行する関数。関数ハンドルとして指定します。

例: fcn = @sum

データ型: function_handle

関数 fcn から要求された出力引数の数。非負の整数として指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

入力引数。変数または式のコンマ区切りリストとして指定します。並列プールのワーカーは、これらの引数を関数 fcn に入力します。

出力引数

すべて折りたたむ

Future。parallel.FevalOnAllFuture オブジェクトとして返されます。これにより、すべての並列ワーカーでの fcn の実行が表され、その結果が格納されます。結果を収集するには fetchOutputs を使用します。

拡張機能

バージョン履歴

R2013b で導入

すべて展開する