Запустите Связывающиеся Задания В интерактивном режиме Используя 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