当前位置:首页  使用指南  提交作业  CPU0队列
CPU0队列

1.命令行作业提交

高性能计算中心CPU0队列使用Slurm作业调度系统管理所有计算作业,该系统接受用户的作业请求,并将作业合理的分配到合适的节点上运行。下图为用户提交作业的示意图:


1 提交作业示意图

本节将介绍运行作业的两种方式,一种是将计算过程写成脚本,通过sbatch指令提交到计算节点执行,另一种是通过salloc申请到计算节点,再ssh连接到计算节点进行计算本节还将介绍如何sinfosqueuescancel等命令具体操作。

1) sbatch提交作业

注意:本文命令中所有wzhcexclu03”均代表CPU0队列。

用户使用sbatch命令向作业调度系统提交作业,sbatch可用参数十分丰富,可对作业进行非常细致的控制,这里简要介绍常用参数和方法。

运行作业的第一种方式是将整个计算过程,写到脚本中,通过sbatch指令提交到计算节点上执行。首先介绍一个简单的例子,假设我们的计算过程为,在计算节点上运行hostname指令,那么就可以如下编写作业脚本:

#!/bin/bash

#!/bin/bash

#SBATCH-J test

#SBATCH-p wzhcexclu03

#SBATCH-n 64

#SBATCH--error=%J.err

#SBATCH--output=%J.out

hostname

假设上面作业脚本的文件名为job.sh,通过以下命令提交:

sbatch job.sh

随后我们介绍脚本中涉及的参数:

-J test#作业在调度系统中的作业名为test;

-p wzhcexclu03##作业提交的指定分区为cpu

-n 64#这个作业使用64核运行,如果程序不支持多线程(openmp),这个数不应该超过1

--error=%J.err#脚本执行的错误输出将被保存在当%j.err文件下,%j表示作业号;

--output=%J.ou#脚本执行的输出将被保存在当%j.out文件下,%j表示作业号;

除此之外,还有一些常见的参数:

--help#显示帮助信息;

-D,--chdir=<directory>#指定工作目录;

--get-user-env#获取当前的环境变量;

--gres=<list>#使用gpu这类资源,如申请两块gpu--gres=gpu:2

-J,--job-name=<jobname>#指定该作业的作业名;

--mail-type=<type>#指定状态发生时,发送邮件通知,有效种类为(NONE,BEGIN,END,FAIL,REQUEUE,ALL);

--mail-user=<user>#发送给指定邮箱;

-n,--ntasks=<number>#sbatch并不会执行任务,当需要申请相应的资源来运行脚本,默认情况下一个任务一个核心,--cpus-per-task参数可以修改该默认值;

-c,--cpus-per-task=<ncpus>#每个任务所需要的核心数,默认为1

--ntasks-per-node=<ntasks>#每个节点的任务数,--ntasks参数的优先级高于该参数,如果使用--ntasks这个参数,那么将会变为每个节点最多运行的任务数;

-o,--output=<filename pattern>#输出文件,作业脚本中的输出将会输出到该文件;

-p,--partition=<partition_names>#将作业提交到对应分区;

-q,--qos=<qos>#指定QOS

-t,--time=<time>#允许作业运行的最大时间,目前未名一号和生科一号为5天,教学一号为两天;

-w,--nodelist=<node name list>#指定申请的节点;

-x,--exclude=<node name list>#排除指定的节点;

最后是一个跨节点多核心的例子,假设我们想用两个节点,每个节点40个核心来运行vasp,那么可以这么编写作业脚本:

#!/bin/bash

#SBATCH-J test

#SBATCH-p wzhcexclu03

#SBATCH-N 2

#SBATCH--ntasks-per-node=40

#SBATCH--error=%J.err

#SBATCH--output=%J.out

#导入MPI运行环境

module load intel/2017u5

#导入VASP运行环境

module load vasp/5.4.4

#执行VASP并行计算程序

mpirun-n 80 vasp_std

scontrol show job$SLURM_JOBID

 

2) salloc交互式运行作业

运行作业的第种方式是通过salloc交互式运行作业,首先需要申请计算节点,然后登录到申请到的计算节点上运行指令。salloc的参数与sbatch相同,以下提供申请一个节点6个核心,并跳转到该节点上运行程序示例:

salloc-p wzhcexclu03 -N1-n6

#salloc申请成功后会返回申请到的节点和作业ID等信息,假设申请到的是cu01节点,作业ID1078858

ssh j05r1n01#直接登录到刚刚申请到的节点j05r1n01调试作业

scancel 1078858#计算资源使用完后取消作业

squeue-j 1078858#查看作业是否还在运行,确保作业已经退出,避免产生不必要的费用

最后介绍一个跨节点使用案例;

申请两个节点,每个节点12个核心

salloc -p wzhcexclu03 -N2 --ntasks-per-node=80

# salloc 申请成功后会返回申请到的节点和作业ID等信息,假设申请到的是a8u03n[05-06]节点,作业ID1078858

# 这里申请两个节点,每个节点12个进程,每个进程一个核心

 

# 根据需求导入MPI环境

module load intel/2017u5

 

# 根据以下命令生成MPI需要的machine file

srun hostname -s | sort -n > slurm.hosts

 

mpirun -np 80 -machinefile slurm.hosts hostname

 

# 结束后退出或者结束任务

scancel 1078858

 

3) sinfo查看资源空闲状态

sinfo可查询各分区节点的空闲状态,输入sinfo命令,返回状态显示idel为空闲,mix为节点部分核心可以使用,alloc为已被占用,maint为维护中,如下所示:

 

sinfo的一些常用参数:

--help    # 显示sinfo命令的使用帮助信息;

-d        # 查看集群中没有响应的节点;

-i <seconds>    # 每隔相应的秒数,对输出的分区节点信息进行刷新

-n <name_list>    # 显示指定节点的信息,如果指定多个节点的话用逗号隔开;

-N    # 按每个节点一行的格式来显示信息;

-p  # <partition> 显示指定分区的信息,如果指定多个分区的话用逗号隔开;

-r    # 只显示响应的节点;

-R    # 显示节点不正常工作的原因;

 

4) squeue查看作业队列

用户可以通过squeue命令查看提交作业的排队情况,如下所示输入squeue命令:

squeue#CPU0队列使用命令

默认情况下squeue输出的内容如下,分别是作业号,分区,作业名,用户,作业状态,运行时间,节点数量,运行节点(如果还在排队则显示排队原因)。

JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)

squeue的常见参数:

--help#显示squeue命令的使用帮助信息;

-A<account_list>#显示指定账户下所有用户的作业,如果是多个账户的话用逗号隔开;

-i<seconds>#每隔相应的秒数,对输出的作业信息进行刷新

-j<job_id_list>#显示指定作业号的作业信息,如果是多个作业号的话用逗号隔开;

-n<name_list>#显示指定节点上的作业信息,如果指定多个节点的话用逗号隔开;

-t<state_list>#显示指定状态的作业信息,如果指定多个状态的话用逗号隔开;

-u<user_list>#显示指定用户的作业信息,如果是多个用户的话用逗号隔开;

-w<hostlist>#显示指定节点上运行的作业,如果是多个节点的话用逗号隔开;

 

5) scancel取消作业

用户可以通过scancel命令取消账号中已提交的作业,如下所示:

#取消作业ID123的作业

scancel 123

也可通过scancel命令取消自己账号上所有作业:

#注意whoami前后不是单引号

scancel-u user_name

scancel常见参数:

--help#显示scancel命令的使用帮助信息;

-A<account>#取消指定账户的作业,如果没有指定job_id,将取消所有;

-n<job_name>#取消指定作业名的作业;

-p<partition_name>#取消指定分区的作业;

-q<qos>#取消指定qos的作业;

-t<job_state_name>#取消指定作态的作业,PENDING,RUNNINGSUSPENDED

-u<user_name>#取消指定用户下的作业;

2.可视化作业提交

CPU0队列支持提交图形化作业。节点上部署的图形化界面可以方便用户进行桌面查看和操作,而不需要通过命令行来查看作业。如未能打开客户端界面,请及时联系管理员处理,以免计算资源浪费。操作步骤主要如下:

首先打开浏览器,在地址栏中输入https://hpcpt2.nuaa.edu.cn,进入网址后校外用户需要输入账号密码,登录高性能计算平台。校内用户需点击统一认证入口,输入统一身份认证账密码。

3 可视化作业页面


用户登录后,默认进入CPU2队列(nuaahpc2),点击用户端右上角的集群切换按钮,即可切换CPU0队列(yunhpc)。

4 切换队列


点击作业管理-运行作业,进入运行作业界面, 点击图形化作业的选择框进入提交图形化作业界面,如图5所示

5 运行作业页面


输入作业名称,选择队列,输入节点数量。信息填写完成后点击提交,注:最大运行时间非必填项,如果填写到时间后作业会被系统管理员kill

6 提交作业


作业提交后,点击运行作业,如图7所示:

7 提交作业


如图8即为作业提交成功,点击查看详情即可查看作业:

8 提交作业成功


点击作业名称,查看作业信息,如图9所示:

9 查看作业信息


点击客户端连接,进入计算节点GUI桌面用户如完成作业需自行点击取消作业,以免占用节点持续计费,如图10所示。

10 计算节点GUI桌面


成功打开计算节点GUI桌面,如图11所示:

11 GUI桌面


注:进入桌面后如有疑问请联系集群管理员协助操作。