当我只运行"matlab"
时,maxNumCompThreads返回4.
当我运行"matlab -singleCompThread"
时,maxNumCompThreads返回1.
然而,在这两种情况下,ps uH p <PID> | wc -l
(我从SO上的另一个问题中选择以确定进程正在使用的线程数)返回35。
是什么给出的?有人可以向我解释35代表什么,以及我是否可以信任maxNumCompThreads表示Matlab只使用一个线程?
答案 0 :(得分:5)
MATLAB用于计算的线程数(maxNumCompThreads
)与MATLAB.exe用于管理其内部函数的线程数不同:解释器,内存管理器,命令行,谁知道还有什么。如果您正在编写MATLAB,请想象管理各种正在进行的独立任务所需的线程数。或许可以看看Octave或FreeMat代码来获得一个想法。
答案 1 :(得分:2)
您看到的许多线程都由MATLAB启动的JVM使用。您可以尝试使用“-nojvm”标志来进一步减少事情。显然,没有JVM,功能非常有限。 “-singleCompThread”仅限制数值计算使用的线程,例如MATLAB的内部多线程以及外部库(如MKL和FFTW)使用的线程。