2013-12-18 94 views
3

當運行簡單地"matlab",maxNumCompThreads返回4我如何確定Matlab正在使用的線程數?

當運行"matlab -singleCompThread",maxNumCompThreads返回在這兩種情況1.

然而,ps uH p <PID> | wc -l(這是我從另一個問題拿起SO確定的數量線程正在使用)返回35.

是什麼給出的?有人可以向我解釋35代表什麼,以及我是否可以相信maxNumCompThreads指出Matlab只使用一個線程?

回答

4

MATLAB用於計算的線程數(maxNumCompThreads)與MATLAB.exe用於管理其內部函數的線程數不同:解釋器,內存管理器,命令行,誰知道還有什麼。如果您正在編寫MATLAB,想象一下管理各種正在進行的獨立任務所需的線程數量。也許看看Octave或FreeMat代碼來獲得想法。

+0

有道理。謝謝! – CptSupermrkt

2

您看到的許多線程都由MATLAB啓動的JVM使用。你可以嘗試使用「-nojvm」這個標記來進一步減少它。顯然,沒有JVM,功能非常有限。 「-singleCompThread」僅限制數值計算使用的線程,如MATLAB的內部多線程以及外部庫(如MKL和FFTW)使用的線程。