语言, 其他语言

超算中作业管理系统PBS/LSF/Slurm的常用命令

本篇给出超算中作业管理系统中的一些常用命令。常见的作业管理系统有PBS、LSF、Slurm等,它们的命令不完全相同,但基本上是可以相互替代的,具体需要根据超算提供的默认作业管理系统来做选择。Linux系统的命令参考这篇:Linux的常用命令

一、PBS命令(qsub)和提交脚本

pbsnodes (查看所有节点)
pbsnodes -l free (查看空闲节点)
pbsnodes 某节点 (查看某节点状态)
ssh 某节点 (转到某节点)
exit (离开节点)
qsub 文件名.pbs/sh (提交任务)
qstat (列出队列)
qstat -a (列出队列的详细信息)
qstat -q (列出节点信息)
qstat -n (列出队列中使用的节点)
qstat -f jobid (查看jobid任务的详细信息)
qdel jobid (取消任务)
qdel $(seq 100 130) (连续任务号的批量取消任务)
lfs quota -uh $USER ~ (查看当前用户的存储配额,有的系统中支持lfs命令)

以下是用于PBS提交任务的文件信息,供参考。

提交任务,执行a.py。脚本文件(a.pbs 或 a.sh)为:

#!/bin/sh
#PBS -N task
#PBS -l nodes=1:ppn=1
python a.py

说明:如果只需要基本的 shell 功能,那么文件头部可以使用 #!/bin/sh;如果需要更复杂的功能,那么文件头部使用 #!/bin/bash 更合适。这里两种都可以,使用 #!/bin/sh 已经足够了。

如果是执行a.exe文件,脚本文件修改为:

#!/bin/sh
#PBS -N task
#PBS -l nodes=1:ppn=1
./a.exe

有的服务器上可能需要加上“cd $PBS_O_WORKDIR”,定位到工作目录中才可以找到a.py文件。脚本文件为:

#!/bin/sh
#PBS -N task
#PBS -l nodes=1:ppn=1
cd $PBS_O_WORKDIR
python a.py

如果集群或者超算存在多个队列,那么有的可能还需要加上队列名称,如“#PBS -q debug”,其中“debug”是队列名称,需要根据超算中提供的文档来进行修改。脚本文件为:

#!/bin/sh
#PBS -N task
#PBS -l nodes=1:ppn=1
#PBS -q debug
cd $PBS_O_WORKDIR
python a.py

另外,也可以指定OMP并行的线程数。一般来说,这里可以不用设置。如果指定OMP并行的线程数,脚本文件为:

#!/bin/sh
#PBS -N task
#PBS -l nodes=1:ppn=1
#PBS -q debug
cd $PBS_O_WORKDIR
export OMP_NUM_THREADS=1
python a.py

提交作业的命令为:qsub a.pbs 或 qsub a.sh

二、LSF命令(bsub)和提交脚本

bjobs 等效于 PBS 中的 qstat
bsub 等效于 PBS 中的 qsub
bkill 等效于 PBS 中的 qdel

提交任务的脚本(a.lsf 或 a.sh)为:

#!/bin/sh
#BSUB -J task
#BSUB -q score
#BSUB -n 1
python a.py

其中,-J 表示作业名称,-q 表示队列名称,有的系统中会强制要求提供这个队列名称,这里名称为“score”,需要根据超算中提供的文档来进行修改;-n 表示规定 CPU 的核心数。

提交作业的命令为:bsub < a.lsf 或 bsub < a.sh

说明:这里提交作业的命令中间好像是需要额外的一个小于号“<”,作用是把文件内容作为标准输入提供给 busb 命令。

三、Slurm命令(sbatch)和提交脚本

Slurm调度系统的默认提交作业命令为:sbatch,等效于 qsub。由于个人当前没有使用到,这里暂不给出详细内容。如果需使用,可查看后面的命令对比,然后直接做命令替代,以及脚本文件里的替代。

四、PBS、LSF、Slurm的命令对比

功能PBS (qsub)LSF (bsub)Slurm (sbatch)
提交作业qsub <script>bsub <script>sbatch <script>
查询作业状态qstatbjobssqueue
删除作业qdel <job_id>bkill <job_id>scancel <job_id>
查看作业详情qstat -f <job_id>bjobs -l <job_id>scontrol show job <job_id>
设置作业名称-N <job_name>-J <job_name>--job-name=<job_name>
指定队列/分区-q <queue>-q <queue>--partition=<partition>
指定资源(CPU)-l nodes=1:ppn=<num_cores>-n <num_cores>--cpus-per-task=<num_cores>

通过以上这种对比,可以帮助在不同调度系统间工作的用户快速找到等效命令。

更多阅读:超算提交任务时CPU数量的选取

85 次浏览

【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code