slurm 调度系统任务提交
Slurm提交作业有3种模式,分别为交互模式,批处理模式,分配模式,这三种方式只是用户使用方式的区别,在管理,调度,记账时同等对待。
Slurm 部分应用提交任务脚本模板路径:
/public/software/slurm_script
1、交互模式
命令srun
简介:交互式作业提交,提交命令后,等待作业执行完成之后返回命令行窗口。
示例
2、批处理模式
命令sbatch
简介
批处理作业是指用户编写作业脚本,指定资源需求约束,提交后台执行作业。 提交批处理作业的命令为 sbatch,用户提交命令即返回命令行窗口,但此时作业在进入调度状态,在资源满足要求时,分配完计算结点之后,系统将在所分配的第一个计算结点(而不是登录结点)上加载执行用户的作业脚本。批处理作业的脚本为一个文本文件,脚本第一行以“#!”字符开头,并制定脚本文件的解释程序,如 sh,bash。由于计算节点为精简环境,只提供 sh 和 bash 的默认支持。
计算开始后,工作目录中会生成以 slurm 开头的.out 文件为输出文件。
#!/bin/bash
#SBATCH -J vasp #指定作业名称
#SBATCH --ntasks=640 #此次作业所需总核数
#SBATCH --nodes=10 #作业所需节点数
#SBATCH --ntasks-per-node=64 #每个节点分配核数
#SBATCH -p low #在low分区进行计算
#BATCH --output=%j.log #设置计算输出日志文件
cd $SLURM_SUBMIT_DIR #进入计算目录,也可不写
source /public/software/profile.d/compiler_intel-compiler-2017.5.239.sh #加载环境变量
source /public/software/profile.d/mpi_intelmpi-2017.4.239.sh
srun hostname -s | sort -n |uniq>nodelist #设置计算host列表
mpirun -np $SLURM_NPROCS -machinefile nodelist vasp_std
#使用mpirun计算
示例1 以脚本方式提交
[sugon@gpunode1 ~]$ sbatch sleep.job Submitted batch job 19
[sugon@gpunode1 ~]$ cat sleep.job #!/bin/bash #SBATCH -J sleep #SBATCH -p debug #SBATCH --time=1 #SBATCH -N 2 #SBATCH -n 2 #SBATCH -o logs/%j.sleep #SBATCH -e logs/%j.sleep
echo ${SLURM_JOB_NODELIST} echo run.sh start on $(date) sleep 100 echo run.sh end on $(date)
[sugon@gpunode1 logs]$ cat 19.sleep gpunode[1-2] run.sh start on 2017年 08月 10日 星期四 11:00:59 CST run.sh end on 2017年 08月 10日 星期四 11:02:39 CST |
示例2通过标准输入将批处理脚本传递给sbatch
[sugon@gpunode1 logs]$ sbatch <<EOF > #!/bin/bash > sleep 10 > EOF Submitted batch job 20 |
EOF的解释
“<< EOF EOF”的作用是在命令执行过程中用户自定义输入,它类似于起到一个临时文件的作用,只是比使用文件更方便灵活。
3、分配模式
命令salloc
简介
结点资源抢占命令。该命令支持用户在提交作业前,抢占所需计算资源(此时开始计算所用机时)。
执行分为四步
提交资源分配请求,作业排队等待资源分配,作业开始运行,开始计费;
执行用户指定的命令;
命令执行结束;
退出作业释放资源,作业停止运行,停止计费。
示例