Опции для 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 передает требуемые файлы рабочим прежде, чем запустить операторы. В некоторых случаях необходимо явным образом передать те файлы рабочим. Для получения дополнительной информации смотрите, Идентификация программных зависимостей.
Если вы используете 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.
Типы данных: логический
'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 объект. Задавать опции для a parfor- цикл, передача ряд parfor опции к второму входному параметру parfor.
Пример: parfor(i=1:10,parforOptions(parcluster)); out(i)=i; end
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.