繁体   English   中英

在 slurm 中运行并行作业

[英]Running parallel jobs in slurm

我想知道是否可以询问有关并行运行 slurm 作业的问题。(请注意,我是 slurm 和 linux 的新手,两天前才开始使用它......)

根据下图中的说明(来源: https ://hpc.nmsu.edu/discovery/slurm/serial-parallel-jobs/),

有关如何运行并行作业的说明

我设计了以下 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=1


for num in {0..29}

do
srun --ntasks=1 python FINAL_ARGPARSE_RUN.py --n_division 30 --start_num ${num} &
done

wait

的,我运行sbatch如下: sbatch test_bash

但是,当我查看输出时,很明显 bash 脚本中只有一个sruns正在执行......谁能告诉我哪里出了问题以及如何解决它?

**更新:当我查看错误文件时,我得到以下信息: srun: Job 43969 step creation temporarily disabled, retrying 我搜索了互联网,它说这可能是由于没有指定内存,因此没有足够的内存来做第二份工作。但我认为我在做--mem_per_cpu=300MB时已经指定了内存?

**更新:我已尝试按照此处所述更改代码: 为什么我的 slurm 作业步骤未并行启动? ,但是..仍然没有用

**潜在相关信息:我们的节点大约有 96 个核心,与说一个节点有 4 个核心或其他东西的教程相比,这似乎很奇怪

谢谢!!

尝试将--exclusive添加到srun命令行:

srun --exclusive --ntasks=1 python FINAL_ARGPARSE_RUN.py --n_division 30 --start_num ${num} &

这将指示srun使用子分配并按您的预期工作。

请注意, --exclusive选项在此上下文中的含义与与sbatch使用时的含义不同。

另请注意,不同版本的 Slurm 有不同的规范方式来执行此操作,但使用--exclusive应该适用于大多数版本。

即使您已经解决了您的问题,结果证明是其他问题,并且您已经在您的sbatch脚本中指定--mem_per_cpu=300MB ,但我想在我的情况下补充一点,我的 Slurm 设置不允许--mem_per_cpusbatch中,只有--mem 所以srun命令仍然会分配所有内存并阻塞后续步骤。 对我来说,关键是srun命令中指定--mem_per_cpu (或--mem )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM