3

当我执行

matlabpool open 4;

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

matlabpool open 8;

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

parfor loop 

在 Matlab 中?

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

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

4

1 回答 1

3

默认情况下,MATLAB 使用物理内核的数量而不是您机器上的超线程内核的数量,因为超线程最终仍然共享相同的物理 CPU 资源。在MATLAB Answers上的这篇文章中,有更多关于使用超线程可能/可能没有好处的特定情况的信息

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

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

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

maxNumCompThreads(8)
于 2017-01-12T14:05:46.997 回答