#SBATCH --job-name=test # 作业名 #SBATCH --partition=small # small 队列 #SBATCH -n 20 # 总核数需 <=20 #SBATCH --ntasks-per-node=20 # 每节点核数 #SBATCH --output=%j.out #SBATCH --error=%j.err

cpu

cpu 队列 slurm 脚本示例:多节点(160 核)

#!/bin/bash
#SBATCH --job-name=test        # 作业名
#SBATCH --partition=cpu        # cpu 队列
#SBATCH -n 160                # 总核数 160
#SBATCH --ntasks-per-node=40   # 每节点核数
#SBATCH --output=%j.out
#SBATCH --error=%j.err

cpu 队列 slurm 脚本示例:单节点(40 核)

#!/bin/bash
#SBATCH --job-name=test        # 作业名
#SBATCH --partition=cpu        # cpu 队列
#SBATCH -n 40                 # 总核数 40
#SBATCH --ntasks-per-node=40   # 每节点核数
#SBATCH --output=%j.out
#SBATCH --error=%j.err

cpu 队列 slurm 脚本示例:单节点(20核),比如为了独占整个节点的大内存

#!/bin/bash
#SBATCH --job-name=test        # 作业名
#SBATCH --partition=cpu        # cpu 队列
#SBATCH -n 20                 # 总核数 20
#SBATCH --ntasks-per-node=20   # 每节点核数
#SBATCH --output=%j.out
#SBATCH --error=%j.err
#SBATCH --exclusive            # 独占节点(核数小于 40,cpu 队列必须加上此命令)

huge

huge 队列 slurm 脚本示例:单节点(20 核,最高可用 80 核)

#!/bin/bash
#SBATCH --job-name=test         # 作业名
#SBATCH --partition=huge        # huge 队列
#SBATCH -n 20 # 总核数 20
#SBATCH --ntasks-per-node=20    # 每节点核数
#SBATCH --output=%j.out
#SBATCH --error=%j.err

192c6t

192c6t 队列 slurm 脚本示例:单节点(96 核,最高可用 192 核)

#!/bin/bash
#SBATCH --job-name=test        # 作业名
#SBATCH --partition=192c6      # 192c6t 队列
#SBATCH -n 96                 # 总核数 96
#SBATCH --ntasks-per-node=96   # 每节点核数
#SBATCH --output=%j.out
#SBATCH --error=%j.err

dgx2

dgx2 队列 slurm 脚本示例:单节点,分配 2 块 GPU,GPU:CPU 配比 1:6

#!/bin/bash
#SBATCH --job-name=test        # 作业名
#SBATCH --partition=dgx2       # dgx2 队列
#SBATCH -N 1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=12     # 1:6 的 GPU:CPU 配比
#SBATCH --gres=gpu:2           # 2 块 GPU
#SBATCH --output=%j.out
#SBATCH --error=%j.err

arm128c256g

arm128c256g 队列 slurm 脚本示例:单节点60核

#!/bin/bash
#SBATCH --job-name=test
#SBATCH --partition=arm128c256g
#SBATCH -N 1
#SBATCH --ntasks-per-node=60
#SBATCH --output=%j.out
#SBATCH --error=%j.err
source /lustre/share/singularity/commercial-app/vasp/activate arm
mpirun -n $SLURM_NTASKS vasp_std

常用软件作业示例

下面根据不同应用软件,示例 slurm 作业脚本

LAMMPS 作业示例

cpu 队列 slurm 脚本示例 LAMMPS

#!/bin/bash
#SBATCH --job-name=test         # 作业名
#SBATCH --partition=cpu         # cpu 队列
#SBATCH -n 80                  # 总核数 80
#SBATCH --ntasks-per-node=40    # 每节点核数
#SBATCH --output=%j.out
#SBATCH --error=%j.err
module load lammps
srun --mpi=pmi2 lmp -i YOUR_INPUT_FILE

GROMACS 作业示例

cpu 队列 slurm 脚本示例 GROMACS

#!/bin/bash
#SBATCH --job-name=test         # 作业名
#SBATCH --partition=cpu         # cpu 队列
#SBATCH -n 80                  # 总核数 80
#SBATCH --ntasks-per-node=40    # 每节点核数
#SBATCH --output=%j.out
#SBATCH --error=%j.err
module load gromacs/2020-cpu
srun --mpi=pmi2 gmx_mpi mdrun -deffnm -s test.tpr -ntomp 1

Quantum ESPRESSO

cpu 队列 slurm 脚本示例 Quantum ESPRESSO

#!/bin/bash
#SBATCH --job-name=test         # 作业名
#SBATCH --partition=cpu         # cpu 队列
#SBATCH -n 80                  # 总核数 80
#SBATCH --ntasks-per-node=40    # 每节点核数
#SBATCH --output=%j.out
#SBATCH --error=%j.err
module load quantum-espresso
srun --mpi=pmi2 pw.x -i test.in

OpenFOAM

cpu 队列 slurm 脚本示例 OpenFoam

#!/bin/bash
#SBATCH --job-name=test         # 作业名
#SBATCH --partition=cpu         # cpu 队列
#SBATCH -n 80                  # 总核数 80
#SBATCH --ntasks-per-node=40    # 每节点核数
#SBATCH --output=%j.out
#SBATCH --error=%j.err
module load openfoam
srun --mpi=pmi2 icoFoam -parallel

TensorFlow

gpu 队列 slurm 脚本示例 TensorFlow

#!/bin/bash
#SBATCH -J test
#SBATCH -p dgx2
#SBATCH -o %j.out
#SBATCH -e %j.err
#SBATCH -N 1
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=12
#SBATCH --gres=gpu:2
module load miniconda3
source activate tf-env
python -c ’import tensorflow as tf; \
       print(tf.__version__); \
       print(tf.test.is_gpu_available());

其它示例

Job Array 阵列作业

一批作业,若所需资源和内容相似,可借助 Job Array 批量提交。Job Array 中的每一个作业在调度时视为独立的作业。

cpu 队列 slurm 脚本示例 array

#!/bin/bash
#SBATCH --job-name=test           # 作业名
#SBATCH --partition=small         # small 队列
#SBATCH -n 1                      # 总核数 1
#SBATCH --ntasks-per-node=1       # 每节点核数
#SBATCH --output=array_%A_%a.out
#SBATCH --error=array_%A_%a.err
#SBATCH --array=1-20%10           # 总共 20 个子任务,每次最多同时运行 10 个
echo $SLURM_ARRAY_TASK_ID

作业状态邮件提醒

–mail-type= 指定状态发生时,发送邮件通知: ALL, BEGIN, END, FAIL

small 队列 slurm 脚本示例:邮件提醒

#!/bin/bash
#SBATCH --job-name=test
#SBATCH --partition=small
#SBATCH -n 20
#SBATCH --ntasks-per-node=20
#SBATCH --output=%j.out
#SBATCH --error=%j.err
#SBATCH --mail-type=end           # 作业结束时,邮件提醒
#SBATCH --mail-user=XX@sjtu.edu.cn