jobMgr = findResource(parameters for your cluster's job manager...);
job = createJob(jobMgr);
set(job, 'JobData', yourdata);
set(job, 'MaximumNumberOfWorkers', yourmaxworkers);
set(job, 'PathDependencies', yourpathdeps);
set(job, 'FileDependencies', yourfiledeps);
set(job, 'Timeout', yourtimeout);
for m = 1:numjobs
task(m) = createTask(job, @parallelfoo, 1, {m});
% Calls taskFinish when the task completes
set(task(m), 'FinishedFcn', {@taskFinish, m});
end
В другом месте вы определили функцию taskFinish, которая получает обратный вызов при завершении каждой задачи.
function taskFinish(taskObj, eventData, tasknum)
disp(['Task ' num2str(tasknum) ' completed']);
end
Обратите внимание, этот код был написан для первоначального выпуска Distributed Computing Toolbox (который впоследствии был переименован в Parallel Computing Toolbox), поэтому возможно, что есть более элегантные способы выполнения того, что вы пытаетесь сделать. Тем не менее, с этим можно справиться с одной оговоркой - я понимаю, что эта функция обратного вызова работает, только если вы используете диспетчер заданий MATLAB в своем кластере (не один из сторонних диспетчеров заданий MPI, таких как TORQUE).