Hi, I ran into the same problem with some code, and thought I'd explain the issue and fix in case someone else gets the same error for the same reason. Below is a minimal reproducible example of the problem. You will see the for and parfor loops below are identical. The for loop runs ok, but the parfor loop faults.
This is likely to come up if you have different running options and some variables are set in some of them but not in others. It appears the parfor error checking is thrown, it is probably checking that all possible execution paths through the parfor loop are acceptable, whereas in the example below they are not. Note that if you set doAssignment to true below both types of loop will run. The fix in my case is to do per-allocation for all possible running options through the parfor loop.
- Khalid.
doAssignment = false;
if doAssignment
a = zeros(2,1);
end
for i = 1:2
if ~doAssignment
disp('run here');
else
disp('dont run here');
disp(a(i));
end
end
parfor i = 1:2
if ~doAssignment
disp('run here');
else
disp('dont run here');
disp(a(i));
end
end