如何在达到挂钟时间限制后自动将R脚本重新提交给Torque / Moab? R扭矩

时间:2013-07-15 17:54:09

标签: r torque

我有一个使用Torque / Moab运行的R脚本。但是,挂钟时间限制比脚本完成所需的时间短得多。由于要解决的问题的性质,脚本不能再并行化。

我修改了脚本以按特定时间间隔备份工作区,并从备份中恢复以继续计算。

但是,我需要一个解决方案,只要需要,就可以在达到挂钟时间限制后自动将脚本重新提交回Torque / Moab调度程序。

感谢。

2 个答案:

答案 0 :(得分:0)

你是否有权力增加你的挂号时间@提交?如果是这样,你可以在提交脚本中做到这样的事情:

#PBS -l walltime='00:00:00:00" #( DD:HH:min:SS)

如果不是我同意Manetheran,你必须写一个小客户来检查。

答案 1 :(得分:0)

要做的标准事情是制作提交自己的脚本。这称为链接。作为一个简单的bash示例,假设以下脚本为/path/to/script.sh,并且JOB_ID表示引用特定Torque设置的变量(可能是PBS_JOBID?)

#!/bin/bash
#MSUB OPTIONS...

#(
#sleep 60 #for example
msub -l depend=${JOB_ID} /path/to/script.sh > /path/to/next_job.msub
#)&

[do hard work here: run your r script, etc.]

canceljob $(cat /path/to/next_job.msub)

这里的关键是next_job行,它提交一个新的作业(通过依赖)只会在当前作业完成时运行(无论它是否死亡或正常完成)。如果"努力工作"步骤完成,然后取消后续工作。但是,如果"努力工作"由于挂钟时间(或其他原因)中断了步骤,从未到达canceljob命令,并且最终提交的作业将运行。

我通常将提交内容包装在parens中,稍微睡一会,并使用&(即我取消注释第4行,第5行和第7行)以将该进程与主脚本分离。这样,如果"努力工作"有一个问题,并在第一分钟左右失败,该过程终止,你不会得到一个非常短但失败的工作链。