exponenta event banner

Выполнение пакетных параллельных заданий

Запуск пакетного задания

Чтобы разгрузить работу из сессии MATLAB ® для выполнения в фоновом режиме в другой сессии, можно использовать batch в сценарии.

  1. Чтобы создать сценарий, введите:

    edit mywave
  2. В редакторе MATLAB создайте for-loop:

    for i = 1:1024
      A(i) = sin(i*2*pi/1024);
    end
  3. Сохраните файл и закройте редактор.

  4. Используйте batch в окне команд MATLAB для выполнения сценария на отдельном работнике MATLAB:

    job = batch('mywave')

  5. batch не блокирует MATLAB, и можно продолжить работу во время выполнения вычислений. Если необходимо заблокировать MATLAB до завершения задания, используйте wait в объекте задания.

    wait(job)
  6. После завершения задания можно извлечь и просмотреть его результаты. load передает переменные, созданные на работнике, в клиентскую рабочую область, где можно просмотреть результаты:

    load(job,'A')
    plot(A)
  7. После завершения задания окончательно удалите его данные и удалите ссылку из рабочей области:

    delete(job)
    clear job

batch запускает код на локальном работнике или работнике кластера, но не требует параллельного пула.

Вы можете использовать batch для выполнения сценариев или функций. Дополнительные сведения см. в разделе batch справочная страница.

Выполнение пакетного задания с параллельным пулом

Можно объединить возможности для разгрузки задания и запуска цикла в параллельном пуле. В этом примере объединяются два варианта для создания простого пакета. parfor-луп.

  1. Чтобы создать сценарий, введите:

    edit mywave
  2. В редакторе MATLAB создайте parfor-loop:

    parfor i = 1:1024
      A(i) = sin(i*2*pi/1024);
    end
  3. Сохраните файл и закройте редактор.

  4. Запустите сценарий в MATLAB с помощью batch команда. Укажите, что сценарий должен использовать параллельный пул для цикла:

    job = batch('mywave','Pool',3)

    Эта команда указывает, что три работника (в дополнение к работающему пакетному сценарию) должны вычислять итерации цикла. Поэтому в этом примере используется в общей сложности четыре локальных работника, включая одного работника, выполняющего пакетный сценарий. Всего задействовано пять сеансов MATLAB, как показано на следующей диаграмме.

  5. Для просмотра результатов:

    wait(job)
    load(job,'A')
    plot(A)

    Результаты выглядят так же, как и раньше, однако существуют два важных различия в выполнении:

    • Работа по определению parfor-контур и накопление его результатов выгружаются в другой сеанс MATLAB batch.

    • Итерации цикла распределяются от одного работника MATLAB к другому набору одновременно работающих работников ('Pool' и parfor), поэтому цикл может выполняться быстрее, чем выполнение только одного рабочего.

  6. После завершения задания окончательно удалите его данные и удалите ссылку из рабочей области:

    delete(job)
    clear job

Запуск сценария как пакетного задания из браузера текущей папки

В браузере «Текущая папка» можно запустить сценарий MATLAB как пакетное задание, перейдя в папку файла, щелкнув файл правой кнопкой мыши и выбрав команду «Выполнить сценарий как пакетное задание». Пакетное задание выполняется в кластере, определенном профилем кластера по умолчанию. На следующем рисунке показана опция меню для запуска файла сценария script1.m:

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

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

См. также

Связанные темы