Создайте коммуникационное задание на кластере
job = createCommunicatingJob(cluster)
job = createCommunicatingJob(...,'p1',v1,'p2',v2,...)
job = createCommunicatingJob(...,'Type','pool',...)
job = createCommunicatingJob(...,'Type','spmd',...)
job = createCommunicatingJob(...,'Profile','profileName',...)
job = createCommunicatingJob(cluster)
создает объект задания связи для идентифицированного кластера.
job = createCommunicatingJob(...,'p1',v1,'p2',v2,...)
создает объект задания связи с заданными значениями свойств. Список допустимых свойств созданного объекта см. в разделе parallel.Job
страница с описанием объекта. Имя свойства должно быть вектором символов, значение должно быть подходящим типом для этого свойства. В большинстве случаев значения, заданные в этих парах «свойство-значение», переопределяют значения в профиле.
При разгрузке расчетов работникам все файлы, необходимые для расчетов на клиенте, также должны быть доступны для работников. По умолчанию клиент пытается автоматически обнаружить и прикрепить такие файлы. Чтобы выключить автоматическое обнаружение, установите AutoAttachFiles
свойство false. Если автоматическое обнаружение не может найти все файлы или если отправка файлов из клиента в рабочий процесс происходит медленно, используйте следующие свойства.
Если файлы находятся в папке, которая не доступна для работников, установите AttachedFiles
свойство. Кластер копирует каждый указанный файл из клиента в рабочие файлы.
Если файлы находятся в папке, которая доступна для работников, можно задать AdditionalPaths
вместо этого свойство. Используйте AdditionalPaths
свойство для добавления путей к MATLAB каждого работника® искать путь и избегать ненужного копирования файлов с клиента на рабочие места.
Если вы задаете AttachedFiles
или AdditionalPaths
значения объединяются со значениями, заданными в применимом профиле. Если задано недопустимое имя свойства или значение свойства, объект не будет создан.
job = createCommunicatingJob(...,'Type','pool',...)
создает коммуникационное задание типа 'pool'
. Это значение по умолчанию, если 'Type'
не задан. A 'pool'
задание запускает указанную функцию задачи с параллельным пулом, доступным для запуска тела parfor
циклы или spmd
блоки. Обратите внимание, что только один рабочий процесс запускает функцию задачи, а остальные рабочие в кластере образуют параллельный пул. Так на кластере N рабочих для 'pool'
введите задание, только N-1 работники образуют фактический пул, который выполняет spmd
и parfor
код, найденный в функции задачи.
job = createCommunicatingJob(...,'Type','spmd',...)
создает коммуникационное задание типа 'spmd'
, где заданная функция задачи запускается одновременно на всех рабочих местах, и lab*
функции могут использоваться для связи между рабочими.
job = createCommunicatingJob(...,'Profile','profileName',...)
создает объект задания связи со значениями свойств, заданными в профиле 'profileName'
. Если профиль не задан, и объект кластера имеет значение, заданное в его 'Profile'
свойство, профиль кластера применяется автоматически.
Рассмотрим функцию 'myFunction'
который использует parfor
цикл:
function result = myFunction(N) result = 0; parfor ii=1:N result = result + max(eig(rand(ii))); end end
Создайте коммуникационный объект задания для оценки myFunction
в кластере по умолчанию:
myCluster = parcluster; j = createCommunicatingJob(myCluster,'Type','pool');
Добавьте задачу к заданию, поставив входному параметру:
createTask(j, @myFunction, 1, {100});
Установите количество рабочих, необходимых для параллельного выполнения:
j.NumWorkersRange = [5 10];
Запустите задание.
submit(j);
Дождитесь завершения задания и получите его результаты:
wait(j) out = fetchOutputs(j)
Удалите задание из кластера.
delete(j);
createJob
| createTask
| findJob
| parcluster
| recreate
| submit