2013-12-18 6 views
3

Когда я бегу просто "matlab", maxNumCompThreads возвращает 4.Как определить количество потоков, используемых Matlab?

При запуске "matlab -singleCompThread", maxNumCompThreads возвращает 1.

Однако в обоих случаях, ps uH p <PID> | wc -l (который я взял из другого вопроса на так, чтобы определить число потоки, используемые в процессе) возвращается 35.

Что дает? Может ли кто-нибудь объяснить мне, что представляет собой 35, и могу ли я доверять maxNumCompThreads как указание на то, что Matlab использует только один поток?

ответ

4

Количество потоков, используемых MATLAB для вычислений (maxNumCompThreads), отличается от количества потоков, используемых MATLAB.exe для управления его внутренними функциями: интерпретатором, менеджером памяти, командной строкой, который знает, что еще. Если вы пишете MATLAB, представьте себе количество потоков, необходимых для управления различными текущими независимыми задачами. Возможно, взгляните на код Octave или FreeMat, чтобы получить представление.

+0

Имеет смысл. Благодаря! – CptSupermrkt

2

Многие из потоков, которые вы видите, используются JVM, который запускает MATLAB. Вы могли бы попробовать флаг «-nojvm», чтобы сократить вещи дальше. Очевидно, что без JVM функциональность очень ограничена. «-singleCompThread» ограничивает только потоки, используемые численным вычислением, такие как внутренняя многопоточность MATLAB, а также потоки, используемые внешними библиотеками, такими как MKL и FFTW.

Смежные вопросы