Создайте параллельный пул в кластере
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(___,
применяет заданные значения для определенных свойств при запуске пула.Name,Value
)
возвращает poolobj
= parpool(___)parallel.Pool
объект для клиентской рабочей области, представляющей пул в кластере. Объект пула можно использовать для программного удаления пула или получения доступа к его свойствам. Использование delete(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.
Composite
| delete
| distributed
| gcp
| parallel.defaultClusterProfile
| parallel.pool.Constant
| parcluster
| parfeval
| parfevalOnAll
| parfor
| pctRunOnAll
| spmd