Выгрузить работу из вашего 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, и можно продолжить работать, в то время как расчеты происходят. Если вам нужно с блоком MATLAB до концов задания, используйте wait
функция на объекте задания.
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
От Браузера текущей папки можно запустить скрипт MATLAB как пакетное задание путем просмотра к папке файла, щелчка правой кнопкой по файлу и выбора Run Script as Batch Job. Пакетное задание работает на кластере, идентифицированном кластерным профилем по умолчанию. Следующий рисунок показывает пункт меню запустить файл скрипта script1.m
:
При выполнении скрипта, когда пакет от браузера использует только одного рабочего от кластера. Таким образом, даже если скрипт содержит a parfor
цикл или spmd
блокируйтесь, это не открывает дополнительный пул рабочих в кластере. Эти блоки кода выполняются на одном рабочем, используемом для пакетного задания. Если ваш сценарий пакетной обработки требует открытия дополнительного пула рабочих, можно запустить его из командной строки, как описано в Запущенном Пакетное задание с Параллельным Пулом.
Когда вы запускаете пакетное задание от браузера, это также открывает Монитор Задания. Монитор Задания является инструментом, который позволяет вам отследить свое задание в очереди планировщика. Для получения дополнительной информации о Мониторе Задания и его возможностях, смотрите Монитор Задания.