Запуск пакетных параллельных заданий

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

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

  1. Чтобы создать скрипт, введите:

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

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

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

    delete(job)
    clear job

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

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

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

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

  1. Чтобы создать скрипт, введите:

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

    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 как пакетное задание, перейдя в папку файла, щелкнув правой кнопкой мыши файл и выбрав Run Script as Batch Job. Пакетное задание запускается в кластере, определяемом профилем кластера по умолчанию. Следующий рисунок показывает опцию меню, чтобы запустить файл скрипта script1.m:

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

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

См. также

Похожие темы