воссоздать

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

Синтаксис

newjob = recreate(oldjob)
newjob = recreate(oldjob,'Tasks',tasksToRecreate)
newjob = recreate(oldjob,'TaskState',states)
newjob = recreate(oldjob,'TaskID',ids)

Описание

пример

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