如何迭代地进行qsub工作

时间:2013-06-06 04:53:23

标签: python bash qsub

如何迭代qsub工作?

让变量i = 2:10,对于每个i,我想运行“tmp.r”并暂停10秒然后再转到下一个i。我的脚本名称是test.pbs。 我试过这个:

for i in `seq 1 10`;do;qsub job$i.sub;sleep 10;done

但此提交的作业将立即返回..

我想在Cray XE6上运行它。 我的R代码使用遍历算法,因此迭代提交作业将使其更有效。

知道怎么用bash或python做这个吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

从本质上讲,qsub会立即返回一个作业ID,因此您将无法像您所描述的那样批量提交作业。

如果使用扭矩,则可以使用作业阵列。请参阅此文档

http://docs.adaptivecomputing.com/torque/help.htm#topics/commands/qsub.htm#-t

echo sleep 300 | qsub -t 10


[adaptive@mongo-test3 ~]$ qstat
Job id                    Name             User            Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
19188[].mongo-test3        STDIN            adaptive               0 R batch

如果您使用的是Moab等调度程序

[adaptive@mongo-test3 ~]$ showq

active jobs------------------------
JOBID              USERNAME      STATE PROCS   REMAINING            STARTTIME

19188[10]          adaptive    Running     1    00:59:19  Tue Jul 23 16:40:25

1 active job                1 of 8 processors in use by local jobs (12.50%)
                            1 of 1 nodes active      (100.00%)

eligible jobs----------------------
JOBID              USERNAME      STATE PROCS     WCLIMIT            QUEUETIME


0 eligible jobs

blocked jobs-----------------------
JOBID              USERNAME      STATE PROCS     WCLIMIT            QUEUETIME


0 blocked jobs

Total job:  1

答案 1 :(得分:0)

我不确定为什么你不能只调用一个脚本,然后在运行后按顺序执行作业。

但如果它有帮助,你可以提交作业并给他们条件,只有当另一份工作(在这种情况下是上一份工作)完成时才能执行:

Torque nested/successive qsub call