您好我正在使用matlab并行计算工具箱进行并行计算。我的笔记本电脑是 2 核 4 线程,所以我假设该任务可以连接到 4 个作品?但是,当我输入命令“matlabpool open”时,只连接了 2 个工作人员。谁能告诉我如何指定要连接的确切工人数量,以便我可以将任务分配给工人数量多于核心数量,以提高计算效率?谢谢!
1 回答
您可以告诉 matlab 使用特定数量的工人,但它不会让您使用超过最大数量,这可能是您的物理内核版本和集群相关的数量。R2012b 允许在本地集群中使用 12 个 worker,R2014a 允许超过 12 个。
来自help matlabpool
:
...
matlabpool [poolSize]
...
matlabpool
或matlabpool OPEN
使用该配置文件指定的池大小的默认集群配置文件启动工作程序池。您还可以使用 指定池大小matlabpool OPEN <poolSize>
,但请注意,大多数集群都有可以启动的最大进程数。
% Start a worker pool using the local profile with 2 workers:
matlabpool local 2
更新:
我玩了一下。在 R2012b 上要求 16 名工人给了我错误
您请求至少 16 名工作人员,但本地集群只允许 12 名工作人员。
这意味着这个版本不可能有更多的工人。但是,如果我用 12 个工作人员调用本地池,我会收到错误消息
您要求至少 12 个工作人员,但集群“本地”的 NumWorkers 属性设置为最多允许 4 个工作人员。要在比这更多的工作人员(本地集群最多 12 个)上运行通信作业,请增加集群的 NumWorkers 属性的值。本地集群的 NumWorkers 的默认值是本地机器上的核心数。
因此,您可能无法使用超过 12 个工作人员,具体取决于您的版本。如果您看到后一个错误,您可以重新定义集群以允许更多内核。复制local
池:
mycluster=parcluster('local');
mycluster.NumWorkers=48;
matlabpool(mycluster,48);
...
matlabpool close;