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

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

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

    wait(job)
  6. Команда 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

Смотрите также