高性能集群工作规范

1系统介绍

  目前北京市计算中心高性能计算机集群具有高性能计算服务器1000余台,总计算能力200万亿次,其中通用CPU计算 能力150万亿次,GPU计算能力50万亿次,存储空间达到1PB以上。计算网络采用40Gbps InfiniBandQD 4X的高性能通信网络。

1.1       硬件环境及拓扑结构

   北京市计算中心平台分为三个区:工业云区,科学计算区,生物计算区。根据功能划分,可将机群中的节点分为登陆节点,编译节点,服务节点,计算节点。用户可登陆的节点包括登陆节点和编译节点。

   登陆节点用于作业提交,作业查询和数据传输。登陆节点对用户可使用的内存和进程数 都进行了限制,用户不可以在登陆节点做编译和大文件的解压等操作。

   编译节点提供编译服务和安装应用程序服务。用户通过登陆节点认证后,可进入编译节点。

我们生物计算事业部的生物计算区逻辑视图如下:

机器型号分布如下:

存储服务器如下:

1.2       软件环境

  登陆节点,编译节点和各计算节点均安装了Suse Enterprise Linux 11.1 操作系统,各计算节点和编译节点均安装了编译器及部分常用软件,如Rblast等。

1.3       目录结构

如下图

/share 目录是共享存储目录,对每个计算节点,编译节点,登陆节点都是相同的。

  用户home目录是/share/home/username,用户的一切操作都应该在这个目录下进行。每个用户的目录都是做了磁盘限额的,具体大小根据合同规定设置。用户数据量接近磁盘配额限制的80%时应及时清理数据,以免影响正常工作。

  常用软件安装目录/share/software,一些常用的软件都安装在这个目录下。用户自己安装的软件请安装到自己的HOME目录下,如果是常用的并且开源的软件,可以建议管理员移至公共目录/share/software下。

  Lsf1是作业管理软件安装目录。除/share, /lsf1外,其他的为本地系统目录。

 

 

2系统远程登陆和作业提交

   系统的使用方式是通过ssh远程登陆北京市计算中心的集群,然后通过LSF 作业管理系统提交作业。

   通过ssh登陆的用户需要通过作业提交管理系统LSF提交命令bsub按照固定格式提交作业。登陆节点与后台的计算节点之间用防火墙隔离,用户是不能直接登录后台计算节点直接运行作业,必须通过bsub命令将作业送到 LSF作业管理系统后,由LSF在后台加载作业。

2.1远程登陆

登陆IP

电信:  124.127.245.61

联通:  114.251.219.61

教育网: 42.247.5.151

如果使用linux操作系统可在终端下直接ssh登陆,例如:

ssh username@124.127.245.11

如果使用windows操作系统则需要使用ssh客户端登陆。常用的ssh客户端有

Putty,下载地址: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

其他的ssh客户端有xshell,openssh等。

putty为例:输入要登陆主机的IP,选择连接类型ssh

弹出提示输入密码界面:

输入用户帐户密码:

完成登陆。

2.2提交作业

登陆系统以后,可以通过LSF作业管理系统的命令提交作业。

简单的LSF提交脚本格式如下:

hpc-login:~> cat lsb

脚本的详细参数意义会在下面详述。

通过命令提交作业bsub lsb

提交成功后可以看到:

查看作业状态bjobs

若不想等待作业运行结束可以杀掉作业:bkill 作业号

Hpc-login:~>bkill 115166

Job <115166>is being terminated

作业运行过程中的屏幕会输出保存到一个名为output.作业号的文件中。

 

如何编写作业脚本:

在终端下面使用vim或者其他文本编辑工具按以下格式编写脚本,然后保存退出。

脚本的基本格式:

APP_NAME=QueueName(队列名)

NP_PER_NODE=n(一个节点跑n个进程,不指定系统按照资源使用情况自主决定)
MY_MPI_TYPE=openmpi(
选择mpi的类型)

MY_MPT_HOME=(mpi的路径)

OMP_NUM_THREADS=4(如果使用OpenMPI 或者是单节点启动多个进程,需要通过该参数修正资源的分配,该值表示一个进程中运行了4个线程)

NP=N(使用CPU核数)

RUN=”****”(要运行的命令行参数或脚本)

通常仅APP_NAME NP RUN三个参数是必须的。APP_NAME需要使用系统管理员指定的队列,否则可能没有执行权限。默认情况下,用户的并行应用程序都是通过mpirun进行加载的;若用户的并行应用程序是通过其他方式加载,需和系统管理员沟通。

下面举例如何撰写作业脚本

例如某应用程序使用下面这个命令本地运行:

mpirun -np 40 -machinefile hostfile lammps<inputfile

我们可以将该命令改写为LSF可接受的作业脚本

APP_NAME=biology

NP=10

RUN=” lammps<inputfile”

注意,在RUN中凡是出现指定节点数和运行的具体节点的参数都会被作业管理系统自动删除,确保用户提交的作业能被作业管理系统统一管理。通常情况下,用户应该指定程序和数据所在的绝对路径。

 

管理作业和监控作业状态的常用命令

 

由于用户不能登陆计算节点,无法直接查看作业的进程信息。用户可以通过以下几种方法提交作业和查看作业信息。

bsub

bsub 作业脚本名,提交作业,如bsub lsb

bsub  -J  jobname lsb 使用-J选项指定作业名,否则作业名为脚本名。

bjobs

bjobs 作业号 可看作业的具体信息

显示信息分别为作业号,用户名,作业状态,队列名,提交作业的节点名,执行作业的节点,作业名,提交作业时间。

作业状态:RUN正在执行,PEND作业被挂起,这种情况常常是因为队列满或者用户已达到其最大使用核数在排队,DONE作业正常结束,EXIT作业异常退出(程序运行出错或用户自行杀死)

bjobs  不加作业号可以查看所有正在执行和挂起的作业。

bjobs  -a 查看所有的作业,包括最近结束的。

bjobs  -l 作业号,查看作业的详细信息,包括何时运行,运行目录,执行节点等。

bkill

bkill  作业号      杀死作业

bqueues

bqueues 队列名   可以查看队列信息

lshots

lshots 节点名     可看后台计算节点的基本信息

HOST_NAME(节点名子)ncpus(cpu核数)maxmem(最大可用内存)maxswp(交换分区)。不指定节点名时会显示所有节点信息。

bhosts

bhosts 节点名     可看后台节点信息,该信息主要表明节点是否可以跑新的任务。

状态ok表示可加载作业;closed表示不能加载作业(一般是cpu核数已被作业占满,或者被管理员close);unavail表示节点未开机或lsf进程未启动;unreached表示LSF进程出错,该节点不可用。不指定节点名时会显示所有节点的信息。

lsload

lsload 节点名      查看后台节点的负载

通常r15s反映的是最近15秒该节点运行的线程或进程数,如果作业被加载以后,r15s的值较小(明显小于该节点运行作业使用的核数),则该节点的作业可能未被正常加载。mem表示可用的内存。

以上所有命令的详细参数都可以用man 命令名的方式查看。

2.3 数据下载

可以使用任何ftp客户端软件(要支持sftp),filezlia,winscp等。

filezlia为例(下载地址:https://filezilla-project.org/)为例可以如下设置:

 

3注意事项

    如果不想通过作业管理系统提交作业,只是想进行一些程序的测试和编译工作时,千万不要在登陆节点上操作(因为运算会导致登陆节点变慢,进而妨碍到其他用户的登陆),而且超出系统限制的内存和进程数后会被禁止登陆。因此,编译程序或运行小规模的程序请到编译节点上操作。

提交作业前最好对自己的作业将使用的资源cpu,内存,硬盘空间以及运行时间做一个估计,以免造成不必要的错误。

    用户在开通帐号以后请及时修改密码,最好定期修改,以免资料泄露。

    鉴于所有的操作都是在Linux终端的,因此掌握基本的linux知识很有必要,例如:ls,cd ,mkdir,cp ,vim 等。

4 常见问题

4.1 如何登录到编译节点?

先登录到登陆节点,然后ssh bio-build1

4.2 登陆后乱码怎么办?

直接在终端输入LANG=””,但是开启新的终端时候需要重新输入。

      可以export  LANG=””

把这条命令添加到~/.profile文件中就不用每次输入这个命令了。

4.3 如何修改登陆密码?

用户得到得到登陆帐号和初始密码后应及时修改。可以使用passwd命令直接修改,先输入原密码,再输入两次新密码。输入新密码时不要过于简单。

4.4 如何查看用户可使用的最大CPU核数?

开通帐户时业务人员会告知,也可以使用busers命令查看,输出结果如下:

MAX对应的就是用户可使用的最大CPU核数。

4.5 如何查看用户可使用的队列?

开通帐户时业务人员会告知,也可使用命令查看:

bqueues  -u username

会输出可使用的队列。

4.6 MPI的路径?

不同的mpi库都安装在/usr/mpi/gcc目录下,进入编译节点,

ls  /usr/mpi/gcc

就可以看到了。