ドキュメンテーション

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

parfeval

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

構文

F = parfeval(p,fcn,numout,in1,in2,...)
F = parfeval(fcn,numout,in1,in2,...)

説明

F = parfeval(p,fcn,numout,in1,in2,...) は、関数 fcn を並列プール p のワーカー上で非同期実行するよう要求します。このとき、numout 個の出力引数が想定され、また入力引数 in1,in2,... が入力されます。fcn を非同期評価しても MATLAB はブロックされません。Fparallel.FevalFuture オブジェクトで、ワーカーが fcn の評価を完了した時点でこのオブジェクトから結果を取得できます。fcn の評価は必ず実行されます。ただし、cancel(F) を呼び出して明示的に実行をキャンセルした場合を除きます。関数の評価を複数回実行するには、parfeval を複数回呼び出さなければなりません(ただし、parfevalOnAll はすべてのワーカーで同じ関数を実行できます)。

F = parfeval(fcn,numout,in1,in2,...) は現在の並列プールでの非同期実行を要求します。プールが存在しない場合は新しい並列プールが起動されます。ただし、並列設定でプールの自動作成が無効になっている場合を除きます。

並列プールに 1 件の要求を投入し、出力を取得します。

p = gcp(); % Get the current parallel pool
f = parfeval(p,@magic,1,10);
value = fetchOutputs(f); % Block until f completes

複数の Future 要求のベクトルを for ループに投入し、Future 出力が利用可能になったら各出力を取得します。

p = gcp();
% To request multiple evaluations, use a loop.
for idx = 1:10
  f(idx) = parfeval(p,@magic,1,idx); % Square size determined by idx
end
% Collect the results as they become available.
magicResults = cell(1,10);
for idx = 1:10
  % fetchNext blocks until next results are available.
  [completedIdx,value] = fetchNext(f);
  magicResults{completedIdx} = value;
  fprintf('Got result with index: %d.\n', completedIdx);
end

R2013b で導入