createTask

Создайте новую задачу в задании

Синтаксис

t = createTask(j, F, N, {inputargs})
t = createTask(j, F, N, {C1,...,Cm})
t = createTask(..., 'p1',v1,'p2',v2,...)
t = createTask(...,'Profile', 'ProfileName',...)

Аргументы

t

Объект задачи или вектор объектов задачи.

j

Задание, в котором создается объект задачи.

F

Указатель на функцию, которая вызывается при оценке задачи, или массив указателей на функцию.

N

Количество выходных аргументов, возвращаемых при выполнении функции задачи. Это двойной или массив типа double.

{inputargs}

Массив строки ячеек, задающий входные параметры, который будет передан функции F. Каждый элемент массива ячеек будет передан как отдельный входной параметр. Если это массив ячеек из массивов ячеек, для каждого массива ячеек создается задача.

{C1,...,Cm}

Массив ячеек из массивов ячеек, определяющий входные параметры каждому из m задачи.

p1, p2

Свойства объекта задачи, настроенные при создании объекта.

v1, v2

Начальные значения для соответствующих свойств объекта задачи.

Описание

t = createTask(j, F, N, {inputargs}) создает новый объект задачи в задании j, и возвращает ссылку, t, к добавленному объекту задачи. Эта задача оценивает функцию, заданную указателем на функцию или именем функции F, с заданными входными параметрами {inputargs}, возврат N выходные аргументы.

t = createTask(j, F, N, {C1,...,Cm}) использует массив ячеек m массивы ячеек для создания m объекты задач в j заданий, и возвращает вектор, t, ссылок на новые объекты задачи. Каждая задача оценивает функцию, заданную указателем на функцию или именем функции F. Массив ячеек C1 предоставляет входные параметры для первой задачи, C2 ко второй задаче и так далее, так что существует одна задача на массив ячеек. Каждая задача возвращается N выходные аргументы. Если F - массив ячеек, каждый элемент F задает функцию для каждой задачи в векторе; он должен иметь m элементы. Если N является массивом типа double, каждый элемент задает количество выходных аргументов для каждой задачи в векторе. Многомерные матрицы входов F, N и {C1,...,Cm} поддерживаются; если массив ячеек используется для F, или двойной массив для N, его размерности должны совпадать с размерностями массива ячеек входных параметров массивов ячеек. Область выхода t будет вектором с таким же количеством элементов, как и {C1,...,Cm}. Обратите внимание, что поскольку коммуникационное задание имеет только одну задачу, эта форма векторизованного создания задачи не подходит для таких заданий.

t = createTask(..., 'p1',v1,'p2',v2,...) добавляет объект задачи с заданными значениями свойств. Список допустимых свойств созданного объекта см. в разделе parallel.Task страница с описанием объекта. Имя свойства должно быть вектором символов, значение должно быть подходящим типом для этого свойства. Значения, заданные в этих парах значение-свойство, переопределяют значения в профиле. Если задано недопустимое имя свойства или значение свойства, объект не будет создан.

t = createTask(...,'Profile', 'ProfileName',...) создает объект задачи со значениями свойств, заданными в профиле кластера ProfileName. Дополнительные сведения об определении и применении профилей кластеров см. в разделах Обнаружение кластеров и Использование профилей кластеров.

Примеры

свернуть все

Создайте объект задания.

c = parcluster(); % Use default profile
j = createJob(c);

Добавьте объект задачи, который генерирует случайную матрицу 10 на 10.

t = createTask(j, @rand, 1, {10,10});

Запустите задание.

submit(j);

Дождитесь завершения выполнения задания и получите выход из оценки задачи.

wait(j);
taskoutput = fetchOutputs(j);

Отобразите случайную матрицу 10 на 10.

disp(taskoutput{1});

Этот пример создает задание с тремя задачами, каждая из которых генерирует случайную матрицу 10 на 10.

c = parcluster(); % Use default profile
j = createJob(c);
t = createTask(j, @rand, 1, {{10,10} {10,10} {10,10}});

Этот пример создает задачу, которая захватывает рабочий дневник, независимо от настройки в профиле.

c = parcluster(); % Use default profile
j = createJob(c);
t = createTask(j,@rand,1,{10,10},'CaptureDiary',true);

Создайте объект задания в кластере по умолчанию.

c = parcluster;
job = createJob(c);

Чтобы создать одну задачу со всеми массивами ячеек в качестве входных параметров, используйте {C1} синтаксис createTask. Например, чтобы создать задачу, которая запускается strjoin({'1','1','2'},{'+','='}), используйте следующий код.

task = createTask(job,@strjoin,1,{{{'1','1','2'},{'+','='}}});
task.InputArguments{:}
ans = 1×3 cell
    {'1'}    {'1'}    {'2'}

ans = 1×2 cell
    {'+'}    {'='}

Отправить и дождаться задания.

submit(job);
wait(job);

Извлеките выходы и отобразите их.

outputs = fetchOutputs(job);
disp(outputs{1});
1+1=2

Если вы пытаетесь использовать {inputargs} синтаксис с {inputargs} = {{'1','1','2'},{'+','='}}, затем createTask использует {C1,...,Cm} синтаксис и создание нескольких задач. Например, следующий код неправильно создает две задачи, одну для strjoin('1','1','2') и один для strjoin('+','=').

task = createTask(job,@strjoin,1,{{'1','1','2'},{'+','='}});
Представлено до R2006a