仅在Sun Grid Engine集群的所有节点上运行作业一次

时间:2013-10-28 13:18:57

标签: cluster-computing job-scheduling sungridengine qsub

我想在使用qsub安排的64节点Sun Grid Engine群集的所有活动节点上运行作业。我目前正在使用array-job变量,但有时程序会在同一节点上多次调度。

qsub -t 1-64:1 -S /home/user/.local/bin/bash program.sh

是否可以并行地在所有节点上为每个节点安排一个作业?

2 个答案:

答案 0 :(得分:2)

您可以使用并行环境。使用以下命令创建并行环境:

qconf -ap "parallel_environment_name"

并将“allocation_rule”设置为1,这意味着所有进程都必须驻留在不同的主机上。然后在提交阵列作业时,指定要与并行环境一起使用的节点数。在你的情况下:

qsub -t 1-64:1 -pe "parallel_environment_name" 64 -S /home/user/.local/bin/bash program.sh

有关详细信息,请查看以下链接:http://linux.die.net/man/5/sge_peConfiguring a new parallel environment DanT's Grid Blog(链接不再有效; the wayback machinesoftpanorama上有副本)

答案 1 :(得分:0)

我有一个bash终端,你可以运行

for host in $(qhost | tail -n +4 | cut -d " " -f 1); do qsub -l hostname=$host program.sh; done
  • “ -​​ l hostname =”指定运行作业的主机。
  • for循环遍历qstat返回的结果,以获取每个节点并调用指定要使用的主机的命令。