Search code examples
matlabparallel-processingparfor

Getting error in parfor but not in for-loop in matlab


I am trying the matlab parallel processing and during this I tried to apply this thing to my code. Below is the code.

matlabpool open 2
pop = create_population(match_matrix,PopSize);
ftns = zeros(PopSize,1);
parfor i=1:PopSize
    ftns(i) = get_fitness(pop{i});
end
matlabpool close

The error I am getting is following

Error using parallel_function (line 589)

In an assignment  A(I) = B, the number of elements in B and I must be the same.

Error stack:
SWIFTga>(parfor body) at 127

Error in SWIFTga (line 126)
    parfor i=1:PopSize

I am getting no errors if I replace the parfor with for. Please suggest what may be going wrong....


Solution

  • I tried so much and at last found the problem. Actually I was accessing global variables in the function called inside parfor body. From the matlab documentation found that we cant access global variables in parfor as there is synchronization issues. I has to change the code from global variables to argument passing. Thanks all for those who put some time into my question.