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. F является параллелью. Объект FevalFuture, из которого могут быть получены результаты, когда рабочий завершил оценку fcn. Оценка fcn всегда продолжает, если вы явным образом не отменяете выполнение путем вызова cancel(F). Чтобы запросить несколько функциональных оценок, необходимо вызвать parfeval многократно. (Однако parfevalOnAll может запустить ту же функцию на всех рабочих.)

F = parfeval(fcn,numout,in1,in2,...) запрашивает асинхронное выполнение на текущем параллельном пуле. Если никакой пул не существует, это запускает новый параллельный пул, если ваши параллельные настройки не отключают автоматическое создание пулов.

Примеры

Отправьте один запрос к параллельному пулу и получите выходные параметры.

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

Представьте вектор нескольких будущих запросов в for - цикл и получите отдельные будущие выходные параметры, когда они становятся доступными.

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