在Matlab中对parfor有疑问?

时间:2016-08-04 13:45:37

标签: matlab parfor

你能解释一下原因吗? 在Matlab中使用parfor的以下代码不起作用以及如何解决它?

R=10;
Power=zeros(2,R); 
parfor s=1:R
    Power(1,s)=1
    Power(2,s)=2;
end

1 个答案:

答案 0 :(得分:3)

它不起作用,因为您有一个变量发送给不同的工作者(power),并且您希望使用不同的核心在其上写入。

你如何用不同的工人写同一个变量?谁存储内存?工人如何沟通他们写的地方和不写的地方?在进行并行计算时,代码的结构非常重要,因为您需要了解发送给哪个工作者的内存。只是在传递变量时选择错误的方法会使代码比非并行代码慢。

您显示的代码可以更改为:

R=10;
Power1=zeros(1,R);
Power2=zeros(1,R); 

parfor s=1:R
    Power1(1,s)=1
    Power2(1,s)=2;
end
Power=[Power1;Power2]

我建议你去http://uk.mathworks.com/help/distcomp/parallel-for-loops-parfor.html  并阅读MATLAB错误指示您的“概念”部分,尤其是variable types in parfors