You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SLURM作业数组中为不同作业设置不同时长的方法咨询

SLURM数组作业分批次指定时长以提升调度优先级

可以通过SLURM的数组分片功能,为不同批次的数组任务指定不同的时间限制,让调度器更精准地分配资源,进而提升作业的调度优先级。

实现方法

有两种常用的实现方式:

1. 编写两个独立的作业脚本

分别针对1-40和41-80的任务编写脚本,设置对应时长:

针对1-40任务的脚本(ex_job_short.sh)

#!/bin/bash
#SBATCH --account=exacct
#SBATCH --time=01:00:00
#SBATCH --job-name="ex_job_1-40"
#SBATCH --array=1-40
#SBATCH --cpus-per-task=40
#SBATCH --mem-per-cpu=4G
#SBATCH --output=%x.%a.out

cd /ex_directory
srun Rscript ex_script.R

针对41-80任务的脚本(ex_job_long.sh)

#!/bin/bash
#SBATCH --account=exacct
#SBATCH --time=02:00:00
#SBATCH --job-name="ex_job_41-80"
#SBATCH --array=41-80
#SBATCH --cpus-per-task=40
#SBATCH --mem-per-cpu=4G
#SBATCH --output=%x.%a.out

cd /ex_directory
srun Rscript ex_script.R

分别提交两个脚本:

sbatch ex_job_short.sh
sbatch ex_job_long.sh

2. 用同一个脚本,通过命令行参数覆盖配置

如果不想编写多个脚本,可直接在sbatch命令中覆盖脚本里的--time和--array参数:

提交1-40的任务(1小时时长):

sbatch --time=01:00:00 --array=1-40 --job-name="ex_job_1-40" your_original_script.sh

提交41-80的任务(2小时时长):

sbatch --time=02:00:00 --array=41-80 --job-name="ex_job_41-80" your_original_script.sh

优先级提升的原因

SLURM调度器通常优先调度资源需求更紧凑的作业。将1-40任务的时长从2小时调整为实际需要的1小时后,调度器会认为这批任务占用资源的时间更短,能更快释放资源,因此更倾向于优先分配资源给它们,避免因设置过长时间限制而被延后调度。

内容的提问来源于stack exchange,提问作者David Veitch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 17:02:23