0

现在我正在集群上执行以下操作:

(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) 提交后,我打开一个新连接,使用 (i) 进行 qsub,编辑 myjob 文件,即将 i 从 {1,-1} 更改为 {2,-2},然后提交 ./myjob。

我从 i=1,-1 到 i=20,-20 重复这个过程。

没有办法自动化吗?我花了一天(实际上超过一天)尝试使用作业数组、for 循环等来完成这项工作。应该有一种快速的方法来要求 160 个处理器并提交这项工作,或者我们人类还没有进阶到计算机的那个阶段?

任何帮助都非常非常感谢。

PS - 是的,我知道我不是计算机巫师,请原谅我的无知。

4

1 回答 1

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
于 2013-11-13T11:47:39.880 回答