跳到主要内容

提交作业

规范说明

作业模板介绍

slurm作业模板

以vasp作业为例

#!/bin/bash
#SBATCH -p i64m512u # 申请的分区计算资源
#SBATCH -J myjob # 作业名称
#SBATCH --ntasks-per-node=64 # 每个计算节点上运行 task 的数量
#SBATCH -n 128 # -n: 任务运行多少核;也可以通过-N 来指定申请的节点,如2个节点,就可以用-N 2来指定;
#SBATCH -o job.%j.out # 作业运行log输出文件
#SBATCH -e job.%j.err # 作业错误信息log输出文件

module load vasp/6.3.2

MPIEXEC=`which mpirun`
VASP_STD=`which vasp_std`
###The i64M512U queue has 64 cores per computer
NP= $SLURM_STEP_NUM_TASKS

$MPIEXEC -np $NP $VASP_STD

# 模板介绍
# 第1行为shell脚本固定格式
# 第2行为指定分区为i64m512u(目前slurm按机器型号分为i64m512u,i64m512r,a128m512u,i64m1tga800u,i96m3tu几个分区,其中i表示Intelcpu,a表示amd cpu,64、128表示每台服务器的cpu核心,m512表示512g内存,具体机器型号参考硬件资源章节)
# 第3行为指定作业名称,自定义配置
# 第4行为每个节点运行多少核心(跨节点计算时必须配置该参数)
# 第5行指定总的核心数
# 第6行指定标准输出文件
# 第7行指定错误输入文件
# 第9,10,11 行为vasp作业命令

unischeduler 作业模板

以vasp作业为例

#!/bin/bash
#BSUB -J VASP
#BSUB -q i64m512u
#BSUB -n 128
#BSUB -o out.%J
#BSUB -e err.%J

module load vasp/6.3.2
MPIEXEC=`which mpirun`
$MPIEXEC -genvall -machinefile $MPI_HOSTFILE vasp_std

# 模板介绍
# 第1行为shell脚本固定格式
# 第2行为指定作业名称,自定义配置
# 第3行为指定队列为normal(默认为该队列)
# 第4行指定总的核心数
# 第5行指定标准输出文件
# 第6行指定错误输入文件
# 第9,10,11 行为vasp作业命令,其中$MPI_HOSTFILE 为调度给的环境变量,跨节点时必须 指定,intelmpi 为$MPI_HOSTFILE.openmi为$OMPI_HOSTFILE

串行任务

通过slurm 调度提交串行任务

单核单线程,以lammps为例 编写提交脚本 vim lammps.sh

#!/bin/bash
#SBATCH -p i64m512u
#SBATCH -J myjob
#SBATCH --ntasks-per-node=1 # 每个计算节点上运行 task 的数量
#SBATCH -n 1 # -n: 任务运行多少核
#SBATCH -o job.%j.out
#SBATCH -e job.%j.err

module load lammps/2022-serial
LMP=`which lmp`
$LMP < in.crack

提交作业

sbatch lammps.sh

通过unischeduler调度提交串行任务

单核单线程,以lammps为例 编写提交脚本 vim lammps.sh

#!/bin/bash
#BSUB -J lammps-test
#BSUB -n 4
#BSUB -e err.%J
#BSUB -o out.%J

module load lammps/2022-serial
lmp=`which lmp`
$lmp < in.crack

提交作业

source  /opt/jhinno/unischeduler/etc/profile.unischeduler
jsub < lammps.sh

并行任务

通过slurm调度提交 并行作业

#!/bin/bash
#SBATCH -o job.%j.out
#SBATCH -e job.%j.err
#SBATCH -p i64m512u
#SBATCH -J myjob
#SBATCH --ntasks-per-node=64 # 每个计算节点上运行 task 的数量
#SBATCH -n 64 # -n: 任务运行多少核

module load mpi/openmpi-4.1.5
module load lammps/2022-serial
export OMPI_MCA_btl=^openib
MPIRUN= `which mpirun`
LMP= `which lmp`
# The i64M512U queue has 64 cores per computer
NP=$SLURM_STEP_NUM_TASKS
$MPIRUN -np $NP $LMP < in.crack

提交作业

sbatch lammps.sh 

通过unischeduler调度提交 并行作业

#!/bin/bash
#BSUB -J lammps-test
#BSUB -n 128
#BSUB -e err.%J
#BSUB -o out.%J

module load mpi/openmpi-4.1.5
module load lammps/2022-serial
########################################################
# $JH_HOSTFILE: List of computer hostfiles
# $OMPI_HOSTFILE: List of computer hostfiles for OpenMPI
########################################################
export OMPI_MCA_btl=^openib
cd /hpc2ssd/home/hpcadmin/examples/crack
mpirun -np 128 -machinefile $OMPI_HOSTFILE /hpc2ssd/softwares/lammps_parallel/bin/lmp <in.crack

提交作业

/opt/jhinno/unischeduler/etc/profile.unischeduler
bsub < lammps.sh

VASP 软件任务

通过slurm调度提交

  1. 创建工作目录;
mkdir vasp
cd vasp
  1. 将运行vasp需要的相关文件上传到该文件夹下;

  2. 在该文件夹下编写作业脚本,并命名为vasp.sh,脚本内容如下

#!/bin/bash
#SBATCH -p i64m512u
#SBATCH -J myjob
#SBATCH --ntasks-per-node=64 # 每个计算节点上运行 task 的数量
#SBATCH -N 2 # -N: 指定使用节点数
#SBATCH -o job.%j.out
#SBATCH -e job.%j.err
# 导入运行环境
ulimit -s unlimited
ulimit -l unlimited
source /opt/intel/oneapi/setvars.sh --force
module load vasp/6.3.2
MPIRUM =`which mpirun`
VASP_std = `which vasp_std`
##The i64M512U queue has 64 cores per computer
NP=$SLURM_STEP_NUM_TASKS
$MPIRUN -np $NP $VASP_STD
  1. 提交作业;
sbatch vasp.sh

LAMMPS软件任务

通过slurm调度提交

  1. 创建工作目录;
mkdir lammps
cd lammps
  1. 将运行需要的相关文件上传到该文件夹下;
  2. 在该文件夹下编写作业脚本,并命名为lammps.sh,脚本内容如下
#!/bin/bash
#SBATCH -o job.%j.out
#SBATCH -e job.%j.err
#SBATCH -p i64m512u
#SBATCH -J myjob
#SBATCH --ntasks-per-node=64 # 每个计算节点上运行 task 的数量
#SBATCH -N 2 # -N: 指定使用节点数

# 导入环境
module load mpi/openmpi-4.1.5
module load lammps/2022-parallel
export OMPI_MCA_btl=^openib
MPIRUM =`which mpirun`
LMP = `which lmp`

# The i64M512U queue has 64 cores per computer
NP=$SLURM_STEP_NUM_TASKS

$MPIRUM -np $NP $LMP <in.crack > in.crack.log
  1. 提交作业;
sbatch lammps.sh

GROMACS任务任务

CPU

通过slurm调度提交

  1. 创建工作目录;
mkdir gromacs
cd gromacs
  1. 将运行gromacs需要的相关文件上传到该文件夹下;

  2. 在该文件夹下编写作业脚本,并命名为gromacs.sh,脚本内容如下

#!/bin/bash
#SBATCH -J gromacs
#SBATCH --cpus-per-task=16 per rank 16 cores
#SBATCH -n 4 # 4 MPI RANK
#SBATCH -N 1 # 需要1个节点
#SBATCH -p i64m512u
#SBATCH -o out.%J
#SBATCH -e err.%J

module load mpi/openmpi-4.1.5
module load gromacs/2023.2

MPIRUN=`which mpirun`
GMX_MPI=`which gmx_mpi`
# computer i64m512u each have two sockets
NP=$SLURM_STEP_NUM_TASKS
# notes: no need specify -ntomp at $GROMACS_OPTS
GROMACS_OPTS="" #GROMACS args"
$MPIRUN -np $NP $GMX_MPI mdrun $GROMACS_OPTS
  1. 提交作业;
sbatch gromacs.sh

GPU

通过slurm调度提交

  1. 创建工作目录;
mkdir gromacs
cd gromacs
  1. 将运行gromacs需要的相关文件上传到该文件夹下;

  2. 在该文件夹下编写作业脚本,并命名为gromacs.sh,脚本内容如下

#!/bin/bash
#SBATCH -J gromacs
#SBATCH --cpus-per-task=8
#SBATCH -n 4 ####
#SBATCH -N 1
#SBATCH -p i64m512u
#SBATCH -o out.%J
#SBATCH -e err.%J
#SBATCH -gres:gpu:A800:4

module load mpi/openmpi-4.1.5_cuda12
module load gromacs/2023.2_gpu

MPIRUN=`which mpirun`
GMX_MPI=`which gmx_mpi`
### computer i64m512u each have two sockets
NP=$SLURM_STEP_NUM_TASKS
NT=$SLURM_CPUS_PER_TASK
###notes: no need specify -ntomp at $GROMACS_OPTS
GROMACS_OPTS="" #GROMACS args"
##gpu part
GPU_ID=`echo $CUDA_VISIBLE_DEVICES | sed "s/,//g"`
GROMACS_GPU_OPTS="-gpu_id $GPU_ID -npme 1"
$MPIRUN -np $NP $GMX_MPI mdrun -ntomp $NT $GROMACS_GPU_OPTS $GROMACS_OPTS

TensorFlow 软件任务

通过slurm调度提交

  1. 创建工作目录;
mkdir tensorflow
cd tensorflow
  1. 将运行需要的相关文件上传到该文件夹下;

  2. 在该文件夹下编写作业脚本,并命名为tensorflow.sh,脚本内容如下

#!/bin/bash
#SBATCH -o job.%j.out
#SBATCH --partition=i64m1tga800u
#SBATCH -J tensorflow
#SBATCH --ntasks-per-node=64 # 每个计算节点上运行 task 的数量
#SBATCH -N 2 #-N: 指定使用节点数
#SBATCH --gres=gpu:1 # --gres=
#SBATCH --qos=low

module load cuda/11.8
source /hpc2ssd/softwares/anaconda3/bin/activate tensorflow-gpu
python test.py
  1. 提交作业;
sbatch tensorflow.sh

pytorch任务任务

通过slurm调度提交

  1. 创建工作目录;
mkdir pytorch
cd pytorch
  1. 将运行需要的相关文件上传到该文件夹下;

  2. 在该文件夹下编写作业脚本,并命名为 pytorch.sh,脚本内容如下

#!/bin/bash
#SBATCH -o job.%j.out
#SBATCH --partition=i64m1tga800u
#SBATCH -J pytorch
#SBATCH -N 1
#SBATCH --ntasks-per-node=2
#SBATCH --gres=gpu:1
#SBATCH --qos=low
module load cuda/11.8
source /hpc2ssd/softwares/anaconda3/bin/activate pytorch_gpu_2.0.1
python test.py
  1. 提交作业;
sbatch pytorch.sh