当前位置: 首页 > 工具软件 > SLURM > 使用案例 >

【slurm】如何快速入门slurm作业提交系统

白高逸
2023-12-01

前言:

本教程致力于快速掌握slurm基础提交,查看,撤销等命令,掌握bash shell文件的书写基本格式,面对不同软件的提交可以快速上手。


1. slurm的基本语法

1.1 查看调度系统中所有任务

squeue
# squeue
  JOBID PARTITION  NAME      USER   ST  TIME NODES NODELIST(REASON)
    135  defq     simple.s  rstober  S   0:10   1    atom01

JOBID为当前任务ID,PARTITION任务的设备分区,NAME任务名,USER任务提交者,ST状态,TIME耗时,NODES使用节点数量,NODELIST使用节点列表
任务状态码说明:PD排队;R运行;S挂起;CG正在退出

1.2 查看服务器节点和分区

sinfo 
PARTITION AVALL TIMELIMIT NODES
compute*   up   infinite   1 

1.3 部分操作

sacct -j ID   #查询已结束的任务
scontrol hold ID #暂停任务
scontrol release ID #释放暂停的任务
scancel ID    #取消指定的任务
scontrol show job ID  #显示任务细节
squeue -u username   #查看某用户提交的任务
sbatch test.sh     #提交任务
sbatch --help     #帮助文档

2. slurm中提交脚本的基本格式

#!/bin/bash

#SBATCH --job-name=test #作业名
#SBATCH --nodes=1 #节点数量
#SBATCH --ntasks=4 # 启动的任务数量
#SBATCH --ntasks-per-node=4  #每个节点启动的任务数量
#SBATCH --time= 1:00:00  #最大运行时间 此时设置为1day 也可以设置更长时间
##SBATCH --partition=machinename  #设置运行的分区,不同的分区的硬件不同,指定不同区域的服务器
#SBATCH --output=%j.out    #输出文件的位置
#SBATCH --error=%j.err   #报错信息输出

###body 主体的脚本内容

#运行python之前需要指定特定的anaconda虚拟环境
source activate Anaconda-env-name
python test.py #运行python程序
Rscript test.R  #运行R程序

提交VASP任务

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=8
#SBATCH --time=12:59:59
#SBATCH --mem=10GB
#例如运行vasp的程序之前需要把环境配置先写入脚本,需要先调用intel mpi
source /dir/intel64/bin/mpivars.sh  #dir是路径,链接到intel编译器中的mpivars.sh
ulimit -s unlimited  #不限制堆栈大小
mpirun -np $SLURM_NPROCS /share/apps/vasp/5.4.4/vasp_std

#简而言之就是运行软件前要将环境变量写入shell文件,然后写运行命令,再将任务分发到不同的节点上。

##slurm资源管理系统命令
#运行命令方式:sbatch run.sh

在重复提交任务的过程中,有些参数需要随不同任务更改,那么有部分参数可以在提交写入,这样同一个脚本就可以在不用修改内容的情况下多次使用

sbtach -N 2 -J test vasp.sh
-N 			#nodes数量
-J 			#job-name
-n			#ntasks
-o			#output
-e			#errorfile

在提交任务时也可以附带参数的提交,这样shell文件内可以共享输入的环境变量
sbatch run.sh --nodes 1 --ntasks 24


slurm中常用的环境变量:

$SLURM_NPROCS #要加载的进程数
$SLURM_JOB_NUM_NODES #分配给作业的节点数
$SLURM_SUBMIT_DIR #提交任务的当前路径
$SLURM_TASKS_PER_NODE 每节点要加载的任务数
$SLURM_JOB_ID 作业的 JobID
$SLURM_SUBMIT_DIR 提交作业时的工作目录
$SLURM_JOB_NODELIST 作业分配的节点列表
$SLURM_JOB_CPUS_PER_NODE 每个节点上分配给作业的 CPU 数
$SLURM_JOB_NUM_NODES 作业分配的节点数
$HOSTNAME 对于批处理作业,此变量被设置为批处理脚本所执行节点的节点名

参考教程:
slurm作业调度系统与天河二号的基本命令
集群管理系统Slurm安装与使用(知乎)
北京大学超算中心使用手册

 类似资料: