MATLAB:内核/线程数的控制

MATLAB:内核/线程数的控制,matlab,parallel-processing,Matlab,Parallel Processing,假设我有一个程序要在linux机器上运行,它有32个内核(64个线程),其中我只允许使用10个内核(20个线程)。所以我想在运行程序之前指定它 我在谷歌上搜索并找到了maxNumCompThreads,但当我使用Matlab2016a,core i5(2核,4线程)在一台机器上测试它时,它似乎不起作用。也就是说,当我执行以下任一操作时,feature('numCores')会得到相同的输出 maxNumCompThreads(1) maxNumCompThreads(2) maxNumCompT

假设我有一个程序要在linux机器上运行,它有32个内核(64个线程),其中我只允许使用10个内核(20个线程)。所以我想在运行程序之前指定它

我在谷歌上搜索并找到了
maxNumCompThreads
,但当我使用Matlab2016a,core i5(2核,4线程)在一台机器上测试它时,它似乎不起作用。也就是说,当我执行以下任一操作时,
feature('numCores')
会得到相同的输出

maxNumCompThreads(1)
maxNumCompThreads(2)
maxNumCompThreads(4)
maxNumCompThreads('Automatic')
然后我尝试了
parpool
(每次我用
delete(gcp('nocreate'))关闭当前的parpool会话时)
)。我在运行
parpool(4)
时出错(我想我理解了原因:
parpool
接受了内核数量,并且自动启用了超线程,测试机只有2个物理内核)。所以我用
parpool(1)
parpool(2)
进行了测试。同样,
feature('numCores')
的输出没有改变

问题:那么,对于上述第一段所述的情况,什么是合适的工作工具?
feature('numCores')
是否是查看适当规范是否有效的正确监控工具


我一直在上面提到的相同的
功能('numCores')
输出是:

MATLAB detected: 2 physical cores.
MATLAB detected: 4 logical cores.
MATLAB was assigned: 4 logical cores by the OS.
MATLAB is using: 2 logical cores.
MATLAB is not using all logical cores because hyper-threading is enabled.

Edit:当我在linux机器上运行
parpool(10)
时,我得到了以下错误

Starting parallel pool (parpool) using the 'local' profile ... Error using parpo              ol (line 103)
Couldn't interpret output from psname.sh: ""

Error in parpool_test_2016_10_03 (line 3)
parpool(10);

不,这不是正确的监控工具。请查看
功能('numthreads')

>> feature('numcores')
MATLAB detected: 4 physical cores.
MATLAB detected: 8 logical cores.
MATLAB was assigned: 8 logical cores by the OS.
MATLAB is using: 4 logical cores.
MATLAB is not using all logical cores because hyper-threading is enabled.

ans =    
     4

>> feature('numthreads')    
ans =    
     4

>> maxNumCompThreads(1)    
ans =    
     4

>> feature('numcores')
MATLAB detected: 4 physical cores.
MATLAB detected: 8 logical cores.
MATLAB was assigned: 8 logical cores by the OS.
MATLAB is using: 4 logical cores.
MATLAB is not using all logical cores because hyper-threading is enabled.

ans =    
     4

>> feature('numthreads')    
ans =    
     1

一般来说,使用
功能时要小心,因为它没有文档记录,并且容易在没有警告的情况下更改。查看并获取有关
功能的更多信息

在一台具有2个内核和4个踏板的计算机中,您可能会有奇怪的结果,因为您不能使用更多/更少的
parpool(1)
没有什么意义,如果它只有1个内核,它就不是并行池。不知道,呃,只是hypothesis@AnderBiguri有趣。我看看能不能找到一个方法来测试它。将返回报告。@AnderBiguri请查看编辑
parpool
甚至在linux机器上都不工作。奇怪的是,它应该在linux上工作。另外,我认为你需要能够提供每个核心的许可证,但不能对此进行确认。