在 argparse 中使用时,Slurm 作业数组不起作用

Slurm job arrays don't work when used in argparse

我正在尝试使用变量 --start_num 的不同值一次 运行 多个事物(即以并行方式)。我设计了以下bash脚本,

#!/bin/bash

#SBATCH --job-name fmriGLM #job name을 다르게 하기 위해서
#SBATCH --nodes=1
#SBATCH -t 16:00:00 # Time for running job
#SBATCH -o /scratch/connectome/dyhan316/fmri_preprocessing/FINAL_loop_over_all/output_fmri_glm.o%j #%j : job id 가 들어가는 것
#SBATCH -e /scratch/connectome/dyhan316/fmri_preprocessing/FINAL_loop_over_all/error_fmri_glm.e%j
pwd; hostname; date
#SBATCH --ntasks=30
#SBATCH --mem-per-cpu=3000MB
#SBATCH --cpus-per-task=5
#SBATCH -a 0-5

python FINAL_ARGPARSE_RUN.py --n_division 30 --start_num $SLURM_ARRAY_TASK_ID

然后,我运行sbatch --exclude master array_bash_2,但是没有用。我试过搜索很多网站并尝试了很多东西,但错误文件中仍然弹出错误 FINAL_ARGPARSE_RUN.py: error: argument --start_num: expected one argument ,让我觉得 bash 脚本中的 $SLURM_ARRAY_TASK_ID 没有被做得好...?

谁能解释这是为什么以及我该如何解决?

谢谢!

问题似乎出在您的行 pwd; hostname; date 上。 不要在 #SBATCH 指令之间添加任何 non-SBATCH 行,因为 Slurm 将在该点停止处理,这意味着您不是在提交数组作业,而只是提交一个作业。 将该行移到最后 #SBATCH 行之后,它现在应该可以工作了。