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