parfor问题:只有一个进程正在运行

时间:2014-01-14 03:07:35

标签: matlab parallel-processing ubuntu-12.04 parfor

我在matlab中有parfor循环,当它运行时,只有一个进程正在使用CPU(顶部和系统监视器显示相同的CPU使用率,请参阅附带的屏幕截图),并且parfor运行速度不快。为什么???

ubuntu 12.04 LTS,64bits matlab 2012b

pools = matlabpool('size');
if pools ~= 10
    if pools > 0
        matlabpool('close');
    end      
    matlabpool local 10;  %10+ the one I am using = 11 matlab process in system monitor
end

parfor i = 1:num_utt

 dojob();

end

enter image description here

谢谢,Marcin&埃德里克,

我按照你的建议运行了一个小测试用例,然后我注意到问题是由内部循环代码访问外部循环数据引起的,在这个http://www.mathworks.com/help/distcomp/advanced-topics.html中,他们称之为访问广播变量。 / p>

  

在parfor-loop开始时,任何广播变量的值   被送到所有工人。虽然这种类型的变量很有用   甚至是必要的,大的广播变量可能会导致很多   客户与工人之间的沟通。在某些情况下可能会   为此目的更有效地使用临时变量,创建   并在循环中分配它们。

对于我的情况,广播变量包含大量数据,因此将问题传递给工作人员是有问题的。

删除部分数据后,parfor循环正常。

0 个答案:

没有答案