你好,我正在使用matlab并行计算工具箱进行并行计算。我的笔记本电脑是2核4线程,所以我假设任务可以连接到4个工作?然而,当我输入命令"matlabpool open"时,只有2个工人连接。谁能告诉我如何指定要连接的工人的确切数量,以便我可以分配任务的工人数量多于核心数量,使计算更有效?谢谢你!
您可以告诉matlab使用特定数量的工人,但它不会让您使用超过最大数量,这可能是物理内核的数量版本和集群相关。R2012b允许在本地集群中使用12个worker, R2014a允许超过12个。
From 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个worker的本地池,则会得到错误
你要求至少12个工人,但是集群"本地"有NumWorkers属性设置为允许最多4个工人。运行一个如果在更多的工人上通信作业(Local集群最多为12个),则增加NumWorkers属性的值集群。本地集群的NumWorkers的默认值是本地机器的核数。
因此,根据您的版本,您可能无法使用超过12个worker。如果看到后一个错误,可以重新定义集群以允许更多内核。复制local
池:
mycluster=parcluster('local');
mycluster.NumWorkers=48;
matlabpool(mycluster,48);
...
matlabpool close;