如何迭代地进行 qsub 工作?
让一个变量 i=2:10,对于每个 i,我想运行“tmp.r”并在进入下一个 i 之前暂停 10 秒。我的脚本名称是 test.pbs。我试过这个:
for i in `seq 1 10`;do;qsub job$i.sub;sleep 10;done
但是这个提交的工作将立即返回..
我想在 Cray XE6 上运行它。我的 R 代码使用了遍历算法,所以迭代提交作业会提高效率。
知道如何用 bash 或 python 做到这一点吗?
谢谢!
从本质上讲,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
我不确定为什么您不能只 qsub 一个脚本,该脚本将在运行后按顺序执行作业。
但如果有帮助,您可以提交作业并为它们提供仅在另一个作业(在本例中为前一个作业)完成时执行的条件: