运行 slurm 中的并行作业

Running parallel jobs in slurm

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

根据下图说明(来源: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 test_bash

但是,当我查看输出时,很明显 bash 脚本中只有一个 sruns 正在执行...谁能告诉我我哪里出错了以及如何出错我可以修好吗?

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

**更新:我已尝试按照此处所述更改代码:,但是..仍然没有用

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

谢谢!!

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

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

这将指示 srun 使用 sub-allocation 并按您的预期工作。

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

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

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