我们可以在MATLAB中拥有更多的工作人员而不是核心数量吗?

时间:2014-08-29 06:19:06

标签: matlab parallel-processing worker

我有一个Core i7 CPU和4 real cores。我的计算能否超过4 workers,或者工人数量总是等于核心数量?

感谢。

1 个答案:

答案 0 :(得分:4)

您将拥有8名工作人员,因为4个核心具有超线程,为您提供8个逻辑核心。但是,因为只有4个物理核心,理论上8个工人不应该比4个工人快得多。 但是,我确实发现在我的i7上有6名和8名工人比4名工人快。

要执行此操作

matlabpool open 8;
parfor I = 1:N
    #your code
end

编辑:在R2014a matlabpool正在替换为parpool,因此请改用:

parpool('local', 8);
parfor I = 1:N
    #your code
end

在本地计算机上打开8个核心。

注意:当Matlab启动时,您只需要运行一次matlabpool命令。然后你可以运行许多带有parfor循环的脚本而不再打开worker,它们将保持打开状态,直到你关闭它们或关闭Matlab。

这应该在您的本地系统上打开8名工作人员。

如果您收到有关可用工作人员数量的错误,则需要更改设置: 并行菜单 - >管理配置。右键单击" local"线。在“调度程序”选项卡中,设置"可供调度程序使用的工作者数量"到8。

最后,您一次只能打开一个工作池,使用它:

poolobj = gcp('nocreate');
delete(poolobj);

关闭一个开放池。然后你可以尝试打开另一个有更多工人的游泳池。