您好我使用matlab并行计算工具箱进行并行计算。我的笔记本电脑是2核4线程,所以我假设任务可以连接4个作品?但是,当我输入命令" matlabpool open"时,只连接了2个工作人员。任何人都可以告诉我如何指定要连接的确切工作人员数量,以便我可以分配任务的工作人员数量多于核心数量,从而提高计算效率吗?谢谢!
答案 0 :(得分:3)
您可以告诉matlab使用特定数量的工作人员,但它不会让您使用超过最大数量,这可能是您的物理核心数版本 - 和集群依赖。 R2012b允许在本地群集中使用12名工作人员R2014a allows more than 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名工作人员,但群集&#34; local&#34;将NumWorkers属性设置为允许最多4个工作者。跑一个 在更多工作人员上交换工作(本地群集最多为12),增加NumWorkers属性的值。 簇。本地群集的NumWorkers的默认值是本地计算机上的核心数。
因此,根据您的版本,您可能无法使用超过12名工作人员。如果您看到后者错误,则可以重新定义群集以允许更多内核。复制local
池:
mycluster=parcluster('local');
mycluster.NumWorkers=48;
matlabpool(mycluster,48);
...
matlabpool close;