温馨提示:本文翻译自stackoverflow.com,查看原文请点击:bash - SLURM batch array loop?

bash - SLURM批处理数组循环?

发布于 2020-03-27 16:13:23

我在某种程度上受到挑战,并想通过我机构集群上的饮发送大量工作。我超出了我的限制(每个作业数组似乎有1000个作业),并且不得不迭代地将列表解析为1000个块,这很繁琐:

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

我如何编写一个循环来做到这一点?每个作业大约需要11分钟,因此我需要在循环中暂停一下。否则,我怀疑SLURM将拒绝新的批处理作业。外面有人知道该怎么办吗?提前致谢!

查看更多

查看更多

提问者
John Casey
被浏览
101
tomgalpin 2020-01-31 18:23

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

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览