我该如何确定Matlab正在使用的线程数?

4
当我简单运行 "matlab" 时,maxNumCompThreads 返回 4。
当我运行 "matlab -singleCompThread" 时,maxNumCompThreads 返回 1。
然而,在这两种情况下,ps uH p | wc -l(我从 SO 的另一个问题中学到的用于确定进程使用的线程数)返回 35。
是什么原因呢?有人能解释一下 35 代表什么,以及我是否可以信任 maxNumCompThreads 表示 Matlab 只使用一个线程吗?
2个回答

5

MATLAB用于计算的线程数(maxNumCompThreads)与MATLAB.exe用于管理其内部功能的线程数不同:解释器、内存管理器、命令行等等。如果您正在编写MATLAB,请想象管理各种正在进行的独立任务所需的线程数。也许可以查看Octave或FreeMat代码以获取灵感。


没问题,谢谢! - CptSupermrkt

2

你看到的许多线程都是由MATLAB启动的JVM使用的。你可以尝试使用标志“-nojvm”来进一步减少负载。显然,没有JVM,功能非常有限。“-singleCompThread”仅限制数值计算使用的线程,如MATLAB的内部多线程以及外部库(如MKL和FFTW)使用的线程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接