Matlab 使用CPU的所有核心

Matlab 使用CPU的所有核心,matlab,parallel-processing,intel,cpu-speed,hyperthreading,Matlab,Parallel Processing,Intel,Cpu Speed,Hyperthreading,我想在matlab上使用并行计算,我有4核8线程的i7-960 CPU,当我在matlab中运行feature('numCores')命令时,我得到了这个 feature('numCores') MATLAB detected: 3 physical cores. MATLAB detected: 6 logical cores. MATLAB was assigned: 6 logical cores by the OS. MATLAB is using: 3 logical cores.

我想在matlab上使用并行计算,我有4核8线程的i7-960 CPU,当我在matlab中运行feature('numCores')命令时,我得到了这个

feature('numCores') 
MATLAB detected: 3 physical cores.
MATLAB detected: 6 logical cores.
MATLAB was assigned: 6 logical cores by the OS.
MATLAB is using: 3 logical cores.
MATLAB is not using all logical cores because hyper-threading is enabled.

ans =

     3
为什么matlab只检测3个物理核!如何使用所有逻辑和物理内核进行并行计算。
谢谢。

要使用所有逻辑进程(线程数),您需要在matlab设置中更改NumWorkers。 在matlab 2018菜单中,请执行以下操作: 首选项>>并行计算工具箱>>群集配置文件管理器>>单击右下角的“编辑”>>将“NumWorkers”设置为逻辑进程数,在您的情况下为8完成>>关闭并应用

您可以尝试一下
parpool(6)
看看会发生什么吗?此外,超线程并没有真正实现多大的效率,它更多的是用于轻量级的东西。您可以查看并在matlab的首选项中设置线程的数量。此外,由于
功能
不受支持且未记录,因此很难判断其结果的真正含义。当我尝试parpool(6)时,我得到了以下错误:使用parpool时出错(第99行),您请求了至少6个工作线程,但群集“local”的NumWorkers属性设置为最多允许3个工作线程。要在超过此数目的工作线程上运行通信作业(本地群集最多512个),请增加群集的NumWorkers属性的值。本地群集的NumWorkers的默认值是本地计算机上的内核数。