CptSupermrkt
CptSupermrkt

Reputation: 7124

How can I determine the number of threads Matlab is using?

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

Answers (2)

Edric
Edric

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

chappjc
chappjc

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

Related Questions