有谁知道从MATLAB查询物理内核数量的方法?我特别希望得到物理核心数而不是逻辑核心数(当启用超线程时可能会有所不同)。
我需要这个方法是跨平台的(Windows和Linux,不关心Mac),但我很乐意根据{的输出使用两个单独的方法和switch
语句{1}}。
到目前为止,我已经尝试过:
computer
java.lang.Runtime.getRuntime().availableProcessors
System.Environment.ProcessorCount
和!wmic cpu get NumberOfCores
。1是跨平台的,但返回逻辑处理器而不是物理处理器的数量。
2仅适用于Windows,并且还返回逻辑处理器而不是物理处理器。
3既提供了物理处理器,也提供了逻辑处理器,但也只提供了Windows,虽然我可以在DOS命令窗口中成功使用它,但出于某种原因,它似乎从MATLAB运行时会持续一段时间。
答案 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