在 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
行之后,它现在应该可以工作了。
我正在尝试使用变量 --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
行之后,它现在应该可以工作了。