Matlab并行处理:我可以限制parfor级别使用的工人数量吗?

时间:2016-03-27 15:41:27

标签: matlab parallel-processing

我想知道是否可以在parfor级别指定最大工人数量?

我知道如何更改matlab并行池中的工作人员数量,但我希望快速和动态地更改分配给parfor循环的工作人员。

理性: 我有一些长时间运行的parfor循环,有时奇数个工作,比如5,会让一个等待其他4个工作在最后一个之前完成一开始,与仅并行运行全部5相比,这是非常缓慢的。我想要的是一些代码,可以确定是否有5个作业,并行运行全部5个,但如果有6个,可能运行2个3个作业是更好的设置,因此我们使用限制本案例为3名工人,但前者为6名。

关闭并重新启动并行池以实现此目的是相当缓慢和烦人的。如果有一种方法可以启动10个工作人员,并动态决定在运行时使用哪个工作效率最高,那么就可以解决问题。

1 个答案:

答案 0 :(得分:2)

根据the documentationparfor还有第二种语法:

parfor (loopvar = initval:endval, M)
    statements
end

这将使用最多M个worker来执行循环内的语句:

  

使用M指定将评估parfor - 循环体中语句的最大MATLAB工作者数。 M必须是非负整数。默认情况下,MATLAB使用尽可能多的工作人员。如果指定了上限,则MATLAB不会使用该数字,即使有其他工作人员可用。如果您请求的资源多于可用资源,MATLAB将使用呼叫时可用的最大数量。