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

时间:2013-12-18 01:59:00

标签: multithreading matlab process pid ps

当我只运行"matlab"时,maxNumCompThreads返回4.

当我运行"matlab -singleCompThread"时,maxNumCompThreads返回1.

然而,在这两种情况下,ps uH p <PID> | wc -l(我从SO上的另一个问题中选择以确定进程正在使用的线程数)返回35。

是什么给出的?有人可以向我解释35代表什么,以及我是否可以信任maxNumCompThreads表示Matlab只使用一个线程?

2 个答案:

答案 0 :(得分:5)

MATLAB用于计算的线程数(maxNumCompThreads)与MATLAB.exe用于管理其内部函数的线程数不同:解释器,内存管理器,命令行,谁知道还有什么。如果您正在编写MATLAB,请想象管理各种正在进行的独立任务所需的线程数。或许可以看看Octave或FreeMat代码来获得一个想法。

答案 1 :(得分:2)

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