2

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

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

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

谢谢。

4

2 回答 2

0

你有权力增加你的墙时间@提交吗?如果是这样,您可以在提交脚本中执行以下操作:

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

如果不是,我同意 Manetheran 的观点,你将不得不写一个小客户来检查。

于 2013-07-26T20:50:48.227 回答
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则永远不会到达命令,并且提交的作业最终会运行。

我通常将提交包裹在括号中,稍作休息,然后使用&(即我取消注释第 4、第 5 和第 7 行)将该过程与主脚本分离。这样,如果“艰苦的工作”出现问题并在第一分钟左右失败,则该过程将终止,并且您不会获得无限的非常短但失败的工作链。

于 2016-02-05T23:49:21.450 回答