我们能拥有比MATLAB中的内核数量更多的工作人员吗?

我们能拥有比MATLAB中的内核数量更多的工作人员吗?,matlab,parallel-processing,worker,Matlab,Parallel Processing,Worker,我有一个corei7CPU和4个真正的内核。我可以有4个以上的工人进行计算吗,或者工人的数量始终等于核心数量 谢谢。您将能够拥有8个工作线程,因为这4个内核具有超线程,可以为您提供8个逻辑内核。但是,因为只有4个物理核心,理论上8个工人的速度不应该比4个工人快很多。 然而,我发现在我的i7上,6个和8个工人比4个快 要做到这一点,请尝试 matlabpool open 8; parfor I = 1:N #your code end 编辑:在R2014amatlabpool中,将用pa

我有一个
corei7
CPU和
4个真正的内核
。我可以有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个工作进程

如果在可用工作人员数量方面出现错误,则需要更改设置: 并行菜单->管理配置。右键单击“本地”行。在“计划程序”选项卡中,将“计划程序可用的工作进程数”设置为8

最后,一次只能打开一个工作人员池,请使用以下方法:

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

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

要检查是否启用了超线程(即8个逻辑内核),请打开任务管理器并转到“性能”选项卡,您应该在CPU使用历史记录中看到8个图表。(仅限Windows)+
MATLAB
用于
core i7
的默认工作线程数是多少?我有一个错误:您请求了至少8个工作线程,但群集“local”将NumWorkers属性设置为最多允许4个工作线程。要在超过此数目的工作线程上运行通信作业(本地群集最多512个),请增加群集的NumWorkers属性的值。本地群集的NumWorkers的默认值是本地计算机上的内核数。现在我有这个错误!:<代码>找到了一个交互式会话。不能同时打开多个交互式会话。要终止现有会话,请使用“删除(gcp)”。在我记忆中,您应该能够在我在回答中提到的设置菜单中设置默认的核心数。