Запустите скрипт MATLAB или функционируйте на рабочем
запускает функциональный j
= batch(fcn
,N
,{x1,...,xn}
)fcn
на рабочем в кластере, заданном кластерным профилем по умолчанию. Функция возвращает j
, указатель на задание возражает, что запускает функцию. Функция выполнена с данными аргументами, x1,...,xn
, и возвращает N
выходные аргументы. Файл функции для fcn
копируется в рабочего. (Примечание: не включайте .m
расширение файла с аргументом имени функции.)
идентично j
= batch(myCluster
,fcn
,N
,{x1,...,xn}
)batch(fcn,N,{x1,...,xn})
за исключением того, что функция работает на рабочем в кластере, заданном кластерным объектом myCluster
.
задает опции, которые изменяют поведение задания с помощью одного или нескольких аргументов пары "имя-значение". Эти опции поддерживают пакет для функций и скриптов, если в противном случае не обозначено. Используйте этот синтаксис в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах.j
= batch(___,Name,Value
)
Используйте batch
выгрузить работу к сеансу работника MATLAB, который запускается в фоновом режиме. Можно продолжить использовать MATLAB, в то время как расчеты происходят.
Запустите скрипт как пакетное задание при помощи batch
функция. По умолчанию, batch
использует ваш кластерный профиль по умолчанию. Проверяйте, что ваш кластерный профиль по умолчанию на вкладке MATLAB Home, в разделе Environment, параллельно> Выбирает Default Cluster. В качестве альтернативы можно задать кластерный профиль с 'Profile'
аргумент пары "имя-значение".
job = batch('myScript');
batch
не делает блока MATLAB, и можно продолжить работать, в то время как расчеты происходят.
Если вы хотите с блоком MATLAB до концов задания, используйте wait
функция на объекте задания.
wait(job);
По умолчанию MATLAB сохраняет окно Command Window от пакетного задания до дневника задания. Чтобы получить его, используйте diary
функция.
diary(job)
--- Start Diary --- n = 100 --- End Diary ---
После концов задания выберите результаты при помощи load
функция.
load(job,'x');
plot(x)
Если вы хотите загрузить все переменные в пакетном задании, используйте load
функция без аргументов.
Когда вы выберете все необходимые переменные, удалите объект задания очистить его данные и постараться не использовать ресурсы излишне.
delete(job);
clear job
Обратите внимание на то, что, если вы отправляете файл скрипта с помощью batch
, MATLAB передает все переменные рабочей области кластеру, даже если ваш скрипт не использует их. Время передачи данных для большой рабочей области может быть существенным. Как лучшая практика, преобразуйте свой скрипт в файл функции, чтобы избежать этой коммуникации наверху. Для примера, который использует функцию, смотрите Пакетное задание Запуска и доступ к Файлам от Рабочих.
Для большего количества расширенных настроек с batch
, смотрите Пакетное задание Запуска и доступ к Файлам от Рабочих.
Можно разгрузить расчеты, чтобы запуститься в фоновом режиме при помощи batch
. Если для вашего кода нужен доступ к файлам, можно использовать дополнительные опции, такие как 'AttachedFiles'
или 'AdditionalPaths'
, сделать данные доступными. Можно закрыть или продолжить работать в MATLAB, в то время как расчеты происходят и восстанавливают результаты позже.
Подготовьте пример
Используйте функцию поддержки prepareSupportingFiles
скопировать необходимые данные для этого примера к вашей текущей рабочей папке.
prepareSupportingFiles;
Ваша текущая рабочая папка теперь содержит 4 файла: A.dat
, B1.dat
, B2.dat
, и B3.dat
.
Запустите пакетное задание
Создайте кластерный объект с помощью parcluster
. По умолчанию, parcluster
использует ваш кластерный профиль по умолчанию. Проверяйте, что ваш кластерный профиль по умолчанию на вкладке MATLAB Home, в разделе Environment, параллельно> Выбирает Default Cluster.
c = parcluster();
Поместите свой код в функции и представьте его как пакетное задание при помощи batch
. Для примера пользовательской функции смотрите функцию поддержки divideData
. Задайте ожидаемое количество выходных аргументов и массива ячеек с входными параметрами к функции.
Обратите внимание на то, что, если вы отправляете файл скрипта с помощью пакета, MATLAB передает все переменные рабочей области кластеру, даже если скрипт не использует их. Если у вас есть большая рабочая область, она влияет негативно на время передачи данных. Как лучшая практика, преобразуйте свой скрипт в файл функции, чтобы избежать этой коммуникации наверху. Можно сделать это путем простого добавления функциональной линии в начале скрипта. Уменьшать наверху в этом примере, divideData
задан в файле за пределами этого live скрипта.
Если ваш код использует параллельный пул, используйте 'Pool'
аргумент пары "имя-значение", чтобы создать параллельный пул с количеством рабочих, которых вы задаете. batch
использует дополнительного рабочего, чтобы запустить саму функцию.
По умолчанию, batch
изменяет начальную рабочую папку рабочих к текущей папке клиента MATLAB. Может быть полезно управлять начальной рабочей папкой в рабочих. Например, вы можете хотеть управлять им, если ваш кластер использует различную файловую систему, и поэтому пути отличаются, такой как тогда, когда вы подчиняетесь от клиентской машины Windows до кластера Linux.
Чтобы сохранить начальную рабочую папку рабочих и использовать их значение по умолчанию, установите 'CurrentFolder'
к '.'
.
Чтобы изменить начальную рабочую папку, установите 'CurrentFolder'
к папке по вашему выбору.
Этот пример использует параллельный пул с тремя рабочими и выбирает временное местоположение для начальной рабочей папки. Используйте batch
разгружать расчеты в divideData
.
job = batch(c,@divideData,1,{}, ... 'Pool',3, ... 'CurrentFolder',tempdir);
batch
запуски divideData
на параллельном рабочем, таким образом, можно продолжить работать в MATLAB, в то время как расчеты происходят.
Если вы хотите с блоком MATLAB, пока задание не завершается, используйте wait
функция на объекте задания.
wait(job);
Чтобы получить результаты, используйте fetchOutputs
на объекте задания. Как divideData
зависит от файла, который рабочие не могут найти, fetchOutputs
выдает ошибку. Можно получить доступ к информации об ошибке при помощи getReport
на Error
свойство Task
объекты в задании. В этом примере код зависит от файла, который не могут найти рабочие.
getReport(job.Tasks(1).Error)
ans = 'Error using divideData (line 4) Unable to read file 'B2.dat'. No such file or directory.'
Доступ к файлам от рабочих
По умолчанию, batch
автоматически анализирует ваш код и передает требуемые файлы рабочим. В некоторых случаях необходимо явным образом передать те файлы - например, когда вы определяете имя файла во времени выполнения.
В этом примере, divideData
получает доступ к вспомогательному файлу A.dat
, который batch
автоматически обнаруживает и передает. Функция также доступы B1.dat
, но это разрешает имя файла во времени выполнения, таким образом, автоматический анализ зависимостей не обнаруживает его.
type divideData.m
function X = divideData() A = load("A.dat"); X = zeros(flip(size(A))); parfor i = 1:3 B = load("B" + i + ".dat"); X = X + A\B; end end
Если данные находятся в месте, к которому могут получить доступ рабочие, можно использовать аргумент пары "имя-значение" 'AdditionalPaths'
задавать местоположение. 'AdditionalPaths
'добавляет этот путь к пути поиска файлов MATLAB рабочих и делает данные видимыми им.
pathToData = pwd; job(2) = batch(c,@divideData,1,{}, ... 'Pool',3, ... 'CurrentFolder',tempdir, ... 'AdditionalPaths',pathToData); wait(job(2));
Если данные находятся в месте, к которому не могут получить доступ рабочие, можно передать файлы рабочим при помощи 'AttachedFiles'
аргумент пары "имя-значение". Необходимо передать файлы, если клиент и рабочие не совместно используют ту же файловую систему, или если кластер использует типовой интерфейс планировщика в неразделяемом режиме. Для получения дополнительной информации смотрите, Конфигурируют Используя Типовой Интерфейс Планировщика (MATLAB Parallel Server).
filenames = "B" + string(1:3) + ".dat"; job(3) = batch(c,@divideData,1,{}, ... 'Pool',3, ... 'CurrentFolder',tempdir, ... 'AttachedFiles',filenames);
Найдите существующее задание
Можно закрыть MATLAB после представления задания и получить результаты позже. Прежде чем вы закроете MATLAB, обратите внимание на ID задания.
job3ID = job(3).ID
job3ID = 25
Когда вы открываете MATLAB снова, можно найти задание при помощи findJob
функция.
job(3) = findJob(c,'ID',job3ID);
wait(job(3));
В качестве альтернативы можно использовать Джоба Монитора, чтобы отследить задание. Можно открыть его от вкладки MATLAB Home, в разделе Environment, параллельно> Монитор Джобс.
Получите результаты и очистите данные
Чтобы получить результаты пакетного задания, используйте fetchOutputs
функция. fetchOutputs
возвращает массив ячеек с выходными параметрами функционального запуска с batch
.
X = fetchOutputs(job(3))
X = 1×1 cell array
{40×207 double}
Когда вы получили все необходимые выходные параметры и больше не нуждаетесь в объекте задания, удаляете его, чтобы очистить его данные и постараться не использовать ресурсы излишне.
delete(job)
clear job
script
— Скрипт MATLAB®Скрипт MATLAB, который будет оценен рабочим в виде вектора символов или строки.
Пример: batch('aScript');
Типы данных: char |
string
myCluster
— Кластерparallel.Cluster
объектКластер в виде parallel.Cluster
объект, который представляет кластер, вычисляет ресурсы. Чтобы создать объект, используйте parcluster
функция.
Пример: cluster = parcluster; batch(cluster,'aScript');
Типы данных: parallel.Cluster
fcn
— Функция, которая будет оценена рабочимФункция, которая будет оценена рабочим в виде указателя на функцию или имени функции.
Пример: batch(@myFunction,1,{x,y});
Типы данных: char |
string
| function_handle
N
— Количество выходных параметровКоличество выходных параметров ожидается от оцененного функционального fcn
В виде неотрицательного целого числа.
Пример: batch(@myFunction,1,{x,y});
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
{x1,...,xn}
Входные параметрыВходные параметры к функциональному fcn
В виде массива ячеек.
Пример: batch(@myFunction,1,{x,y});
Типы данных: cell
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
j = batch(@myFunction,1,{x,y},'Pool',3);
'Workspace'
— Рабочая область на рабочемРабочая область на рабочем незадолго до скрипта или функции называется в виде разделенной запятой пары, состоящей из 'Workspace'
и struct 1 на 1. Имена полей struct задают имена переменных, и значения полей присвоены переменным рабочей области. По умолчанию этот параметр имеет поле для каждой переменной в текущей рабочей области где batch
выполняется. Этот параметр поддерживает только выполнение скриптов.
Пример: workspace.myVar = 5; j = batch('aScript','Workspace',workspace);
Типы данных: struct
'Profile'
— Кластерный профильКластерный профиль раньше идентифицировал кластер в виде разделенной запятой пары, состоящей из 'Profile'
и вектор символов или строка. Если эта опция не использована, профиль по умолчанию используется, чтобы идентифицировать кластер и применяется к свойствам задачи и заданию.
Пример: j = batch('aScript','Profile','local');
Типы данных: char |
string
'AdditionalPaths'
— Пути, чтобы добавить к рабочимПути, чтобы добавить к пути поиска файлов MATLAB рабочих перед скриптом или функцией выполняются в виде разделенной запятой пары, состоящей из 'AdditionalPaths'
и вектор символов, массив строк или массив ячеек из символьных векторов.
Путь поиска файлов по умолчанию не может быть тем же самым на рабочих, как это находится на клиенте; разностью хода мог быть результат различных текущих рабочих папок (cwd
), платформы или доступ к сетевой файловой системе. Определение 'AdditionalPaths'
аргумент пары "имя-значение" помогает гарантировать, что рабочие ищут файлы, такие как файлы кода, файлы данных или файлы модели, в правильных местоположениях.
Можно использовать 'AdditionalPaths'
к файлам доступа в совместно используемой файловой системе. Обратите внимание на то, что представления пути могут варьироваться в зависимости от целевых машин. 'AdditionalPaths'
должны быть пути, как замечено машинами в кластере. Например, если Z:\data
на вашем локальном Windows® машиной является /network/data
к вашему кластеру Linux® затем добавьте последнего в 'AdditionalPaths'
. Если вы используете datastore, используйте 'AlternateFileSystemRoots'
вместо этого иметь дело с другими представлениями. Для получения дополнительной информации смотрите Настроенный Datastore для Обработки на Различных Машинах или Кластерах.
Обратите внимание на то, что AdditionalPaths
только помогает найти файлы, когда вы обращаетесь к ним использующий относительный путь или имя файла, и не абсолютный путь.
Пример: j = batch(@myFunction,1,{x,y},'AdditionalPaths','/network/data/');
Типы данных: char |
string
| cell
'AttachedFiles'
— Файлы или папки, чтобы передатьФайлы или папки, чтобы передать рабочим в виде разделенной запятой пары, состоящей из 'AttachedFiles'
и вектор символов, массив строк или массив ячеек из символьных векторов.
Пример: j = batch(@myFunction,1,{x,y},'AttachedFiles','myData.dat');
Типы данных: char |
string
| cell
'AutoAddClientPath'
— Отметьте, чтобы добавить добавленные пользователями записи на клиентском пути к пути рабочегоtrue
(значение по умолчанию) | false
Отметьте, чтобы добавить добавленные пользователями записи на клиентском пути к путям рабочего в виде разделенной запятой пары, состоящей из 'AutoAddClientPath'
и логическое значение.
Пример: j = batch(@myFunction,1,{x,y},'AutoAddClientPath',false);
Типы данных: логический
'AutoAttachFiles'
— Отметьте, чтобы включить анализ зависимостейtrue
(значение по умолчанию) | false
Отметьте, чтобы включить анализ зависимостей и автоматически присоединить файлы кода к заданию в виде разделенной запятой пары, состоящей из 'AutoAttachFiles'
и логическое значение. Если вы устанавливаете значение к true
, сценарий пакетной обработки или функция анализируются и файлы кода, от которых это зависит, автоматически передаются рабочим.
Пример: j = batch(@myFunction,1,{x,y},'AutoAttachFiles',true);
Типы данных: логический
'CurrentFolder'
— Папка, в которой выполняются скрипт или функцияПапка, в которой скрипт или функция выполняются в виде разделенной запятой пары, состоящей из 'CurrentFolder'
и вектор символов или строка. Нет никакой гарантии, что эта папка существует на рабочем. Значением по умолчанию для этого свойства является текущий каталог MATLAB когда batch
команда выполняется. Если аргументом является '.'
, нет никакого изменения в папке перед пакетным выполнением.
Пример: j = batch(@myFunction,1,{x,y},'CurrentFolder','.');
Типы данных: char |
string
'CaptureDiary'
— Отметьте, чтобы собрать дневникtrue
(значение по умолчанию) | false
Отметьте, чтобы собрать дневник из вызова функции в виде разделенной запятой пары, состоящей из 'CaptureDiary'
и логическое значение. Для получения информации о собранных данных смотрите diary
.
Пример: j = batch('aScript','CaptureDiary',false);
Типы данных: логический
'EnvironmentVariables'
— Переменные окружения, чтобы скопироватьПеременные окружения, чтобы скопировать от клиентского сеанса до рабочих в виде разделенной запятой пары, состоящей из 'EnvironmentVariables'
и вектор символов, массив строк или массив ячеек из символьных векторов. Имена, заданные здесь, добавлены к EnvironmentVariables
свойство, заданное в применимом параллельном профиле, чтобы сформировать полный список переменных окружения. Перечисленные переменные, которые не установлены, не копируются в рабочих. Эти переменные окружения установлены на рабочих на время пакетного задания.
Пример: j = batch('aScript','EnvironmentVariables',"MY_ENV_VAR");
Типы данных: char |
string
| cell
'Pool'
— Количество рабочих, чтобы превратить в параллельный пул
(значение по умолчанию) | неотрицательное целое число | вектор с 2 элементами из неотрицательных целых чиселКоличество рабочих, чтобы превратить в параллельный пул в виде разделенной запятой пары, состоящей из 'Pool'
и также:
Неотрицательное целое число.
Вектор с 2 элементами из неотрицательных целых чисел, который интерпретирован как область значений. Размер получившегося параллельного пула находится как можно больше в области значений, которую требуют.
Кроме того, отметьте это batch
использование другой рабочий, чтобы запустить само пакетное задание.
Скрипт или функция используют этот пул для операторов выполнения такой как parfor
и spmd
это в пакетном коде. Поскольку пул требует N
рабочие в дополнение к рабочему, запускающему пакет, кластер должен иметь, по крайней мере, N+1
доступные рабочие. Вам не нужен параллельный пул, уже запускающийся, чтобы выполниться batch
, и новый пул, который создает пакет, не связан с пулом, который вы можете уже иметь открытый. Для получения дополнительной информации смотрите Запуск Пакетное задание с Параллельным Пулом.
Если вы используете значение по умолчанию, 0
, скрипт или функция работают на только одном рабочем а не на параллельном пуле.
Пример: j = batch(@myFunction,1,{x,y},'Pool',4);
Пример: j = batch(@myFunction,1,{x,y},'Pool',[2,6]);
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
j
— Заданиеparallel.Job
Задание, которое запускает скрипт или функцию, возвратилось как parallel.Job
объект.
Пример: j = batch('aScript');
Типы данных: parallel.Job
Чтобы просмотреть состояние или отследить прогресс пакетного задания, используйте Монитор Задания, как описано в Мониторе Задания. Можно также использовать Монитор Задания, чтобы получить объект задания для пакетного задания, которое было создано на различном сеансе, или для пакетного задания, которое было создано, не возвращая объект задания в batch
вызвать.
Удалите любые пакетные задания, вы больше не должны стараться не использовать кластерные ресурсы хранения излишне.
batch
теперь оценивает входные параметры массива ячеек {C1,...,Cn}
как C1,...,Cn
Поведение изменяется в R2021a
Начиная в R2021a, функциональном fcn
разгруженный с batch
оценивает входные параметры массива ячеек {C1,...,Cn}
как fcn(C1,...,Cn)
. В предыдущих релизах {C1,...,Cn}
выдал ошибку и {{C1,...,Cn}}
был оценен как fcn(C1,...,Cn)
.
При запуске в R2021a используйте следующий код, чтобы разгрузить fcn({a,b},{c,d})
на кластерном myCluster
с одним выходом.
batch(myCluster,@fcn,1,{{a,b},{c,d}});
batch(myCluster,@fcn,1,{{{a,b},{c,d}}});
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.