1

我正在尝试 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,我不会出错。请提出可能出了什么问题....

4

1 回答 1

1

我尝试了很多,终于找到了问题所在。实际上,我正在访问 parfor 主体内部调用的函数中的全局变量。从 matlab 文档中发现我们无法访问 parfor 中的全局变量,因为存在同步问题。我必须将代码从全局变量更改为参数传递。感谢所有花时间回答我问题的人。

于 2014-09-05T03:57:03.920 回答