2014-09-03 189 views
1

我有两个问题对我来说似乎有关:slurm中的Matlab进程终止

首先,是否有必要在我的sbatch命令中明确终止Matlab?我已经通过几个在线SLURM教程一看,在某些情况下,作者包括exit命令:在创建时

http://www.buffalo.edu/ccr/support/software-resources/compilers-programming-languages/matlab/PCT.html

二:

http://www.umbc.edu/hpcf/resources-tara-2013/how-to-run-matlab.html

而且在一些他们不这样做一个作业中的并行池,我几乎总是得到以下警告:

警告:找到4个预先存在的通信作业(s)由池创建 正在运行,以及2个正在处理或排队的作业。您可以使用 'delete(myCluster.Jobs)'删除使用配置文件本地创建的所有作业。要 打造“myCluster中”使用“myCluster中= parcluster(”本地“)”

这究竟是为什么,是有什么办法避免它发生在自己和对他人,因为我的?

回答

1

这取决于你如何启动Matlab。请注意,您的两个示例使用不同的方法来运行matlab脚本;第一个使用-r选项

matlab -nodisplay -r "matrixmultiply, exit" 

,而第二个使用标准输入重定向从文件

matlab < runjob.m 

在第一解决方案,Matlab的过程中会留下运行脚本完成后,即这就是为什么在那里需要exit命令。在第二个解决方案中,Matlab进程终止,因为stdin在达到文件结尾时关闭。

如果您没有结束matlab进程,Slurm会在达到最大分配时间时终止它,如您在提交脚本中的--time选项所定义的或由默认的集群(或分区)值所定义的。

为避免您提到的警告,请务必在工作结束时系统性地使用matlabpool close。如果你有多个Matlab实例在同一个节点上运行,并且你有一个共享的主目录,那么你可能会得到警告,因为我相信关于开放matlab池的信息存储在你家中的隐藏文件夹中。重新启动可能无济于事,但找到这些文件并将其删除(请小心,并询问系统管理员)。

+0

因此,如果过程是左,运行时,它就会被终止如果有的话?是否需要重新启动节点? Matlab的仍在运行的实例会引起我对预先存在的工作的警告信息? – Evan 2014-09-03 19:46:13

+0

我已经更新了我的答案 – damienfrancois 2014-09-03 19:55:09

0

避免你的警告,你必须删除

.matlab/local_cluster_jobs/

目录