我有适用于 Ubuntu 64 位的 Matlab R2012b。我有一个 Intel Core i3 CPU M 330 @ 2.13GHz × 4。
我想用parfor同时并行化 4 个循环。因为 Intel Core i3 有 2 个核心和 4 个线程,所以我使用以下代码:
if matlabpool('size') == 0 % checking to see if my pool is already open
matlabpool(4)
else
matlabpool close
matlabpool(4)
end
我收到以下错误:
Error:
您请求至少 4 个工作线程,但集群“本地”有
NumWorkers 属性设置为最多允许 2 个工作人员。
要在多于此数量的工作线程上运行通信作业(本地集群最多 12 个),请增加
集群的 NumWorkers 属性。 Local 集群的 NumWorkers 默认值为本地集群的核心数
机器。
为什么?我的机器中 NumWorkers 的默认值为 2,但是如果我可以同时执行 4 个循环,我该如何获取它?
增加默认值NumWorkers
,打开集群配置文件管理器(并行->管理集群配置文件)。选择local
配置文件,单击编辑,然后增加NumWorkers
到最大可能值(在您的情况下为 4)。现在可以创建一个matlabpool
机器上的工作人员数量多于物理核心数量。
但请注意,与使用相同数量的工作线程作为核心相比,使用多于核心的工作线程可能会导致性能下降。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)