执行时
matlabpool open 4;
一切正常,但当我尝试执行
时matlabpool open 8;
错误立即发生。我读到了关于超线程的知识,我知道8个内核中有4个是虚拟的。这意味着我不能以有效的方式使用所有8个核心
parfor loop
在Matlab中?
例如,我有8个类似的独立任务。
我可以使用python或C#/ C ++中的所有8个内核加速8倍吗?
答案 0 :(得分:3)
默认情况下,MATLAB使用物理内核的数量而不是机器上超线程内核的数量,因为超线程最终仍然共享相同的物理CPU资源。有关特定案例的更多信息,在MATLAB Answers
上的帖子中使用超线程可能/可能没有好处如果您想使用8名工作人员,则需要修改NumWorkers
配置的'local'
属性
cluster = parcluster('local');
cluster.NumWorkers = 8;
saveProfile(cluster);
或者,您可以设置要与maxNumCompThreads
maxNumCompThreads(8)