假设我有一个程序要在具有32个内核(64个线程)的
linux机器上运行,其中我只允许使用10个内核(20个线程).所以我想在运行程序之前指定它.
我用google搜索并发现了maxNumCompThreads,但是当我在一台装有MATLAB 2016a,核心i5(2核,4线程)的机器上测试时,它似乎无法工作.也就是说,当我执行以下任何操作时,我得到相同的功能输出(‘numCores’)
maxNumCompThreads(1)
maxNumCompThreads(2)
maxNumCompThreads(4)
maxNumCompThreads('Automatic')
然后我尝试了parpool(每次我用delete删除当前的parpool会话(gcp(‘nocreate’))).运行parpool(4)时出错(我想我理解为什么:parpool占用内核数量,自动启用超线程,测试机器只有2个物理内核).所以我测试了parpool(1)和parpool(2).同样,功能的输出(‘numCores’)没有改变.
问题:对于上述第一段所述情况,工作的正确工具是什么?功能(‘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.
编辑:当我在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);