Создайте связывающееся задание на кластере
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
. Имя свойства должно быть вектором символов со значением, являющимся соответствующим типом для того свойства. В большинстве случаев значения, заданные в этих парах значения свойства, заменяют значения в профиле. Но когда вы задаете AttachedFiles
или AdditionalPaths
во время создания задания, настройки объединены с заданными в применимом профиле. Если недопустимое имя свойства или значение свойства будут заданы, объект не будет создан.
job = createCommunicatingJob(...,'Type','pool',...)
создает связывающееся задание типа 'pool'
. Это - значение по умолчанию, если 'Type'
не задан. Задание '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