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 会拒绝新的批处理作业。有谁知道该怎么做?提前致谢!
- 为什么不做 sbatch -a 1-50000%1000?这将执行 50000 个任务,同时将调度程序限制为 1000 个并发。
-
谢谢你,我//’L//’我 – 我应该提到我确实按照哈佛 slurm 指南尝试过,但没有运气。我收到此错误:sbatch: error: Slurm temporarily unable to accept job, sleeping and retrying
-
当你尝试 squeue | wc -l 时你会得到什么?您需要将数组设置为该数字,然后像上面的示例一样尝试。
-
再次感谢!我现在正在使用下面的循环(需要一天左右的时间才能运行)并将尝试这个并报告回来。
这样的事情应该做你想做的事
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 |
- 谢谢你,tomgalpin – 这看起来像它。我将它保存为 Job_loop.sh 并将 shebang #!/bin/bash 添加到第一行。对不起,速度很慢,但是当我用 sh Job_loop.sh 运行它时,我得到一个错误:Job_loop.sh: line 8: JSTART: command not found Job_loop.sh: line 9: JEND: command not found。提前致谢!
- 非常感谢你!以防万一其他人尝试此操作 – 您只需将序列的顺序切换为 $START $STEP $END 并且您可以从 JEND 中减去 1,这样序列就不会重叠。
- 没问题,对于 seq 命令的顺序问题,我已经更新了。乐于帮助
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/270645.html