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