Чтобы разгрузить работу из сессии MATLAB ® для выполнения в фоновом режиме в другой сессии, можно использовать batch в сценарии.
Чтобы создать сценарий, введите:
edit mywaveВ редакторе MATLAB создайте for-loop:
for i = 1:1024 A(i) = sin(i*2*pi/1024); end
Сохраните файл и закройте редактор.
Используйте batch в окне команд MATLAB для выполнения сценария на отдельном работнике MATLAB:
job = batch('mywave')
batch не блокирует MATLAB, и можно продолжить работу во время выполнения вычислений. Если необходимо заблокировать MATLAB до завершения задания, используйте wait в объекте задания.
wait(job)
После завершения задания можно извлечь и просмотреть его результаты. load передает переменные, созданные на работнике, в клиентскую рабочую область, где можно просмотреть результаты:
load(job,'A')
plot(A)После завершения задания окончательно удалите его данные и удалите ссылку из рабочей области:
delete(job)
clear jobbatch запускает код на локальном работнике или работнике кластера, но не требует параллельного пула.
Вы можете использовать batch для выполнения сценариев или функций. Дополнительные сведения см. в разделе batch справочная страница.
Можно объединить возможности для разгрузки задания и запуска цикла в параллельном пуле. В этом примере объединяются два варианта для создания простого пакета. parfor-луп.
Чтобы создать сценарий, введите:
edit mywaveВ редакторе MATLAB создайте parfor-loop:
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В браузере «Текущая папка» можно запустить сценарий MATLAB как пакетное задание, перейдя в папку файла, щелкнув файл правой кнопкой мыши и выбрав команду «Выполнить сценарий как пакетное задание». Пакетное задание выполняется в кластере, определенном профилем кластера по умолчанию. На следующем рисунке показана опция меню для запуска файла сценария script1.m:

При выполнении сценария в виде пакета из браузера используется только один работник из кластера. Таким образом, даже если сценарий содержит parfor цикл или spmd блок не открывает дополнительный пул работников в кластере. Эти блоки кода выполняются на отдельном работнике, используемом для пакетного задания. Если пакетный сценарий требует открытия дополнительного пула работников, его можно запустить из командной строки, как описано в разделе Запуск пакетного задания с параллельным пулом.
При выполнении пакетного задания из браузера открывается монитор заданий. Монитор заданий - это инструмент, позволяющий отслеживать задание в очереди планировщика. Дополнительные сведения о мониторе заданий и его возможностях см. в разделе Монитор заданий.