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