如何从MATLAB查询物理内核的数量?

时间:2011-11-29 13:21:17

标签: matlab operating-system multicore hyperthreading

有谁知道从MATLAB查询物理内核数量的方法?我特别希望得到物理核心数而不是逻辑核心数(当启用超线程时可能会有所不同)。

我需要这个方法是跨平台的(Windows和Linux,不关心Mac),但我很乐意根据{的输出使用两个单独的方法和switch语句{1}}。

到目前为止,我已经尝试过:

  1. computer
  2. java.lang.Runtime.getRuntime().availableProcessors
  3. System.Environment.ProcessorCount!wmic cpu get NumberOfCores
  4. 1是跨平台的,但返回逻辑处理器而不是物理处理器的数量。

    2仅适用于Windows,并且还返回逻辑处理器而不是物理处理器。

    3既提供了物理处理器,也提供了逻辑处理器,但也只提供了Windows,虽然我可以在DOS命令窗口中成功使用它,但出于某种原因,它似乎从MATLAB运行时会持续一段时间。

3 个答案:

答案 0 :(得分:7)

您需要使用未记录的命令

feature('numcores')

如下所述:http://undocumentedmatlab.com/blog/undocumented-feature-function/

答案 1 :(得分:3)

这将有效

getenv('NUMBER_OF_PROCESSORS')

答案 2 :(得分:0)

您可以使用maxNumCompThreads功能。然而,它已被弃用。它仍适用于Matlab 2011a。

maxNumCompThreads
Warning: maxNumCompThreads will be removed in a future release. Please remove any
instances of this function from your code. 
> In maxNumCompThreads at 27

ans =

     4