Идите параллельно язык в MATLAB

Следующая функциональность языка параллельного программирования доступна в 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 быть временно неактивным, включают:

  • Используя pause

  • Используя fetchOutputs или fetchNext получить результаты Future объект

  • Используя wait ожидать Future возразите, чтобы закончиться

  • Используя afterEach или afterAll запускать функцию после Future объектные концы

Используйте язык параллельного программирования без пула

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)