当我执行
matlabpool open 4;
一切正常,但是当我尝试执行时
matlabpool open 8;
错误立即发生。我读到了超线程,我知道 8 个内核中有 4 个是虚拟的。这是否意味着我不能以有效的方式使用所有 8 个内核
parfor loop
在 Matlab 中?
例如,我有 8 个类似的独立任务。
我可以在 python 或 C#/C++ 中使用所有 8 个内核,加速速度提高 8 倍吗?
当我执行
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)