我想知道是否有可能在parfor级别指定最大的工人#?
我知道如何在matlab并行池中更改#的工作人员,但我想快速和动态地更改分配给parfor循环的工作人员。
Rational:我有一些长时间运行的parfor循环,有时会有一些奇数的作业(比如5 ),在最后一个任务开始之前,会留下一个等待其他4个作业完成,这比只并行运行所有5个任务要慢得多。我想要的是一些代码,可以确定是否有5个作业,并行运行所有5个作业,但是如果有6个,也许运行2组3个作业是一个更好的设置,因此我们在这种情况下使用3个工作的限制,而对于前者则使用6个。
关闭并重新启动并行池以实现这一点是相当缓慢和烦人的。如果有一种方法只需要10名员工启动,并动态地决定在运行时使用多少名员工最有效,那么这将解决问题。
发布于 2016-03-28 04:38:37
根据文献资料,parfor还有第二种语法
parfor (loopvar = initval:endval, M)
statements
end这将在循环中使用最大的M工作人员执行语句:
使用
M指定parfor-loop正文中计算语句的MATLAB工作人员的最大数量。M必须是一个非负整数。默认情况下,MATLAB尽可能多地使用可用的工作人员。如果您指定了一个上限,那么MATLAB的雇用人数也不会超过这个数字,即使有更多的工人可用。如果您请求的资源超过可用资源,MATLAB将使用调用时可用的最大数量。
https://stackoverflow.com/questions/36249230
复制相似问题