关于 bash:SLURM 批处理数组循环?

SLURM batch array loop?

我有点 bash 挑战,并试图通过我机构集群上的 slurm 发送大量作业。我已经超出了我的限制(每个作业数组似乎有 1000 个作业)并且不得不迭代地将列表解析为 1000 个块,这很乏味:

1
sbatch --array=17001-18000 -p <server-name> --time=12:00:00 <my-bash-script>

我该如何编写一个循环来做到这一点?每个工作大约需要 11 分钟,所以我需要在循环中建立一个暂停。否则,我怀疑 SLURM 会拒绝新的批处理作业。有谁知道该怎么做?提前致谢!


这样的事情应该做你想做的事

1
2
3
4
5
6
7
8
9
10
11
12
START=1
END=10000
STEP=1000
SLEEP=700 #Just over 11 Minutes (in seconds)

for i in $(seq $START $STEP $END) ; do
    JSTART=$i
    JEND=$[ $JSTART + $STEP - 1 ]
    echo"Submitting with ${JSTART} and ${JEND}"
    sbatch --array=${JSTART}-${JEND} -p <server-name> --time=12:00:00 <my-bash-script>
    sleep $SLEEP
done