parpool

Создайте параллельный пул в кластере

Описание

пример

parpool запускает параллельный пул рабочих, использующих кластерный профиль по умолчанию. С настройками по умолчанию, MATLAB® запускает пул на локальной машине с одним рабочим на физическое ядро процессора, до предпочтительного количества рабочих. Для получения дополнительной информации о параллельных настройках смотрите, Задают Ваши Параллельные Настройки.

В общем случае размер пула задан вашими параллельными настройками и профилем по умолчанию. parpool создает пул в кластере по умолчанию с его NumWorkers в области значений [1, preferredNumWorkers] для идущих параллельно функций языка. preferredNumWorkers значение, заданное в ваших параллельных настройках. Для всех факторов, которые могут влиять на ваш размер пула, смотрите Размер Пула и Кластерный Выбор.

parpool добавляет полную функциональность функций языка параллельного программирования в MATLAB путем создания специального задания на пуле рабочих и подключения клиента MATLAB с параллельным пулом. Функции языка параллельного программирования включают parfor, parfeval, parfevalOnAll, spmd, и distributed. Если возможно, рабочая папка на рабочих собирается совпадать с тем из клиентского сеанса MATLAB.

пример

parpool(poolsize) создает и возвращает пул с конкретным количеством рабочих. poolsize может быть положительное целое число или диапазон, указанный как вектор с 2 элементами из целых чисел. Если poolsize область значений, получившийся пул имеет размер как можно больше в области значений, которую требуют.

Определение poolsize заменяет количество рабочих, заданных в настройках или профиле, и запускает пул точно, что количество рабочих, даже если это должно ожидать их, чтобы быть доступным. Большинство кластеров имеет максимальное количество рабочих, которых они могут запустить. Если профиль задает кластер Планировщика Задания MATLAB, parpool резервирует его рабочих из числа тех, которые уже запускаются и доступный под тем Планировщиком Задания MATLAB. Если профиль задает локальный или сторонний планировщик, parpool дает планировщику команду запускать рабочих для пула.

пример

parpool(resources) или parpool(resources,poolsize) запускает пул рабочего на ресурсах, заданных resources.

пример

parpool(___,Name,Value) применяет заданные значения для определенных свойств при запуске пула.

пример

poolobj = parpool(___) возвращает parallel.Pool возразите против клиентской рабочей области, представляющей пул в кластере. Можно использовать объект пула программно удалить пул или получить доступ к его свойствам. Используйте delete(pool) закрывать параллельный пул.

Примеры

свернуть все

Запустите параллельный пул с помощью профиля по умолчанию, чтобы задать количество рабочих. С настройками по умолчанию пул по умолчанию находится на локальной машине.

parpool

Можно создать пулы на различных типах параллельных сред на локальной машине.

  • Запустите параллельный пул рабочих процесса.

    parpool('local')
  • Запустите параллельный пул рабочих потока.

    parpool('threads')

Нос больше информации о параллельных средах, смотрите, Выбирают Between Thread-Based и Process-Based Environments.

Запустите параллельный пул 16 рабочих, использующих профиль под названием myProf.

parpool('myProf',16)

Создайте объект, представляющий кластер, идентифицированный профилем по умолчанию и использованием, которому кластер возражает, чтобы запустить параллельный пул. Размер пула определяется профилем по умолчанию.

c = parcluster
parpool(c)

Начните параллельный пул с профиля по умолчанию и передайте два файла кода рабочим.

parpool('AttachedFiles',{'mod1.m','mod2.m'})

Если у вас есть доступ к нескольким графическим процессорам, можно выполнить вычисления на нескольких графических процессорах в параллели с помощью параллельного пула.

Чтобы определить количество графических процессоров, которые доступны для использования в MATLAB, используйте gpuDeviceCount функция.

availableGPUs = gpuDeviceCount("available")
availableGPUs = 3

Начните параллельный пул со стольких же рабочих сколько доступные графические процессоры. Для лучшей эффективности MATLAB присваивает различный графический процессор каждому рабочему по умолчанию.

parpool('local',availableGPUs);
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 3).

Чтобы идентифицировать, который использует графический процессор каждый рабочий, вызовите gpuDevice в spmd блок. spmd блок запускает gpuDevice на каждом рабочем.

spmd
    gpuDevice
end

Используйте функции языка параллельного программирования, такие как parfor или parfeval, распределить ваши расчеты рабочим в параллельном пуле. Если вы используете gpuArray активированные функции в ваших расчетах, эти функции работают на графическом процессоре рабочего. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре. Для примера смотрите функции MATLAB Запуска на Нескольких графических процессорах.

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

delete(gcp('nocreate'));

Если вы хотите использовать различный выбор графических процессоров, то можно использовать gpuDevice выбрать конкретный графический процессор на каждом рабочем, с помощью индекса устройства графического процессора. Можно получить индекс каждого устройства графического процессора в системе с помощью gpuDeviceCount функция.

Предположим, что вы имеете три графических процессора в наличии в своей системе, но вы хотите использовать только два для расчета. Получите индексы устройств.

[availableGPUs,gpuIndx] = gpuDeviceCount("available")
availableGPUs = 3
gpuIndx = 1×3

     1     2     3

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

useGPUs = [1 3];

Запустите свой параллельный пул. Используйте spmd блок и gpuDevice чтобы сопоставить каждого рабочего с помощью одного из графических процессоров, вы хотите использовать, с помощью индекса устройства. labindex функция идентифицирует индекс каждого рабочего.

parpool('local',numel(useGPUs));
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 2).
spmd
    gpuDevice(useGPUs(labindex));
end

Как лучшая практика, и для лучшей эффективности, присваивают различный графический процессор каждому рабочему.

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

delete(gcp('nocreate'));

Создайте параллельный пул с профилем по умолчанию, и позже удалите пул.

poolobj = parpool;

delete(poolobj)

Найдите количество рабочих в текущем параллельном пуле.

poolobj = gcp('nocreate'); % If no pool, do not create new one.
if isempty(poolobj)
    poolsize = 0;
else
    poolsize = poolobj.NumWorkers
end

Входные параметры

свернуть все

Размер параллельного пула в виде положительного целого числа или диапазона, указанного как вектор с 2 элементами из целых чисел. Если poolsize область значений, получившийся пул имеет размер как можно больше в области значений, которую требуют. Определите предпочтенный номер значения по умолчанию рабочих в параллельных настройках или параллельном профиле.

Пример: parpool('local',2)

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Ресурсы, чтобы запустить пул на в виде 'local', 'threads', кластерный профиль называет или кластерный объект.

Пример: parpool('local')

Пример: parpool('threads')

Пример: parpool('myClusterProfile',16)

Пример: c = parcluster; parpool(c)

Типы данных: char | string | parallel.Cluster

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'AttachedFiles',{'myFun.m'}

Файлы, чтобы присоединить, чтобы объединить в виде вектора символов, массива строк или массива строк или массива ячеек из символьных векторов.

С этой парой аргумента, parpool запускает параллельный пул и передает идентифицированные файлы рабочим в пуле. Файлы, заданные здесь, добавлены к AttachedFiles свойство, заданное в применимом параллельном профиле, чтобы сформировать полный список прикрепленных файлов. 'AttachedFiles' имя свойства является чувствительным к регистру, и должно появиться как показано.

Пример: {'myFun.m','myFun2.m'}

Типы данных: char | cell

Отметьте, чтобы задать, добавляются ли добавленные пользователями записи на клиентском пути к пути каждого рабочего при запуске в виде логического значения.

Типы данных: логический

Имена переменных окружения, чтобы скопировать от клиентского сеанса до рабочих в виде вектора символов, массива строк или массива строк или массива ячеек из символьных векторов. Имена, заданные здесь, добавлены к 'EnvironmentVariables' свойство, заданное в применимом параллельном профиле, чтобы сформировать полный список переменных окружения. Любые переменные, перечисленные, которые не установлены, не копируются в рабочих. Эти переменные окружения установлены на рабочих на время параллельного пула.

Типы данных: char | cell

Отметьте, чтобы задать если spmd поддержка включена на пуле в виде логического значения. Можно отключить поддержку только на локальной переменной или кластере Планировщика Задания MATLAB. parfor итерации не включают связь между рабочими. Поэтому, если 'SpmdEnabled' false, parfor- цикл продолжается, даже если один или несколько рабочих прерываются во время выполнения цикла.

Типы данных: логический

Время в минутах, после которых пул закрывается, если неактивный в виде целого числа, больше, чем нуль. Пул неактивен, если он не запускает код по рабочим. 'IdleTimeout' по умолчанию совпадает со значением в ваших параллельных настройках. Для получения дополнительной информации о параллельных настройках смотрите, Задают Ваши Параллельные Настройки.

Пример: pool = parpool('IdleTimeout',120)

Выходные аргументы

свернуть все

Доступ, чтобы быть параллельными пулу от клиента, возвращенного как parallel.Pool объект.

Советы

  • Индикатор состояния пула в нижнем левом углу рабочего стола показывает клиентское соединение на время сеанса с пулом и состоянием пула. Кликните по значку для меню поддерживаемых действий пула.

    С выполнением пула: Без выполнения пула:

  • Если вы устанавливаете свои параллельные настройки автоматически создавать параллельный пул при необходимости, вы не должны явным образом вызывать parpool команда. Вы можете явным образом создать пул, чтобы управлять, когда вы подвергаетесь служебному времени подготовки его, таким образом, пул готов к последующим построениям языка параллельного программирования.

  • delete(poolobj) закрывает параллельный пул. Ни с чем не сравнимый пул, spmd и parfor запуститесь как один поток в клиенте, если ваши параллельные настройки не собираются автоматически запустить параллельный пул для них.

  • Когда вы используете редактор MATLAB, чтобы обновить файлы на клиенте, которые присоединены к параллельному пулу, те обновления автоматически распространяют рабочим в пуле. (Это автоматическое обновление не применяется к Simulink® файлы модели. Чтобы распространить обновленные файлы модели рабочим, используйте updateAttachedFiles функция.

  • Если возможно, рабочая папка на рабочих первоначально собирается совпадать с тем из клиентского сеанса MATLAB. Впоследствии, следующие команды, вводимые в клиентском Командном окне также, выполняются на всех рабочих в пуле:

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

    При изменении папок или добавлении пути с cd или addpath на клиентах с Windows® операционные системы, значение, отправленное рабочим, являются путем UNC для папки, если это возможно. Для клиентов с Linux® операционные системы, это - абсолютное местоположение папки.

    Если какая-либо из этих команд не работает над клиентом, это не выполняется на рабочих также. Например, если addpath задает папку, к которой клиент не может получить доступ, addpath команда не выполняется на рабочих. Однако, если рабочая папка может быть установлена на клиенте, но не может быть установлена, как задано ни на одном из рабочих, вы не возвратили сообщение об ошибке в клиентское Командное окно.

    Остерегайтесь этих незначительных различий в поведении в среде смешанной платформы, где клиент не является той же платформой как рабочие, где папки, локальные для или сопоставленный от клиента, не доступны таким же образом для рабочих, или где папки находятся в неразделяемой файловой системе. Например, если у вас есть клиент MATLAB, работающий на Microsoft® Операционная система Windows, в то время как работники MATLAB все работают на операционных системах Linux, том же аргументе к addpath не может работать над обоими. В этой ситуации можно использовать функцию pctRunOnAll гарантировать, что команда работает на всех рабочих.

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

    • Подпапки matlabroot папка не отправляется рабочим.

    • Любые папки, которые появляются перед первым вхождением matlabroot папка добавляется к верхней части пути на рабочих.

    • Любые папки, которые появляются после первого вхождения matlabroot папка добавляется после matlabroot группа папок на путях рабочих.

    Например, предположите тот matlabroot на клиенте C:\Applications\matlab\. С открытым параллельным пулом выполните следующее, чтобы установить путь на клиенте и всех рабочих:

    addpath('P1',
            'P2',
            'C:\Applications\matlab\T3',
            'C:\Applications\matlab\T4',
            'P5',
            'C:\Applications\matlab\T6',
            'P7',
            'P8');

    Поскольку T3, T4, и T6 подпапки matlabroot, они не установлены на путях рабочих. Таким образом на рабочих, подходящая часть пути, следующего из этой команды:

    P1
    P2
    <worker original matlabroot folders...>
    P5
    P7
    P8
  • Если вы используете Macintosh или Linux, и видите проблемы во время большого параллельного создания пула, смотрите Рекомендуемые Системные Пределы для Macintosh и Linux.

Введенный в R2013b