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

can't use all 8 cores in core i7 for matlab

当我执行

matlabpool open 4;

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

matlabpool open 8;

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

parfor loop 

在 Matlab 中?

比如我有8个类似的独立任务

我可以在 python 或 C#/C++ 中使用所有 8 个核心,加速速度快 8 倍吗?

默认情况下,MATLAB 使用您机器上的物理内核数而不是超线程内核数,因为超线程最终仍共享相同的物理 CPU 资源。关于 may/may 在 MATLAB Answers

上的 post 中使用超线程没有好处的特定情况有更多信息

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

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

或者,您可以设置最大计算线程数以用于 maxNumCompThreads

maxNumCompThreads(8)