Чтобы разгрузиться работают от вашего сеанса MATLAB®, чтобы запуститься в фоновом режиме на другом сеансе, можно использовать команду batch
в скрипте.
Чтобы создать скрипт, введите:
edit mywave
В редакторе MATLAB создайте for
- цикл:
for i = 1:1024 A(i) = sin(i*2*pi/1024); end
Сохраните файл и закройте Редактор.
Используйте команду batch
в Окне Команды MATLAB, чтобы запустить ваш скрипт на отдельном работнике MATLAB:
job = batch('mywave')
Команда batch
не делает блока MATLAB, таким образом, необходимо ожидать задания, чтобы закончиться, прежде чем можно будет получить и просмотреть его результаты:
wait(job)
Команда load
передает переменные, созданные на рабочем к клиентской рабочей области, где можно просмотреть результаты:
load(job,'A')
plot(A)
Когда задание будет завершено, постоянно удалите его данные и удалите его ссылку из рабочей области:
delete(job)
clear job
batch
запускает ваш код по локальному рабочему или кластерному рабочему, но не требует параллельного пула.
Можно использовать batch
, чтобы запустить или скрипты или функции. Для получения дополнительной информации смотрите страницу с описанием batch
.
Можно объединить способности разгрузить задание и запустить цикл в параллельном пуле. Этот пример комбинирует два, чтобы создать простой пакетный parfor
- цикл.
Чтобы создать скрипт, введите:
edit mywave
В редакторе MATLAB создайте parfor
- цикл:
parfor i = 1:1024 A(i) = sin(i*2*pi/1024); end
Сохраните файл и закройте Редактор.
Запустите скрипт в MATLAB с командой batch
. Укажите, что скрипт должен использовать параллельный пул для цикла:
job = batch('mywave','Pool',3)
Эта команда указывает, что три рабочих (в дополнение к тому, запускающему сценарий пакетной обработки), должны оценить итерации цикла. Поэтому этот пример использует в общей сложности четырех локальных рабочих, включая одного рабочего, запускающего сценарий пакетной обработки. В целом существует пять вовлеченных сеансов работы с MATLAB, как показано в следующую схему.
Просмотреть результаты:
wait(job)
load(job,'A')
plot(A)
Результаты выглядят одинаково как прежде, однако, в выполнении существует два важных различия:
Работа определения parfor
- цикл и накопление его результатов разгружена к другому сеансу работы с MATLAB batch
.
Итерации цикла распределяются от одного работника MATLAB другой группе рабочих, запускающихся одновременно ('Pool'
и parfor
), таким образом, цикл может запуститься быстрее, чем наличие только одного рабочего выполняет его.
Когда задание будет завершено, постоянно удалите его данные и удалите его ссылку из рабочей области:
delete(job)
clear job