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