Matlab 产生了太多线程

问题描述

所以,我在 Linux 集群上运行,有很多计算节点可供选择。我得到了节点的独占使用权。批量提交。我遇到了限制线程数的问题。我应该提到我有一个 parfor 循环。当我使用 -singleCompThread 选项启动 matlab 时,它似乎不起作用。

我提交到一个有 2 个内核的节点,使用了提到的单线程选项,当我检查提交的作业时,它开始以 32 个线程运行。一旦到达 parfor 循环,它就有超过 600 个线程。

我还想运行特定数量的多线程,而不是单个线程。所以,我使用函数 maxnumCompThreads(32);限制为 32 个线程。我把这个函数放在文件的开头,也放在 parfor 循环中。然后,我将作业提交给具有 32 个内核的节点。它使用了超过 32 个线程。

有什么指导吗?我不知道。

解决方法

您很可能看到 MATLAB 正在使用非计算线程。您可以尝试以 -nojvm 模式启动 MATLAB - 这将进一步减少启动的非计算线程的数量。不幸的是,该模式与 parfor 不兼容。另外,您使用的是哪个版本的 MATLAB? (旧版本曾经存在问题,会在更高核心数的机器中产生大量 JVM 垃圾收集线程)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...