不能将核心i7中的所有8个核心用于matlab

时间:2017-01-12 11:01:00

标签: multithreading matlab matlabpool

执行时

matlabpool open 4;

一切正常,但当我尝试执行

matlabpool open 8;

错误立即发生。我读到了关于超线程的知识,我知道8个内核中有4个是虚拟的。这意味着我不能以有效的方式使用所有8个核心

parfor loop 

在Matlab中?

例如,我有8个类似的独立任务。

我可以使用python或C#/ C ++中的所有8个内核加速8倍吗?

1 个答案:

答案 0 :(得分:3)

默认情况下,MATLAB使用物理内核的数量而不是机器上超线程内核的数量,因为超线程最终仍然共享相同的物理CPU资源。有关特定案例的更多信息,在MATLAB Answers

上的帖子中使用超线程可能/可能没有好处

如果您想使用8名工作人员,则需要修改NumWorkers配置的'local'属性

cluster = parcluster('local');
cluster.NumWorkers = 8;
saveProfile(cluster);

或者,您可以设置要与maxNumCompThreads

一起使用的最大计算线程数
maxNumCompThreads(8)