当我执行

matlabpool open 4;

一切正常,但是当我尝试执行时
matlabpool open 8;

错误立即发生。我了解了超线程技术,并且知道8个核心中的4个是虚拟的。并不意味着我不能有效地使用所有8个核心
parfor loop

在Matlab中?

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

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

最佳答案

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

如果要使用8个工作程序,则需要修改NumWorkers配置的'local'属性

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

或者,您可以设置与 maxNumCompThreads 一起使用的最大计算线程数
maxNumCompThreads(8)

09-06 06:41