Reputation: 7124
When I run simply "matlab"
, maxNumCompThreads returns 4.
When I run "matlab -singleCompThread"
, maxNumCompThreads returns 1.
However in both instances, ps uH p <PID> | wc -l
(which I picked up from another question on SO to determine the number of threads a process is using) returns 35.
What gives? Can somebody explain to me what the 35 represents, and whether or not I can trust maxNumCompThreads as indicating that Matlab is only using one thread?
Upvotes: 4
Views: 1657
Reputation: 25140
Many of the threads you see are used by the JVM that MATLAB launches. You could try the flag "-nojvm" to cut things down further. Obviously, without the JVM, functionality is very limited. "-singleCompThread" limits only the threads used by numeric computation such as MATLAB's intrinsic multithreading as well as threads used by external libraries such as MKL and FFTW.
Upvotes: 2
Reputation: 30579
The number of threads used by MATLAB for computation (maxNumCompThreads
) is different from the number of threads MATLAB.exe uses to manage its internal functions: the interpreter, memory manager, command line, who knows what else. If you were writing MATLAB, imagine the number of threads required to manage the various ongoing, independent tasks. Perhaps have a look at the Octave or FreeMat code to get an idea.
Upvotes: 5