当我执行
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)