parpool

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

Синтаксис

parpool
parpool(poolsize)
parpool(profilename)
parpool(profilename,poolsize)
parpool(cluster)
parpool(cluster,poolsize)
parpool(___,Name,Value)
poolobj = parpool(___)

Описание

пример

parpool запускает параллельный пул рабочих, использующих кластерный профиль по умолчанию, с размером пула, заданным вашими параллельными настройками и профилем по умолчанию. 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(profilename) или parpool(profilename,poolsize) запускает пул рабочего с помощью кластерного профиля, идентифицированного profilename.

пример

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

пример

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

пример

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

Примеры

свернуть все

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

parpool

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

parpool('myProf',16)

Запустите параллельный пул 2 рабочих, использующих локальный профиль.

parpool('local',2)

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

c = parcluster
parpool(c)

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

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

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

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

Профилируйте, который задает кластер и свойства, заданные как вектор символов.

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

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

Кластер, чтобы запустить пул на, заданный как кластерный объект. Используйте parcluster, чтобы получить кластерный объект.

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

Аргументы в виде пар имя-значение

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

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

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

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

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

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

Логическое значение (true или false), который управляет, добавляются ли пользовательские добавленные записи на пути клиента к пути каждого рабочего при запуске. 'AutoAddClientPath' по умолчанию установлен в true.

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

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

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

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

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

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

свернуть все

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

Советы

Примечание

Удалите любой startup.m из своего пути MATLAB, если вы хотите запустить какой-либо параллельный код включая parpool. Если вы испытываете затруднения при запуске параллельного пула, смотрите эту страницу MATLAB Answers: https://uk.mathworks.com/matlabcentral/answers/92124-why-am-i-unable-to-use-parpool-with-the-local-scheduler-or-validate-my-local-configuration-of-parall

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

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

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

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

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

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

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

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

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

    Остерегайтесь этих незначительных различий в поведении в среде смешанной платформы, где клиент не является той же платформой как рабочие, где папки, локальные для или сопоставленный от клиента, не доступны таким же образом рабочим, или где папки находятся в неразделяемой файловой системе. Например, если у вас есть клиент MATLAB, работающий на операционной системе Windows Microsoft®, в то время как работники 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

Введенный в R2013b