因此,我在Linux集群上运行,有许多计算节点可供选择。我得到了节点的独占使用权。批量提交。我遇到了限制线程数量的问题。我应该提一下,我有一个parfor循环。当我使用-singleCompThread选项启动matlab时,它似乎不起作用。
我提交到一个有2个核心的节点,使用前面提到的单线程选项,当我检查提交的作业时,它开始运行32个线程。一旦它到达parfor循环,它就有600多个线程。
我还想运行特定数量的多线程,而不是单线程。因此,我使用函数maxNumCompThreads( 32 );将线程限制为32个。我把这个函数放在文件的开头,也放在parfor循环中。然后,我将作业提交给一个具有32个核心的节点。它使用了超过32个线程。
有什么建议吗?我没有头绪。
发布于 2021-02-03 03:35:09
您很可能看到MATLAB正在使用非计算性线程。您可以尝试在-nojvm
模式下启动MATLAB -这将进一步减少启动的非计算性线程的数量。不幸的是,该模式与parfor
不兼容。另外,您使用的是哪个版本的MATLAB?(旧版本在更高的核心计数机器中产生大量JVM垃圾收集线程时会出现问题)
https://stackoverflow.com/questions/66015606
复制相似问题