PBS (Protable Batch System) 作业管理系统会根据一个集群上的可用计算节点的计算资源管理和调度所有计算作业的一个管理系统;SLURM (Simple Linux Utility for Resource Management)是一种可用于大型计算节点集群的高度可伸缩和容错的集群管理器和作业调度系统。

PBS和SLURM现在被广泛应用于集群作业管理调度,掌握其中一个另一个上手就相对容易,下面我们简单比较PBS和SLURM的异同:

1.在常用命令方面:

功能PBSSlurm
提交任务qsubsbatch
执行作业qsubsrun
交互模式qsub -Isrun –pty bash
查看队列状态qstat / showqsqueue
取消排队qdel / canceljobscancel

2.在脚本编写方面:

描述qsub定义sbatch定义备注
定义符#PBS#SBATCH
队列定义-q queuename-p queuename
账户名称-A accountname-A accountname 
节点数-l nodes=X:ppn=Y-N X
等待时间-l walltime=HH:MM:SS-t HH:MM:SS
标准输出-o outfilename-o outfilename在slurm中如果未定义 -e 将合并stdout/stderr输出
标注错误输出-e errorfilename-e errorfilename在slurm中如果未定义 -o 将合并stdout/stderr输出
合并输出-j oe 
email地址-M me@x.y–mail-user=me@x.y 
email选项-mb–mail-type=BEGIN任务开始时发邮件通知
任务 名称-N NAME–job-name=NAME 

3.环境变量方面:

PBSSlurm描述
PBS_O_WORKDIRSLURM_SUBMIT_DIR工作目录
PBS_NODEFILESLURM_JOB_NODELIST作业分配的节点列表
PBS_JOBIDSLURM_JOBID任务ID
PBS_NUM_NODESSLURM_JOB_NUM_NODES作业分配的节点数
PBS_NUM_PPNSLURM_CPUS_ON_NODE每个节点使用的CPU信息

4.脚本示例:

PBS脚本:


#!/bin/sh
#PBS -q ProdQ
#PBS -l nodes=2:ppn=24
#PBS -l walltime=120:00:00
# Charge job to myaccount
#PBS -A myaccount
# Write stdout+stderr to file
#PBS -o output.txt
#PBS -j oe
# Mail me on job start & end
#PBS -M myemail@universityname.ie
#PBS -m be
cd $PBS_O_WORKDIR
module load intel
mpiexec -n 48 ./my_mpi_app

Slurm脚本:


#!/bin/sh
#SBATCH -p ProdQ
#SBATCH -N 2
#SBATCH -t 120:00:00
# Charge job to myaccount
#SBATCH -A myaccount
# Write stdout+stderr to file
#SBATCH -o output.txt
# Mail me on job start & end
#SBATCH --mail-user=myemail@universityname.ie
#SBATCH --mail-type=BEGIN,END
cd $SLURM_SUBMIT_DIR
module load intel
srun ./my_mpi_app

5.官方站点:

Slurm:https://slurm.schedmd.com/download.html

PBS:https://www.openpbs.org/

参考资料:

1.https://www.ichec.ie/academic/national-hpc/kay-documentation/pbs-slurm

2.https://hpc.nih.gov/docs/pbs2slurm_tool.html

3.https://ww2.mathworks.cn/help/matlab-parallel-server/configure-parallel-computing-products-for-supported-third-party-schedulers-pbs-pro-platform-lsf-torque.html