slurm - 使用数组并同时限制作业数量 运行 直到它们完成

slurm - use array and limit the number of jobs running at the same time until they finish

假设我有以下 bash 脚本 (bash.sh) 在 HPC 上使用 slurm 运行:

#!/bin/bash
#SBATCH --job-name test
#SBATCH --ntasks 4
#SBATCH --time 00-05:00
#SBATCH --output out
#SBATCH --error err
#SBATCH --array=0-24

readarray -t VARS < file.txt
VAR=${VARS[$SLURM_ARRAY_TASK_ID]}
export VAR

bash my_script.sh

此脚本将 运行 25 倍 my_script.sh 脚本更改 file.txt 文件中的变量。换句话说,如果我使用命令 sbatch bash.sh.

提交 bash.sh,将同时启动 25 个作业

有没有办法可以限制作业的数量同时为 运行(例如 5),直到完成所有 25 个作业?

如果有办法做到这一点,我如何做同样的事情,但总共有 24 个工作(即不能被 5 整除的数字)?

谢谢

摘自 Slurm 的 sbatch 文档:

-a, --array=<indexes>
... A maximum number of simultaneously running tasks from the job array may be specified using a "%" separator. For example "--array=0-15%4" will limit the number of simultaneously running tasks from this job array to 4. ...

这应该将数组中 运行 个作业的数量限制为 5:

#SBATCH --array=0-24%5