There are certain functions I don't want to execute in parallel, and I would like to throw an error if they are. Is there anyway to know if I am inside a parfor?
Thanks Joan
Best Answer
You can check to see if you are currently running on a worker (aka running in parallel) by using the following commands.
parfor ii = 1:2
job = getCurrentJob;
if isempty(job)
display('not running in parallel')
else
display('running in parallel')
end
end
If you are not running in parallel, the function should return an empty. If you are running in parallel, it will return a job object corresponding to the job you are inside.
One simple way is to check the return ofgetCurrentTask. This will always return empty in a desktop MATLAB session, and aparallel.Task object when running on a worker.
Best Answer