我有两个问题似乎与我有关:
首先,是否有必要在我的sbatch命令中显式终止Matlab?我查看了几个在线slurm教程,在某些情况下,作者包括一个退出命令:
http://www.umbc.edu/hpcf/resources-tara-2013/how-to-run-matlab.html
在某些人中他们不会:
其次,在作业中创建并行池时,我几乎总是收到以下警告:
警告:找到4个由池创建的预先存在的通信作业 正在运行,以及2个待处理或排队的通信作业。您可以使用 '删除(myCluster.Jobs)'删除使用profile local创建的所有作业。至 创造' myCluster'使用' myCluster = parcluster(' local')'
为什么会发生这种情况,有没有办法避免因为我而发生在我自己和他人身上?
答案 0 :(得分:1)
这取决于你如何启动Matlab。请注意,您的两个示例使用不同的方法来运行matlab脚本;第一个使用-r
选项
matlab -nodisplay -r "matrixmultiply, exit"
而第二个使用文件中的stdin重定向
matlab < runjob.m
在第一个解决方案中,Matlab进程将在脚本完成后保持运行,这就是为什么需要exit
命令的原因。在第二个解决方案中,当到达文件末尾时,stdin
关闭时,Matlab进程终止。
如果您没有结束matlab进程,Slurm将在达到最大分配时间时将其终止,如您提交脚本中的--time
选项或默认群集(或分区)值所定义。 / p>
为避免您提及的警告,请务必在作业结束时系统地使用matlabpool close
。如果您在同一节点上运行了多个Matlab实例,并且您有一个共享主目录,那么无论如何您都可能会收到警告,因为我相信有关打开的matlab池的信息存储在您家中的隐藏文件夹中。重新启动可能没有帮助,但找到这些文件并删除它们(但要小心,并询问系统管理员)。
答案 1 :(得分:0)
为避免警告,您必须删除
.matlab / local_cluster_jobs /
目录