现在我在群集上执行以下操作:
(i)qsub-X -I -l walltime = 60:00:00,nodes = 1:ppn = 8
(ii)提交具有以下内容的myjob(使用./myjob)
#!/bin/bash
i=1
nohup ./a.out $i 2 42 &
nohup ./a.out $i 43 60 &
nohup ./a.out $i 61 74 &
nohup ./a.out $i 75 85 &
i=-1
nohup ./a.out $i 2 42 &
nohup ./a.out $i 43 60 &
nohup ./a.out $i 61 74 &
nohup ./a.out $i 75 85 &
(iii)提交后我打开一个新连接,qsub使用(i)编辑myjob文件,即将i从{1,-1}更改为{2,-2},并提交./myjob。
我从i = 1,-1到i = 20,-20重复这个。
有没有办法自动化这个?我花了一天时间(实际上超过一天)尝试使用作业数组,循环等来完成这项工作。应该有一种快速的方法来要求160个处理器并提交这份工作,或者让我们,人类,还没有进入计算的那个阶段?
任何帮助都非常高度,非常高兴。
PS - 是的,我知道我不是电脑巫师,请原谅我的无知。答案 0 :(得分:0)
这看起来像扭矩所以像下面的脚本应该做你想要的。基于以下假设:您的调度程序配置为专门为作业分配节点,并且您希望在8核心节点上使用所有核心。
#!/bin/bash
#PBS -l walltime=60:0:0
#PBS -t 1-8
#PBS -l nodes=1:ppn=8
i=${PBS_ARRAYID}
nohup ./a.out $i 2 42 &
nohup ./a.out $i 43 60 &
nohup ./a.out $i 61 74 &
nohup ./a.out $i 75 85 &
i=-${PBS_ARRAYID}
nohup ./a.out $i 2 42 &
nohup ./a.out $i 43 60 &
nohup ./a.out $i 61 74 &
nohup ./a.out $i 75 85 &
wait