Выполните функцию асинхронно на всех рабочих в параллельном пуле
F = parfevalOnAll(p,fcn,numout,in1,in2,...)
F = parfevalOnAll(fcn,numout,in1,in2,...)
F = parfevalOnAll(p,fcn,numout,in1,in2,...)
запрашивает асинхронное выполнение функционального fcn
на всех рабочих в параллельном пуле p
. parfevalOnAll
оценивает fcn
на каждом рабочем с входными параметрами in1
, in2
..., и ожидает выходные аргументы numout
. F
является параллелью. Объект FevalOnAllFuture, из которого можно получить результаты, когда все рабочие завершили выполняющийся fcn
.
F = parfevalOnAll(fcn,numout,in1,in2,...)
запрашивает асинхронное выполнение на всех рабочих в текущем параллельном пуле. Если никакой пул не существует, это запускает новый параллельный пул, если ваши параллельные настройки не отключают автоматическое создание пулов.
Используйте parfevalOnAll
вместо parfor
или spmd
, если вы хотите использовать clear
. Это сохраняет прозрачность рабочей области. Смотрите Гарантируют Прозрачность в циклах parfor или spmd Операторах.
Разгрузите файл mex
прежде, чем удалить временные папки для распределительных симуляций, с помощью функции clear
. Поскольку clear
имеет выходные аргументы 0
, задайте 0
во входном параметре numout
parfevalOnAll
.
parfevalOnAll(@clear,0,'mex');
Закройте все модели Simulink на всех рабочих:
p = gcp(); % Get the current parallel pool f = parfevalOnAll(p,@bdclose,0,'all'); % No output arguments, but you might want to wait for completion wait(f);
cancel
| fetchNext
| fetchOutputs
| parallel.pool.Constant
| parfeval
| parpool
| wait