我正在尝试matlab并行处理,在此期间我尝试将这个东西应用到我的代码中。以下是代码。
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
我得到的错误是
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
如果我用for替换parfor,我没有错误。请提出可能出现的问题......
答案 0 :(得分:1)
我尝试了很多,最后发现了问题。实际上我在parfor body里面的函数中访问全局变量。从matlab文档中发现,由于存在同步问题,我们无法访问parfor中的全局变量。我必须将代码从全局变量更改为参数传递。非常感谢那些把时间花在我的问题上的人。