Запустите Связывающиеся Задания В интерактивном режиме Используя pmode

Этот пример использует локальный планировщик и запускает рабочих на вашей локальной клиентской машине MATLAB®. Это не требует внешнего кластера или планировщика. Шаги включают подсказку pmode (P>>) для команд, которые вы вводите в Параллельном Командном окне.

  1. Запустите pmode с pmode команда.

    pmode start local 4

    Это запускает четырех локальных рабочих, создает связывающееся задание, чтобы работать на тех рабочих и открывает Параллельное Командное окно.

    Можно управлять, где история команд появляется. Для этого осуществления положение установлено путем нажатия на Window> History Position> Above Prompt, но можно установить его согласно собственной настройке.

  2. Чтобы проиллюстрировать, что команды в подсказке pmode выполняются на всех рабочих, обратитесь за помощью на функции.

    P>> help magic

  3. Установите переменную в подсказке pmode. Заметьте, что значение установлено на всех рабочих.

    P>> x = pi

  4. Переменная не обязательно имеет то же значение на каждом рабочем. labindex функция возвращает ID, конкретный в каждого рабочего, работающего над этим заданием передачи. В этом примере, переменной x существует с различным значением в рабочей области каждого рабочего.

    P>> x = labindex

  5. Возвратите общее количество рабочих, работающих над текущим заданием передачи с numlabs функция.

    P>> all = numlabs

  6. Создайте реплицированный массив на всех рабочих.

    P>> segment = [1 2; 3 4; 5 6]

  7. Присвойте уникальное значение массиву на каждом рабочем, зависящем от номера рабочего (labindex). С различным значением на каждом рабочем это - различный массив.

    P>> segment = segment + 10*labindex

  8. До этой точки в примере различные массивы независимы кроме наличия того же имени. Используйте codistributed.build функционируйте, чтобы агрегировать сегменты массивов в когерентный массив, распределенный среди рабочих.

    P>> codist = codistributor1d(2, [2 2 2 2], [3 8])
    P>> whole = codistributed.build(segment, codist)
    Это комбинирует четыре отдельных 3 2 массивы в один 3 8 codistributed массив. codistributor1d объект указывает, что массив распределяется вдоль его второго измерения (столбцы) с 2 столбцами на каждом из этих четырех рабочих. На каждом рабочем, segment если данные для локального фрагмента whole массив.

  9. Теперь, когда вы управляете на codistributed массиве whole, каждый рабочий обрабатывает вычисления только на его фрагменте или сегмент, массива, не целого массива.

    P>> whole = whole + 1000

  10. Несмотря на то, что codistributed массив допускает операции на своей полноте, можно использовать getLocalPart функционируйте, чтобы получить доступ к фрагменту codistributed массива на конкретном рабочем.

    P>> section = getLocalPart(whole)
    Таким образом, section теперь различный массив, потому что это отличается на каждом рабочем.

  11. Если вам нужен целый массив в одной рабочей области, используйте gather функция.

    P>> combined = gather(whole)
    Заметьте, однако, что это собирает целый массив в рабочие области всех рабочих. Смотрите gather страница с описанием для синтаксиса, чтобы собрать массив в рабочую область только одного рабочего.

  12. Поскольку у рабочих обычно нет отображений, если вы хотите выполнить какие-либо графические задачи, включающие ваши данные, такие как графический вывод, необходимо сделать это из клиентской рабочей области. Скопируйте массив в клиентскую рабочую область путем ввода следующих команд в MATLAB (клиент) Командное окно.

    pmode lab2client combined 1
    Заметьте тот combined теперь 3 8 массив в клиентской рабочей области.
    whos combined
    Чтобы видеть массив, введите его имя.
    combined

  13. Много матричных функций, которые могут быть знакомыми, могут работать с codistributed массивами. Например, eye функция создает единичную матрицу. Теперь можно создать codistributed единичную матрицу со следующими командами в Параллельном Командном окне.

    P>> distobj = codistributor1d();
    P>> I = eye(6, distobj)
    P>> getLocalPart(I)
    Вызов codistributor1d функция без аргументов задает распределение по умолчанию, которое является столбцами в этом случае, распределено максимально равномерно.

  14. Если вы требуете распределения по различному измерению, можно использовать redistribute функция. В этом примере, аргументе 1 к codistributor1d задает распределение массива по первому измерению (строки).

    P>> distobj = codistributor1d(1);
    P>> I = redistribute(I, distobj)
    P>> getLocalPart(I)

  15. Выйдите из pmode и возвратитесь к регулярному рабочему столу MATLAB.

    P>> pmode exit