Создайте связывающееся задание в кластере
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
свойство ко лжи. Если автоматическое обнаружение не может найти все файлы, или если отправка файлов от клиента рабочему является медленной, используйте следующие свойства.
Если файлы находятся в папке, которая не доступна на рабочих, установите AttachedFiles
свойство. Кластер копирует каждый файл, который вы задаете от клиента рабочим.
Если файлы находятся в папке, которая доступна на рабочих, можно установить AdditionalPaths
свойство вместо этого. Используйте AdditionalPaths
свойство добавить пути к пути поиска файлов MATLAB® каждого рабочего и постараться не копировать файлы излишне от клиента рабочим.
Если вы задаете 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