Создайте параллельный пул в кластере
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