首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab并行处理:我可以限制在parfor级别使用的工人数量吗?

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

Stack Overflow用户
提问于 2016-03-27 15:41:26
回答 1查看 1.1K关注 0票数 0

我想知道是否有可能在parfor级别指定最大的工人#?

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

Rational:我有一些长时间运行的parfor循环,有时会有一些奇数的作业(比如5 ),在最后一个任务开始之前,会留下一个等待其他4个作业完成,这比只并行运行所有5个任务要慢得多。我想要的是一些代码,可以确定是否有5个作业,并行运行所有5个作业,但是如果有6个,也许运行2组3个作业是一个更好的设置,因此我们在这种情况下使用3个工作的限制,而对于前者则使用6个。

关闭并重新启动并行池以实现这一点是相当缓慢和烦人的。如果有一种方法只需要10名员工启动,并动态地决定在运行时使用多少名员工最有效,那么这将解决问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-28 04:38:37

根据文献资料parfor还有第二种语法

代码语言:javascript
复制
parfor (loopvar = initval:endval, M)
    statements
end

这将在循环中使用最大的M工作人员执行语句:

使用M指定parfor-loop正文中计算语句的MATLAB工作人员的最大数量。M必须是一个非负整数。默认情况下,MATLAB尽可能多地使用可用的工作人员。如果您指定了一个上限,那么MATLAB的雇用人数也不会超过这个数字,即使有更多的工人可用。如果您请求的资源超过可用资源,MATLAB将使用调用时可用的最大数量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36249230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档