parforOptions

Опции установлены для parfor

Описание

пример

opts = parforOptions(cluster) создает набор опций для parfor использование кластерного объекта cluster. Задавать опции для parfor- цикл, используйте parfor (loopVar=initVal:endval, opts); statements; end синтаксис.

пример

opts = parforOptions(pool) создает набор опций для parfor использование объекта pool пула.

Когда вы создадите несколько пулов, используйте этот синтаксис, чтобы задать который пул запустить parfor- цикл на.

Совет

Когда вы запускаете parfor- цикл, MATLAB® автоматически использует параллельный пул, чтобы запустить цикл, если вы доступны.

Если только необходимо запустить parfor- цикл с помощью кластерного профиля по умолчанию или доступного параллельного пула, рассмотрите использование parfor loopVar=initVal:endval; statements; end синтаксис вместо того, чтобы использовать parforOptions.

пример

opts = parforOptions(___,Name,Value) создает набор опций для parfor использование одних или нескольких аргументов name-value. Например, используйте parforOptions(pool,"MaxNumWorkers",M) запускать parfor- цикл с помощью объекта pool пула и максимум M рабочие. Задайте аргументы name-value после всех других входных параметров.

Примеры

свернуть все

Создайте кластерный объект с помощью parcluster функция, и создает набор parfor опции с ним. По умолчанию, parcluster использует ваш кластерный профиль по умолчанию. Проверяйте, что ваш профиль по умолчанию на вкладке Home MATLAB®, параллельно> Выбирают Default Cluster.

cluster = parcluster;
opts = parforOptions(cluster);

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

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

values = [3 3 3 7 3 3 3];
parfor (i=1:numel(values),opts)
    out(i) = norm(pinv(rand(values(i)*1e3)));
end

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

Можно управлять как parfor делит итерации на подобласти значений для рабочих с parforOptions. Управление разделением области значений может оптимизировать эффективность parfor- цикл. Для лучшей эффективности попытайтесь разделить в подобласти значений, которые являются:

  • Достаточно большой, что время вычисления является большим по сравнению с издержками планирования подобласти значений

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

К итерациям раздела в подобласти значений фиксированного размера создайте набор parfor опции, набор 'RangePartitionMethod' к 'fixed', и задайте размер подобласти значений с 'SubrangeSize'.

opts = parforOptions(parcluster,'RangePartitionMethod','fixed','SubrangeSize',2);

Передайте parfor опции как второй входной параметр к parfor. В этом случае, parfor делит итерации на три группы 2 итерации.

values = [3 3 3 3 3 3];
parfor (i=1:numel(values),opts)
    out(i) = norm(pinv(rand(values(i)*1e3)));
end

К итерациям раздела в подобласти значений различного размера передайте указатель на функцию 'RangePartitionMethod' пара "имя-значение". Эта функция должна возвратить вектор из размеров подобласти значений, и их сумма должна быть равна количеству итераций. Для получения дополнительной информации об этом синтаксисе смотрите RangePartitionMethod.

opts = parforOptions(parcluster,'RangePartitionMethod', @(n,nw) [2 1 1 2]);

Передайте parfor опции как второй входной параметр к parfor. В этом случае, parfor делит итерации на четыре группы 2, 1, 1, и 2 итерации.

values = [3 3 7 7 3 3];
parfor (i=1:numel(values),opts)
    out(i) = norm(pinv(rand(values(i)*1e3)));
end

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

Создайте параллельный пул с помощью parpool функция. По умолчанию, parpool использует ваш кластерный профиль по умолчанию. Проверяйте, что ваш профиль по умолчанию на вкладке MATLAB Home, параллельно> Выбирают Default Cluster. Создайте набор parfor опции с параллельным объектом пула, и задают опции. Например, задайте подобласти значений фиксированного размера 2 как метод разделения.

p = parpool;
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 6).
opts = parforOptions(p,'RangePartitionMethod','fixed','SubrangeSize',2);

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

values = [3 3 3 3 3 3];
parfor (i=1:numel(values),opts)
    out(i) = norm(pinv(rand(values(i)*1e3)));
end

Когда вы запускаете parfor с или ни с чем не сравнимый пул, по умолчанию, MATLAB выполняет автоматический анализ зависимостей на теле цикла. MATLAB передает требуемые файлы рабочим прежде, чем запустить операторы. В некоторых случаях необходимо явным образом передать те файлы рабочим. Для получения дополнительной информации смотрите, Идентификация программных зависимостей.

Если вы используете parfor ни с чем не сравнимый пул, используйте parforOptions передавать файлы. Создайте кластерный объект с помощью parcluster опция. Создайте набор parfor опции с кластерным объектом с помощью parforOptions функция. Чтобы передать файлы рабочим, используйте 'AttachedFiles' пара "имя-значение".

cluster = parcluster;
opts = parforOptions(cluster,'AttachedFiles',{'myFile.dat'});

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

parfor (i=1:2,opts)
    M = csvread('myFile.dat',0,2*(i-1),[0,2*(i-1),1,1+2*(i-1)]);
    out(i) = norm(rand(ceil(norm(M))*1e3));
end

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

свернуть все

Кластер в виде parallel.Cluster объект. Чтобы создать кластерный объект, использовать parcluster.

Пример: parcluster("local");

Объедините в виде parallel.Pool объект.

  • Чтобы создать параллельный пул, использовать parpool.

  • Чтобы получить фоновый пул, использовать backgroundPool.

Пример: parpool("local");

Пример: backgroundPool;

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

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

Пример: opts = parforOptions(cluster,"AttachedFiles","myFile.dat");
Все типы объектов

свернуть все

Метод для разделения итераций в подобласти значений в виде "auto", "fixed", или указатель на функцию. Подобласть значений является непрерывным блоком итераций цикла это parfor запуски как группа на рабочем. Используйте этот аргумент, чтобы оптимизировать эффективность вашего parfor- цикл путем определения, как итерации распределяются на рабочих.

  • Если RangePartitionMethod "auto" или если вы не задаете значение, parforOptions делит parfor- итерации цикла в подобласти значений различных размеров, чтобы искать хорошую эффективность для разнообразия parfor- циклы.

  • Если RangePartitionMethod "fixed", parforOptions делит parfor- итерации цикла в подобласти значений фиксированных размеров. Когда вы используете этот метод, необходимо также использовать SubrangeSize аргумент значения имени, чтобы задать размеры подобласти значений.

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

    Функция запускает указатель на функцию как sizes = customFcn(n,nw).

    • n количество итераций в parfor- цикл.

    • nw количество рабочих, доступных, чтобы запустить цикл.

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

    • sizes целочисленный вектор из размеров подобласти значений. Для любого значения n и nw, сумма векторного sizes должно быть равно n.

Пример: parforOptions(cluster,"RangePartitionMethod","auto")

Пример: parforOptions(cluster,"RangePartitionMethod",@(n,nw) ones(1,n))

Максимальное количество итераций в подобласти значений в виде положительного целочисленного скаляра. Подобласть значений является непрерывным блоком итераций цикла это parfor запуски как группа на рабочем.

Когда вы используете этот аргумент, необходимо задать RangePartitionMethod аргумент как "fixed".

Пример: parforOptions(cluster,"RangePartitionMethod","fixed","SubrangeSize",5)

Кластерные аргументы name-value

свернуть все

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

Значением по умолчанию является массив пустой ячейки.

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

Если клиент и рабочие имеют различные пути к той же папке, задают папку с помощью пути на рабочих. Например, если путем к папке является /shared/data на клиенте и /organization/shared/data на рабочих задайте "/organization/shared/data".

Если вы задаете относительные пути, такие как "../myFolder", пути разрешены относительно текущей рабочей директории на рабочих.

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

Пример: opts = parforOptions(cluster,"AdditionalPaths",["/additional/path1","/additional/path2"])

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

Значением по умолчанию является массив пустой ячейки.

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

Если вы задаете относительные пути, такие как "../myFolder", пути разрешены относительно текущей рабочей директории на клиенте.

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

Отметьте, чтобы отправить клиентский путь рабочим в виде true или false.

Если вы задаете AutoAddClientPath как true, добавленные пользователями записи добавляются к пути каждого рабочего, когда вы запускаете parfor- цикл. Когда parfor- концы цикла, эти записи удалены из пути каждого рабочего.

Отметьте, чтобы скопировать файлы в рабочих автоматически в виде true или false.

Когда вы разгружаете расчеты рабочим, любые файлы, которые требуются для расчетов на клиенте, должны также быть доступными на рабочих. Если вы задаете AutoAttachFiles как true, клиент пытается автоматически обнаружить и присоединить такие файлы. Если вы задаете AutoAttachFiles как false, вы выключаете автоматическое обнаружение на клиенте. Если автоматическое обнаружение не может найти все файлы, или если отправка файлов от клиента рабочему является медленной, используйте следующие аргументы.

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

  • Если файлы находятся в папке, которая доступна на рабочих, можно использовать AdditionalPaths аргумент вместо этого. Используйте AdditionalPaths аргумент, чтобы добавить пути к пути поиска файлов MATLAB каждого рабочего и постараться не копировать файлы излишне от клиента рабочим.

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

Объедините аргументы name-value

свернуть все

Максимальное количество рабочих в виде положительного целочисленного скаляра.

Значением по умолчанию является Inf.

  • Если вы задаете MaxNumWorkers как конечное положительное целое число, ваш parfor- цикл запустится имеющий до MaxNumWorkers рабочие.

  • Если вы задаете MaxNumWorkers как Inf, ваш parfor- цикл запустится со столькими рабочими, сколько доступны.

Введенный в R2019a