exponenta event banner

createCommunicatingJob

Создание задания связи в кластере

Синтаксис

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' свойство, профиль кластера применяется автоматически.

Примеры

Пример 1. Тип пула, связывающийся с заданием

Рассмотрим функцию '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);
Представлен в R2012a