【问题标题】:Doubts with parfor in Matlab?对 Matlab 中的 parfor 有疑问?
【发布时间】:2016-08-04 13:45:36
【问题描述】:

你能解释一下为什么吗 Matlab中带有parfor的以下代码不起作用,如何解决?

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

【问题讨论】:

    标签: matlab parfor


    【解决方案1】:

    它不起作用,因为您有 1 个变量发送给不同的工作人员 (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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      相关资源
      最近更新 更多