Опции для parfor
, такой как разделение итераций
создает набор опций для 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
имя аргумента и 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.