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
假设我有以下 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