Опции для parfor
, например, итерации разбиения
создает набор опций для opts
= parforOptions(cluster
)parfor
который инструктирует parfor
выполнение операторов для рабочих процессов в cluster
без создания параллельного пула. Вместо этого, parfor
отправляет независимые задачи в кластер, чтобы выполнить тело цикла. parfor
разделы и распределения итераций среди рабочих в соответствии с NumWorkers
свойство, количество рабочих, из cluster
.
задает дополнительные опции для использования с объектом кластера opts
= parforOptions(cluster
,___,Name,Value
)cluster
.
parfor
в кластере без параллельного пулаСоздайте объект кластера с помощью parcluster
и создайте набор parfor
опции с ним. По умолчанию parcluster
использует профиль кластера по умолчанию. Проверьте профиль по умолчанию на вкладке MATLAB ® Home, в Parallel > Select a Кластер.
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, в Parallel > Select a Кластер. Создайте набор 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 передает необходимые файлы работникам перед выполнением операторов. В некоторых случаях необходимо явным образом передать эти файлы работникам. Для получения дополнительной информации смотрите Идентификация программных зависимостей.
Если вы используете 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
. Для получения дополнительной информации о указателях на функцию см. Раздел «Создание указателя на функцию».
Пример: 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
.
Типы данных: logical
'AutoAttachFiles'
- Флаг для включения анализа зависимостейtrue
(по умолчанию) | false
Флаг для включения анализа зависимостей parfor
-loop body и передать рабочие файлы в виде разделенной разделенными запятой парами, состоящей из AutoAttachFiles
и true
или false
.
Типы данных: logical
'AttachedFiles'
- Файлы для передачиФайлы для передачи работникам, заданные как разделенная разделенными запятой парами, состоящая из AttachedFiles
и вектор символов, строка, строковые массивы или массив ячеек из векторов символов.
Пример: {'myFun.m','myFun2.m'}
Типы данных: char
| string
| cell
'AdditionalPaths'
- Пути для добавления к работникамПути для добавления к MATLAB® путь рабочих до parfor
выполняет, задается как разделенная разделенными запятой парами, состоящая из AdditionalPaths
и вектор символов, строка, строковые массивы или массив ячеек из векторов символов.
Пример: {'some/path/','another/path'}
Типы данных: char
| string
| cell
opts
- опции parforparforOptions
объектparfor
опции, возвращенные как parforOptions
объект. Чтобы задать опции для a parfor
-цикл, передайте набор из parfor
опции для второго входного параметра parfor
.
Пример: parfor(i=1:10,parforOptions(parcluster)); out(i)=i; end
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.