我有一个 Core i7
CPU 和 4 个真正的内核
。我的计算是否可以有超过 4 个 worker
,或者 worker 的数量总是等于核心数?
谢谢。
最佳答案
您将能够拥有 8 个 worker,因为 4 个核心具有超线程,为您提供 8 个逻辑核心。但是,因为只有 4 个物理核心,理论上 8 个 worker 应该不会比 4 个 worker 快很多。 但是,我确实发现在我的 i7 上 6 和 8 个 worker 比 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 个 worker。
如果您收到关于可用工作人员数量的错误,那么您需要更改设置: 并行菜单 -> 管理配置。右键单击“本地”行。在调度程序选项卡中,将“可供调度程序使用的工作线程数”设置为 8。
最后,你一次只能打开一个工作池,使用这个:
poolobj = gcp('nocreate');
delete(poolobj);
关闭一个打开的池。然后你可以尝试打开另一个有更多 worker 的矿池。
关于matlab - 我们可以拥有比 MATLAB 内核数量更多的 worker 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25562668/