exponenta event banner

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

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

{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 - массив двойников, каждый элемент задает количество выходных аргументов для каждой задачи в векторе. Многомерные матрицы входных данных 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