Выполните функцию асинхронно на всех рабочих в параллельном пуле
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