2013-10-31 100 views
0

现在我做一个集群上执行以下操作:如何创建一个作业脚本来自动执行此操作?

(ⅰ)的qsub-X -I -l walltime = 60:00:00,节点= 1:PPN = 8

(ⅱ)提交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 & 

(三)提交本我打开一个新的连接,使用的qsub(I),编辑myjob文件,即改变我从{1,后 - 1}改为{2,-2},然后提交./myjob。

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

是不是有一种方法来自动完成这个?我花了一天(实际上超过一天)试图使用作业数组,循环等来完成这项工作。应该有一个快速的方法来请求160个处理器并提交这个工作,或者让我们人类还没有进入计算阶段?

任何帮助是高度的,超级高度赞赏。

PS - 是的,我知道我不是电脑向导,请原谅我的无知。

回答

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