gpt4 book ai didi

hpc - SLURM:由于抢占而取消的自动重新排队作业的标志?

转载 作者:行者123 更新时间:2023-12-05 02:50:49 26 4
gpt4 key购买 nike

我在 SLURM 上运行以下作业数组:

#!/bin/bash

#SBATCH --array=1-1000
#SBATCH --partition=scavenge
#SBATCH --mem=2g
#SBATCH --time=1:00:00

module load Python/3.6.4-iomkl-2018a
python run.py ${SLURM_ARRAY_TASK_ID}

我的许多工作都出错了:

slurmstepd: error: *** JOB 63830645 ON p08r06n17 CANCELLED AT 2020-08-18T21:40:52 DUE TO PREEMPTION ***

如果这些作业被抢占,我想自动重新排队。有可能这样做吗?非常感谢有关此查询的任何指示!

最佳答案

这取决于您的集群的设置方式。抢占由 PreemptMode 处理选项。如果设置为“requeue”,作业将重新排队,如果 srun/sbatch 参数 requeue给出,或 JobRequeue设置为 1(参见 scontrol show config 的输出)。

您可以添加 requeue作业脚本的参数如下:

#!/bin/bash

#SBATCH --requeue
#SBATCH --array=1-1000
...

或者您可以在提交作业时传递 requeue 标志:

sbatch --requeue run.job

如果你的集群不是这种情况,那么你仍然可以解决这个问题:默认 KillWait时间是30秒。一旦你的工作被终止(出于任何原因),SIGTERM 和 SIGKILL 信号之间会有 30 秒的延迟。所以你可以trap sigterm 信号并手动重新排队您的作业,例如:

#!/bin/bash

#SBATCH --array=1-1000
#SBATCH --partition=scavenge
#SBATCH --mem=2g
#SBATCH --time=1:00:00

trap 'scontrol requeue ${SLURM_JOB_ID}; exit 15' 15
module load Python/3.6.4-iomkl-2018a
python run.py ${SLURM_ARRAY_TASK_ID} &
wait

这会在 SIGTERM 到达时立即重新排队作业。缺点:如果你想正确地取消这个工作,你需要使用 scancel -9 <jobid> ,因为 scancel 发送的默认信号是 SIGTERM。

关于hpc - SLURM:由于抢占而取消的自动重新排队作业的标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63478929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com