SLURM批处理数组循环?
SLURM batch array loop?
我有点 bash 挑战并试图通过 slurm 在我机构的集群上发送大型作业数组。我已经超出了我的限制(每个作业数组似乎有 1000 个作业)并且我不得不迭代地将列表解析为 1000 个块,这很乏味:
sbatch --array=17001-18000 -p <server-name> --time=12:00:00 <my-bash-script>
我该如何编写循环来执行此操作?每项工作大约需要 11 分钟,因此我需要在循环中建立暂停。否则,我怀疑 SLURM 会拒绝新的批处理作业。那里有人知道该怎么办吗?提前致谢!
像这样应该可以满足您的需求
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
我有点 bash 挑战并试图通过 slurm 在我机构的集群上发送大型作业数组。我已经超出了我的限制(每个作业数组似乎有 1000 个作业)并且我不得不迭代地将列表解析为 1000 个块,这很乏味:
sbatch --array=17001-18000 -p <server-name> --time=12:00:00 <my-bash-script>
我该如何编写循环来执行此操作?每项工作大约需要 11 分钟,因此我需要在循环中建立暂停。否则,我怀疑 SLURM 会拒绝新的批处理作业。那里有人知道该怎么办吗?提前致谢!
像这样应该可以满足您的需求
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