【问题标题】:How can I determine the number of threads Matlab is using?如何确定 Matlab 正在使用的线程数?
【发布时间】:2014-01-06 01:17:24
【问题描述】:

当我简单地运行"matlab" 时,maxNumCompThreads 返回 4。

当我运行"matlab -singleCompThread" 时,maxNumCompThreads 返回 1。

但是,在这两种情况下,ps uH p <PID> | wc -l(我从另一个关于 SO 的问题中选择,以确定进程正在使用的线程数)返回 35。

什么给了?有人可以向我解释 35 代表什么,以及我是否可以相信 maxNumCompThreads 表明 Matlab 只使用一个线程?

【问题讨论】:

    标签: multithreading matlab process pid ps


    【解决方案1】:

    MATLAB 用于计算的线程数 (maxNumCompThreads) 与 MATLAB.exe 用于管理其内部函数的线程数不同:解释器、内存管理器、命令行,谁知道还有什么。如果您正在编写 MATLAB,想象一下管理各种正在进行的独立任务所需的线程数。或许看看 Octave 或 FreeMat 代码以获得一个想法。

    【讨论】:

    • 有道理。谢谢!
    【解决方案2】:

    您看到的许多线程都被 MATLAB 启动的 JVM 使用。您可以尝试使用标志“-nojvm”来进一步减少内容。显然,没有 JVM,功能非常有限。 “-singleCompThread”仅限制数值计算使用的线程,例如 MATLAB 的内部多线程以及外部库(例如 MKL 和 FFTW)使用的线程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 2018-10-14
      • 1970-01-01
      相关资源
      最近更新 更多