recreate

Создайте новое задание из существующего задания

Описание

пример

newjob = recreate(oldjob) создает новое задание, основанное на объектах на существующем задании, содержа те же задачи и опции как oldjob. Старое задание может быть в любом состоянии; новое состояние задания находится на рассмотрении. Если oldjob был создан с помощью batch, затем MATLAB® автоматически представляет новое задание.

пример

newjob = recreate(oldjob,'Tasks',tasksToRecreate) создает объект задания с задачами, которые соответствуют tasksToRecreate. Поскольку связывающиеся задания имеют только одну задачу, эта опция только поддерживает независимые задания.

пример

newjob = recreate(oldjob,'TaskState',states) создает объект задания с задачами, которые соответствуют задачам с State заданный states. Поскольку связывающиеся задания имеют только одну задачу, эта опция только поддерживает независимые задания.

пример

newjob = recreate(oldjob,'TaskID',ids) создает объект задания, содержащий задачи от oldjob это соответствует задачам с идентификаторами, заданными ids. Поскольку связывающиеся задания имеют только одну задачу, эта опция только поддерживает независимые задания.

Примеры

свернуть все

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

Создайте новое задание с помощью кластерного профиля по умолчанию. В этом примере это - локальный параллельный пул.

cluster = parcluster;
job = createJob(cluster);

Создайте несколько задач. В частности, создайте задачу, которая зависит от MAT-файла, который не существует.

createTask(job,@() 'Task1',1);
createTask(job,@() load('myData.mat'),1);

Представьте задание и ожидайте его, чтобы закончиться. Поскольку MAT-файл во второй задаче не существует, сбои задания. Если вы вызываете fetchOutputs на job чтобы получить результаты, вы получаете ошибку. Проверяйте ошибку Error свойство соответствующей задачи.

submit(job);
wait(job);
job.Tasks(2).Error
ans = 
  ParallelException with properties:

     identifier: 'MATLAB:load:couldNotReadFile'
        message: 'Unable to read file 'myData.mat'. No such file or directory.'
          cause: {}
    remotecause: {[1×1 MException]}
          stack: [1×1 struct]

Создайте MAT-файл, на который ссылаются из второй задачи с помощью save функция. Чтобы создать новое задание с задачами, которые привели к ошибке, используйте 'Tasks' пара "имя-значение" в recreate, и обеспечьте hasError функция. Если вы хотите выбрать различный набор задач, можно задать собственную функцию.

str = 'Task2';
save myData str
newjob = recreate(job,'Tasks',@hasError);

Представьте новое задание, ожидайте его завершения и выберите выходные параметры. Поскольку MAT-файл теперь существует, задание не перестало работать.

submit(newjob);
wait(newjob);
out = fetchOutputs(newjob);
out{1}
ans = struct with fields:
    str: 'Task2'

В этом примере показано, как воссоздать целое задание myJob.

newJob = recreate(myJob)               

В этом примере показано, как воссоздать независимое задание, которое имеет только незаконченные задачи от задания oldIndependentJob.

newJob = recreate(oldIndependentJob,'TaskState','pending');

В этом примере показано, как воссоздать независимое задание, которое имеет только задачи с идентификаторами 21 - 32 от задания oldIndependentJob.

newJob = recreate(oldIndependentJob,'TaskID',[21:32]);

В этом примере показано, как найти и воссоздать все не пройдено задания, представленные пользователем Мэри. Примите, что кластер по умолчанию является тем, которому Мэри представила свои задания.

c = parcluster();
failedjobs = findJob(c,'Username','Mary','State','failed');
for m = 1:length(failedjobs)
    newJob(m) = recreate(failedjobs(m));
end

Входные параметры

свернуть все

Исходное задание, которое будет дублировано в виде parallel.Job объект.

Пример: newJob = recreate(oldjob); submit(newJob);

Типы данных: parallel.Job

Задачи скопировать от oldjobВ виде:

  • Массив parallel.Task принадлежность oldjob.

  • 1 x N логический массив, где N размер oldjob.Tasks, указание на задачи в oldjob быть воссозданным.

  • Указатель на функцию, который принимает oldjob.Tasks как входной параметр. Эта функция должна возвратить 1 x N логический массив, указывающий на задачи в oldjob быть воссозданным, где N размер oldjob.Tasks.

Чтобы повторно выполнить задачи, содержащие ошибки или предупреждения, используйте этот синтаксис с предопределенными функциями @hasError и hasWarnings.

Пример: newJob = recreate(oldjob,'Tasks',@hasError | @hasWarnings);

Типы данных: parallel.Task | logical | function_handle

Состояние задач скопировать в виде массива строк или массива ячеек строк. states представляет состояние необходимых задач воссоздать от oldjob. Допустимыми состояниями является 'pending', 'running', 'finished', и 'failed'.

Пример: newJob = recreate(oldJob,'TaskState','failed');

Типы данных: char | string | cell

Идентификаторы задач скопировать от oldjobВ виде вектора целых чисел.

Пример: newJob = recreate(oldIndependentJob,'TaskID',[1 5]);

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Смотрите также

| | | |

Введенный в R2014a