Опции для parfor
, такие как разделение итераций
opts = parforOptions(cluster)
opts = parforOptions(pool)
opts = parforOptions(___,'RangePartitionMethod',method)
opts = parforOptions(___,'RangePartitionMethod','fixed','SubrangeSize',n)
opts = parforOptions(cluster,___,Name,Value)
создает набор опций для opts
= parforOptions(cluster
)parfor
, который дает команду parfor
выполнять операторы на рабочих в cluster
, не создавая параллельный пул. Вместо этого parfor
представляет независимые задачи кластеру, чтобы выполнить тело цикла. разделы parfor
и распределяют итерации рабочим согласно свойству NumWorkers
, количеству доступных рабочих, cluster
.
задает дополнительные опции для использования с кластерным объектом opts
= parforOptions(cluster
,___,Name,Value
)cluster
.
parfor
на кластерном ни с чем не сравнимом пулеСоздайте кластерный объект с помощью функции 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
Можно управлять, как 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'
. Эта функция должна возвратить вектор размеров подобласти значений, и их сумма должна быть равна количеству итераций. Для получения дополнительной информации об этом синтаксисе см. метод.
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
parfor
на параллельном пуле и управляйте опциямиМожно использовать 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
Когда вы запускаете parfor
с или ни с чем не сравнимый пул, по умолчанию, MATLAB выполняет автоматический анализ зависимостей на теле цикла. 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
cluster
— Кластерparallel.Cluster
Кластер, заданный как объект parallel.Cluster
, на котором запускается parfor
. Чтобы создать кластерный объект, используйте функцию parcluster
.
Пример: opts = parforOptions(parcluster('local'));
Типы данных: parallel.Cluster
n
Размер подобласти значенийРазмер подобласти значений для фиксированного метода разделения, заданного как положительное целое число. Необходимо установить пару "имя-значение" 'RangePartitionMethod'
на 'fixed'
.
Пример: opts = parforOptions(cluster,'RangePartitionMethod','fixed','SubrangeSize',5);
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
pool
— Параллельный пулparallel.Pool
Параллельный пул, заданный как объект parallel.Pool
, на котором запускается parfor
. Чтобы создать параллельный пул, используйте функцию parpool
.
Пример: opts = parforOptions(parpool('local'));
Типы данных: parallel.Pool
method
— Метод раздела области значений'auto'
(значение по умолчанию) | 'fixed'
| указатель на функциюМетод раздела области значений, заданный как одно из следующего:
'auto'
– Этот метод делит цикл на подобласти значений переменных размеров. Это пытается достигнуть хорошей производительности для разнообразия parfor
- циклы.
'fixed'
– Делит parfor
- цикл в подобласти значений фиксированных размеров. Необходимо задать размер каждой подобласти значений путем установки пары "имя-значение" 'SubrangeSize'
.
указатель на функцию – Использование указатель на функцию, чтобы разделить итерации цикла на подобласти значений. Функция должна иметь форму sizes = customFcn(n,nw)
, где n
является количеством итераций в parfor
- цикл, и nw
является количеством рабочих, доступных, чтобы выполнить цикл. Когда цикл работает на параллельном пуле, nw
является количеством рабочих в параллельном пуле. Когда цикл запускает использование кластера, nw
является свойством NumWorkers
кластера. customFcn
возвращает векторный sizes
размеров подобласти значений. Этот вектор должен удовлетворить sum(sizes) == n
. Для получения дополнительной информации об указателях на функцию см. Создание указателя на функцию (MATLAB).
Пример: opts = parforOptions(cluster,'RangePartitionMethod','fixed','SubrangeSize',10);
Пример: opts = parforOptions(cluster,'RangePartitionMethod',@(n,nw) [2,4,4,n-10]);
Типы данных: char
| function_handle
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
opts = parforOptions(cluster,'AttachedFiles',{'myFile.dat'});
'AutoAddClientPath'
— Отметьте, чтобы задать, добавляется ли клиентский путь к пути рабочегоtrue
(значение по умолчанию) | false
Отметьте, чтобы задать, добавляется ли клиентский путь к пути рабочего, заданному как пара, разделенная запятой, состоящая из AutoAddClientPath
и true
или false
.
Типы данных: логический
'AutoAttachFiles'
— Отметьте, чтобы включить анализ зависимостейtrue
(значение по умолчанию) | false
Отметьте, чтобы включить анализ зависимостей на parfor
- тело цикла и передача потребовали файлов рабочим, заданным как пара, разделенная запятой, состоящая из AutoAttachFiles
и true
или false
.
Типы данных: логический
'AttachedFiles'
— Файлы, чтобы передатьФайлы, чтобы передать рабочим, заданным как пара, разделенная запятой, состоящая из AttachedFiles
и вектора символов, строки, массива строк или массива ячеек из символьных векторов.
Пример: {'myFun.m','myFun2.m'}
Типы данных: char
| string
| cell
'AdditionalPaths'
— Пути, чтобы добавить к рабочимПути, чтобы добавить к пути MATLAB® рабочих перед parfor
выполняются, заданный как пара, разделенная запятой, состоящая из AdditionalPaths
и вектора символов, строки, массива строк или массива ячеек из символьных векторов.
Пример: {'some/path/','another/path'}
Типы данных: char
| string
| cell
opts
— опции parforparforOptions
Опции parfor
, возвращенные как объект parforOptions
. Чтобы задать опции для parfor
- цикл, передайте набор опций parfor
к второму входному параметру parfor
.
Пример: parfor(i=1:10,parforOptions(parcluster)); out(i)=i; end
parcluster
| parfor
| parpool
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.