Следующая функциональность языка параллельного программирования доступна в MATLAB®:
Вам не нужен Parallel Computing Toolbox™, чтобы запустить код с помощью этой функциональности.
Некоторые синтаксисы для функциональности языка параллельного программирования имеют автоматическую параллельную поддержку. Функциональность с автоматической параллельной поддержкой автоматически использует параллельные ресурсы по умолчанию, если у вас есть Parallel Computing Toolbox. Если у вас нет Parallel Computing Toolbox, эта функциональность языка параллельного программирования запускается в сериале. Для получения дополнительной информации об автоматической параллельной поддержке, смотрите функции MATLAB Запуска с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
Следующая функциональность языка параллельного программирования имеет автоматическую параллельную поддержку:
Чтобы запустить функции в фоновом режиме, используйте синтаксисы языка параллельного программирования с backgroundPool
вместо этого. Код, что вы пишете использование backgroundPool
может автоматически масштабироваться, чтобы использовать больше параллельных ресурсов, если у вас есть Parallel Computing Toolbox. Для получения дополнительной информации смотрите backgroundPool
.
parfor
Следующие синтаксисы запускаются параллельно, когда вы имеете Parallel Computing Toolbox, и в противном случае запускаетесь в сериале:
parfor loopvar = initval:endval;
statements
конец
parfor (loopvar = initval:endval, M); statements; end
Когда parfor
- цикл запускается в сериале, итерации, запущенные в обратном порядке. Для получения дополнительной информации смотрите parfor
и parfor
(Parallel Computing Toolbox).
parfeval
и parfevalOnAll
Следующие синтаксисы запускаются параллельно, когда вы используете Parallel Computing Toolbox, и в противном случае запускаетесь в сериале:
parfeval(fcn,n,X1,...Xm)
parfevalOnAll(fcn,n,X1,...Xm)
Когда Future
возразите запускам в сериале, MATLAB запускает функциональный fcn
сопоставленный с ним с помощью задержанного выполнения. Функция запускается, когда MATLAB становится неактивным, блокируя MATLAB, пока функция не закончила запускаться. Примеры функциональности, которая заставляет MATLAB быть временно неактивным, включают:
DataQueue
и PollableDataQueue
Когда вы создаете DataQueue
или PollableDataQueue
объект, объект непосредственно не сопоставлен с фоновым пулом или параллельным пулом. Можно поэтому использовать DataQueue
или PollableDataQueue
объект без любого пула.
Следующий код обновляет график на каждой итерации parfor
- цикл. Если у вас есть Parallel Computing Toolbox, parfor
- запуски цикла с помощью параллельного пула. Если у вас нет Parallel Computing Toolbox, код запускается в сериале.
x = 1:1000 line = plot(x,NaN(size(x))); q = parallel.pool.DataQueue; afterEach(q,@(data)updatePlot(line,data)); parfor i = 1:numel(x) % Simulate some work pause(rand) y(i) = x(i)^2; send(q,[i y(i)]) end function updatePlot(line,data) line.XData(data(1)) = data(1); line.YData(data(1)) = data(2); drawnow end
Constant
Когда вы создаете Constant
объект, объект непосредственно не сопоставлен с фоновым пулом или параллельным пулом. Можно поэтому использовать Constant
объект без любого пула.
Следующий код создает Constant
возразите в своем текущем сеансе работы с MATLAB. Можно записать во временный файл с помощью c.Value
и fprintf
.
Если у вас есть Parallel Computing Toolbox, parfor
- запуски цикла с помощью параллельного пула. Если вы используете параллельный пул, Constant
доступно на каждом рабочем в параллельном пуле. В противном случае, Constant
объект создается только в вашем текущем сеансе работы с MATLAB.
c = parallel.pool.Constant(@() fopen(tempfile(pwd),'wt'),@fclose); parfor i = 1:10 y(i) = i^2; fprintf(c.Value,"%03d %f\n",i,y(i)); end
Можно использовать следующие синтаксисы ни с чем не сравнимый Вычислительный Тулбокс:
parallel.pool.Constant(X)
parallel.pool.Constant(fcn)
parallel.pool.Constant(fcn,cleanupFcn)