我正在尝试使用python脚本提交我们研究所集群中的作业。
compile_cmd = 'ifort -openmp ran_numbers.f90 ' + fname \
+ ' ompscmf.f90 -o scmf.o'
subprocess.Popen(compile_cmd, shell=True)
Popen('qsub launcher',shell=True)
问题是,系统在这一点上是悬而未决的。上面的剧本有明显的错误吗?代码中提到的所有文件都在该目录中可用(我已经交叉检查过了)。qsub是一个用于向集群提交作业的命令。fname是我在该过程中创建的文件的名称。
你有什么错误吗。因为你好像错过了第二个Popen的“子流程。”。
我有一个脚本,用于使用qsub向集群提交多个作业。qsub通常以表单的形式接受作业提交
在我的工作中,job通常是bash(.sh)或python脚本(.py),它实际调用要在每个节点上运行的程序或代码。如果我想提交一个名为“test_job.sh”的工作,并且有最长的walltime,我会的
这相当于以下python代码
或者,如果你有一个bash脚本
然后通过
qsub job.sh
提交?编辑:老实说,最佳的作业排队方案因集群而异。简化作业提交脚本的一个简单方法是找出每个节点上有多少CPU可用。一些较新的排队系统允许您提交多个单CPU作业,它们将尽可能少地在节点上一起提交这些作业;但是,一些较旧的集群不会这样做,因此提交多个单CPU作业是不可取的。
假设集群中的每个节点都有8个CPU。你可以像写剧本一样
这样做的目的是一次在一个节点上提交8个作业(
&
表示在后台执行),并等待所有8个作业完成。对于每个节点有多个CPU的集群(例如,我使用的一个集群每个节点有48个CPU),这可能是最佳的。或者,如果提交多个单核心作业是最佳的,而上面的提交代码不起作用,那么可以使用python生成bash脚本以传递给qsub。
相关问题 更多 >
编程相关推荐