深圳超算HPC使用手册v3.1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
深圳超算HPC使用手册v3.1
系统运行部
2014年2月24日
1. (1)
2. (3)
2.1 (3)
2.2 (3)
2.3 (3)
2.4 (4)
3. (5)
3.1 (6)
3.2 (10)
3.3 (11)
3.3.1 (11)
3.3.2 GPU (15)
3.3.3 (16)
3.4 (21)
A (24)
1 (24)
2 MPI (24)
3 (24)
4 (openmp) (25)
5 OpenMP+MPI (26)
6 mpich2(RAW) (27)
B (29)
1 Fluent (29)
2 ANSYS (31)
3 CFX (34)
4 ABAQUS (36)
5 MARC (38)
6 NASTRAN (40)
7 LSDYNA (42)
8 DYTRAN (44)
9 ADF (46)
10 HFSS (48)
C (50)
国家超级计算深圳中心采用由中科院和曙光公司联合研制的曙光6000超级计算系统,该系统整体计算能力实测峰值为1.271千万亿次浮点运算(1.271PFLOPS)。
于2011年11月16日投入运行。
本文主要介绍曙光6000超级计算系统的使用方法和环境。
1.基本环境
为了方便管理和使用,曙光6000超级计算系统高性能计算区分成5个逻辑分区,分别为科学计算分区(GK)、工程计算分区(GG)、生命科学计算(GS)、胖节点分区(Fn)以及龙芯计算分区(Lx)。
其中GK、GG、GS分区的每个计算节点由2颗Intel5650六核心处理器组成、主频2.66GHz,配置24GB DDR3内存以及1块Nvidia C2050 GPGPU卡,一块本地149G的 SAS硬盘,一块QDR IB子卡。
胖节点分区(Fn)共配置128台4路A840 SMP计算节点,每个计算节点配置4颗AMD 6136 八核心处理,主频2.4GHz,内存128GB。
龙芯分区(Lx)共配置320台龙芯节点,每个节点配置1颗AMD64双核CPU和8颗龙芯处理器,20G内存,1块DDR IB网卡。
曙光6000超级计算主机系统的存储分为两种:每个计算节点配备的本地磁盘;由存储节点建立的高速并行文件系统。
其中本地硬盘严禁普通用户使用,仅供计算节点操作系统使用,用户的所有操作都应该在账号所对应的$HOME(该$HOME所在的位置
为高速并行文件系统)下进行,用户登录时,会自动被引导到自己账号的$HOME下面。
鉴于存储空间的有限和数据安全的考虑,请用户务必做到及时下载计算结果文件并清理空间。
用户可以使用VPN进入登录节点,该登录节点主要用于登录超算内网、使用LSF作业调度系统提交作业,禁止在登录节点运行程序、编译及数据上传下载。
2.系统软件环境
2.1
计算节点和前端接入节点的操作系统均为64为SuSE Linux Enterprise Server(SLES)11SP1,提供标准的64位Linux操作系统环境。
用户需要熟悉一些基本的Linux命令行操作,特别是文件目录操作,并能熟练使用一种编辑器(vi或emacs等)。
2.2
大规模超级计算系统,为了有效利用众多处理器核心所提供的计算能力,需要有一个作业管理系统,统一地跟用户交互,接收提交的各类计算任务,合理分配计算资源,将用户作业指派到具体的节点执行,对用户来说,不需要关心计算具体在哪里进行的,系统会自动按照最优化原则进行调度,这不仅方便了用户的使用,更提高了整个系统的利用率。
作业管理系统是整个超级计算机最重要的软件环境之一,目前在曙光6000超级计算机上使用的作业管理系统是IBM Platform LSF(Load Sharing Facility)作业管理系统。
2.3
曙光6000主机系统支持OpenMP和MPI两种并行方式。
OpenMP为共享内存方式,仅能在一个计算节点内并行,最大线
程数不能超过该节点处理器核心数(GS/GG/GK分区为12,Fn分区为32)。
MPI则是分布式并行,计算作业可以在一个或者若干个节点上进行,最大进程数仅受用户账号所能调用的CPU总数限制。
目前常见的支持InfiniBand网络的MPI实现是MVAPICH2和OpenMPI。
2.4
开放源代码程序往往要调用大量的数学函数进行各种计算,经过长期积累,已经有一些比较成熟的标准化数学库,其中最常见的诸如线性代数方面的BLAS、LAPACK、ScaLAPACK和快速傅里叶变换FFT等等。
曙光6000超级计算机安装有AMD的ACML数学库(AMD Core Math Library),部署的ACML数学库的位置为:/home-*/compiler/pgi/linux86-64/11.10/lib/libacml.a,该库为PGI11.10版本编译器所匹配的数学库,库内的数学函数针对处理器进行了优化,能够获得更高的性能。
使用INTEL, PGI, GNU编译器都可以使用MKL数学库,其部署在/home-g*/compiler/intel/mkl。
注:其中g*表示分区gg、gk、gs.
MKL的使用可参考:
/en-us/articles/intel-mkl-link-line-advisor
3.使用方法
曙光6000超级计算系统为实现集群的各类功能,为了安全起见,从外部公网只能通过VPN访问曙光6000超级计算集群。
要使用曙光6000超级计算机,必须登录超级计算机,通过作业调度系统进行作业提交、管理、监控、删除等操作。
所有作业提交均通过提交作业脚本的方式来进行。
无论是通用刀片计算区、胖节点区还是龙芯计算分区都配有相应的登录节点和FTP 文件传输节点,这些节点分配有独立的IP地址,禁止在登录节点上运行任何大规模程序和编译任何程序。
一般作业的基本步骤如下:
⏹模型准备--用户准备模型数据文件和作业脚本文件。
⏹模型上传--通过FTP工具将模型数据文件和脚本文件上
传至FTP server。
⏹作业提交--利用Putty工具或其他SSH工具登陆曙光6000
计算机,用dos2unix 命令处理上传的文本文件后,用作
业提交命令提交脚本文件进行计算。
⏹作业监控--通过Telnet 或者Putty工具方式登录超级计
算机,采用作业管理命令监控作业的执行情况。
⏹结果下载--计算完成后,通过ftp工具从FTP Server 下
载结果文件。
3.1
为了确保用户登录的安全性,深圳超算中心采用VPN 软件对用户的登录进行管理。
用户首先需要使用浏览器访问
https://183.62.232.250,在该页面中输入自己的VPN 用户
名和口令,可以对该页面进行访问。
注意:在登录网站时,会出现此网站的安全证书有问题的界面,选择“继续浏览此网站”,如下图:
在接下来的页面中输入用户名和密码,成功登录后,并点击启动按钮,若显示已成功网络拓展服务,则表明登录VPN成功。
如图:
在使用VPN 成功登录超算中心后,可以使用Putty 等工具以内部地址登录超级计算机通用刀片计算区、胖节点计算区以及龙芯计算区。
通用刀片计算区共有6个登录节点,胖节点计算区2个登录节点,龙芯分区4个,禁止在登录节点编译、执行程序和上
传数据,如下表:。
曙光6000超级计算机的内部登录节点IP :
下面以以putty为例演示曙光6000超级计算机的登录过程。
登录通用刀片计算区的示例如下:
点击“Open”或回车后会提示需要输入用户口令和密码,如下图:输入正确后如下:
此时可执行Linux命令,例如登录GK分区的编译节点,可执行命
令:ssh gk0110
曙光6000超级计算机对每个计算分区都配有FTP服务节点,各计算分区对应的FTP节点及IP地址:
用户必须通过FTP工具进行文件的传输。
登录时,需使用户账号和密码。
注意在使用FTP前,请提前使用VPN登录曙光6000超级计算系统,如下图:
在有大量文件需要下载时,建议使用tar 命令进行打包,以加快
下载速度,减少出错几率。
该命令为:tar –zcvf filename.tar.gz filename 其中filename为需要打包压缩的文件或目录,file.tar.gz 为打包后的文件。
注意:传输文件一般是用二进制方式,但文本文件包括提交作业的脚本在上传结束后,必须用dos2unix命令进行转换(主要是转换回车换行符号),否则有些计算程序可能会在读取时出错。
3.2
账号成功登录后,首先进入的是登录节点。
用户可以在登录节点查看目录、编辑文件、查看作业、查看资源使用情况等。
但是用户不允许在登录节点运行计算程序或前后处理程序,也不允许进行程序编译。
用户可以从登录节点转移到编译节点进行程序编译。
各计算分区的编译节点如下表:
以上编译节点仅为用户提供编译软硬件平台,用户可在登录节点,通过ssh登录到编译节点。
编译节点共提供三套编译器环境:GCC4.3、intel12.1、PGI2011;三套MPI运行环境:openmpi、
mpich2、mvampich。
若要使用PGI编译器的,请在gk0110、gg0110、gs0110以及fn001上编译。
LSF系统默认使用openmpi,若需使用其他mpi环境,需要在LSF作业脚本中进行指定。
使用任意一种编译器和MPI库都推荐先在$HOME/.bashrc中将环境脚本写入。
例如:在gk分区使用mpich2前,先在.bashrc中加入
source /home-gk/env/intel-12.1.sh
source /home-gk/env/mpich2-1.4.1p1-intel.sh”。
3.3
3.3.1
用户一般可通过2种方式提交作业:web方式和命令方式。
下面分别介绍以上两种方式的提交方法。
web 方式提交作业
web方式提交作业主要针对商业高性能计算软件(Abaqus、ADF、ANSYS、CFX、DYTRAN、FLUENT、HFSS、LS-DYNA、MARC、NASTRAN 等)的用户使用,提供web方式提交作业的分区为工程计算分区(GG分区)和胖节点分区(FN分区),其对应网址为:
具体的使用步骤如下图:
在此输入用户名和密码正确后,可进入使用界面,如下图:
点击左侧的“作业提交”后,进入作业提交界面:
例如要提交ABAQUS作业,则在中间窗口双击ABAQUS后,即可进入ABAQUS作业提交界面,如下图:
输入相应的参数,并上传需要的计算文件后,点击提交作业按钮,即可完成作业的提交。
命令行方式提交作业
一般计算任务是通过脚本文件提交到作业管理系统的,脚本文件是一个常规文本文件,具有执行权限,可以直接在登入节点使用vi 编辑器编写,也可异地编写上传至用户作业工作目录,但要注意dos2unix 转换一下。
脚本文件名无特殊规定,起一个可识别的名字即可。
编辑完成脚本文件后,将脚本赋予可执行权限,然后提交。
例如对一个名称为mytest.lsf的作业脚本文件,编辑完成后,需要执行命令chmod 755 mytest.lsf赋予执行权限,然后用命令bsub mytest.lsf 来提交。
使用bsub命令提交作业,待作业提交成功后,会给出提交成功的作业ID号,用bjobs ID 命令可以查看作业运行状态,通用刀片计算区的通用队列如下表:
例如:用户需要使用GK分区提交96核的计算作业,则选择使用intelk_small队列。
胖节点计算区的通用队列如下表:
作业脚本范例:
脚本参数含义:
APP_NAME 指定作业运行使用的队列名称.
NP 指定作业运行需要的CORE 数,如果该参数不指定,则缺省值为1 个CORE。
NP_PER_NODE 指定每个节点上最多分配给作业运行的core数。
刀片区
NP_PER_NODE必须小于或等于12。
建议不指定此参数。
如果不指定此参数,系统默认会对AMD_long队列以 NP_PER_NODE=32来分配资源,对提交到 AMD_small 和AMD_mid队列中的计算作业,则会搜寻所有可用的资源,每节点上的core 数有可能不相等。
RUN 指定具体执行的命令参数,必须用双引号" "将命令行引起来。
例如:手
动运行一个openmpi程序的命令为:
mpirun -np 4 -machinefile machinefile /home-gg/user/tjf/mytest,此时脚
本里面就要写成RUN="/home-gg/user/tjf/mytest",系统会自动加载前面的mpi 参数。
如果用户的作业由很多过程组成,建议使用使用RAW方式,即RUN="RAW",然后在脚本后面编写完整的运行脚本,参考附件A.3
须作为任务提交到LSF系统然后统一调度执行,否则影响用户程序运行。
其他类型作业脚本请参考附件A.
3.3.2 GPU
通用刀片计算区每个计算节点配有一块NVIDIA C2050 GPU 计算卡,供用户通过CUDA程序使用,系统GPU驱动版本为270.41.19,CUDA环境为CUDA 4.0。
使用前需要先在用户.bashrc 中添加cuda的环境变量 source /home-g*/env/cuda-4.0.sh。
g*为用户所在分区号(gk、gs、gg)。
用户需要使用gpusub命令提交作业,其使用方式和bsub相同,考虑到每个节点只有1个GPU,目前规定用户编写的脚本必须指定NP_PER_NODE=1,队列为intelg/k/s_GPU。
以下为使用单节点GPU的作业提交模板:
3.3.3
龙芯分区的作业调度系统有别于通用刀片计算区和胖节点计算分区,该分区采用的作业调度系统为TORQUE作业调度系统。
编译节点为lx0110,其具体的使用方法如下:
用户只能通过龙芯分区登录节点10.68.0.49-52(即lxcn01-04)ssh 到lx0110提交作业。
下面以用户test01作业例子介绍如何提交并管理作业。
以test01用户登录到lxcn01..04任一节点,并ssh到lx0110上:
使用qsub命令行提交作业
下面是418号作业的输出:
使用脚本提交作业,脚本内容如下:
作业提交及查看作业状态(要查看列详尽作业相关请执行qstat -f job_id):
下面的为419号作业标准输出部分截图:
作业提交脚本编写参考
这里要特别说明一下是的 #PBS -l,其格式与qsub -l 是一样的,下面举例说明:ex1: qsub -l nodes=5
等价于脚本中的#PBS -l nodes=5, 表示使用集群中任意五个节点来执行该作业
ex2: qsub -l nodes=2:server+14
等价于脚本中的#PBS -l nodes=2:server+14, 表示使用集群中的两个server节点与另外十四个节点来执行该作业
ex3: qsub -l nodes=4:ppn=2
等价于脚本中的#PBS -l nodes=4:ppn=2,表示该作业需要四个节点且每个节点都有两个虚拟处理器空闲
ex4: qsub -l nodes=lx0111:ppn=4+lx0112:ppn=2
等价于脚本中的#PBS -l nodes=lx0111:ppn=4+lx0112:ppn=2,表示该作业需要lx0111上的四个空闲处理器与lx0112上的两个空闲处理器来共同完成
注:更详细用法请参照官方手册
pbsnodes: 查看节点状态
相关参数有:
-a 列出所有结点及其属性,属性包括“state”和“properties”
-o 将指定结点的状态标记为“offline”。
这将帮助管理员暂时停止某些结点的服务-l 以行的方式列出被标记的结点的状态,如 -l free,-l offline
-c 清除结点列表中的“offline”或“down”状态设置,使结点可以被分配给作业-r 清除指定结点的“offline”状态
qsub: 作业提交
qdel: 取消作业,指定相关作业的ID号即可,非结束态的作业才能被取消
qhold: 挂起作业
qrls:取消挂起
qstat: 查看作业状态
qstat [-f][-a][-i] [-n][-s] [-R] [-Q][-q][-B][-u]
参数说明:
-f jobid 列出指定作业的信息
-a 列出系统所有作业
-i 列出不在运行的作业
-n 列出分配给此作业的结点
-s 列出队列管理员与scheduler所提供的建议
-R 列出磁盘预留信息
-Q 操作符是destination id,指明请求的是队列状态-q 列出队列状态,并以alternative形式显示
-au userid 列出指定用户的所有作业 -B 列出PBS Server 信息 -r 列出所有正在运行的作业
-Qf queue 列出指定队列的信息
其中,有以下几种状态 C : 作业完成 E : 作业退出 H : 作业挂起中 Q : 作业排队中 R : 作业运行中 T : 作业被移走 W : 作业等待中 S :
作业中断
3.4
下面列出常用的作业管理命令,如果需要更详细的资料可以
参考作业调度系统LFS 相关手册或者使用系统的man 手册。
执行busers命令的屏幕输出如下:
MAX: 用户可用core数上限
NJOBS: 已提交作业所需要的全部core数
PEND: 因种种原因正在队列中等待执行的作业所需全部core数
RUN: 正在运行的作业所使用的全部core数
SSUSP: 系统挂起的用户作业所使用core数
USUSP: 用户自行挂起的作业所使用core数
RSV: 系统为你预约保留的core数
一个作业提交到队列后,将有可能为以下的几种状态之一:
bqueues可以用来查询当前系统能够提供的队列情况:
其中:
附件A.常用的作业提交模板
1
也可以是一个执行一系列计算的脚本,两者跟通常在 bash 等 shell 中一样,不加太多区分地执行,但推荐mytest为一个mpi二进制程序,如果需要执行一系列过程,参考附件A.3。
提交前source导入编译器环境变量,或者事先在$HOME/.bashrc 加入;如果不使用默认的openmpi-1.4.4-intel,请指定MY_MPI_TYPE(可选openmpi, mvapich2, mpich2)或者MY_MPI_HOME (用户自己MPI路径)
2MPI
数,不需要在此显式地给出。
采用这种方式提交,可执行文件必须是一个二进制的 MPI 程序,不能为含有 mpirun 命令的脚本或者其它脚本。
3
很多情况下,计算是由预处理、并行计算和后处理分析,或者串行计算和 MPI 并行计算混杂的方式进行。
也有一些软件的计算脚本,既有串行计算和串行处理命令,又有并行计算命令。
此时可以按照下
面的例子改写脚本。
超算提供的openmpi, mvapich2和mpich2都已经和LSF作业系统集成,用户在脚本中不需要显式指定计算使用的核数和节点列表,可直接使用mpiexec /path/to/exe,但mpich2默认使用的是以太网通信,为了通过IPoIB的方式使用Infiniband网络,需要做一些修改,可以参考附件A.6。
如果用户使用自己编译的MPI库,请将mpiexec行替换为:
mpiexec -np $NP -machinefile $LSB_DJOB_HOSTFILE /home-gg/user/tjf/mpi_calc -cmd_line_options
4(openmp)
这类作业既包括OpenMP 并行方式的,也包括不使用OpenMP 而是通过 POSIX 等系统底层线程库所编写的多线程程
序,概言之,任何多线程程序都通过下面方式提交计算。
最典型的就是 Gaussian 量化软件。
注意对这类程序,性能随着 core 数的增加,不一定会线性增加甚至会下降。
通常用 4 个进程即可,可以通过典型算例在 4、8、12、24 个线程下的计算速度来确定。
5 OpenMP+MPI
由上所述(在此以胖节点计算分区为例),OpenMP+MPI 并行方式,通常情况下可以采用每节点上的 32 个核心,分为四组,每组由一个 MPI 进程,产生并管理八个 OpenMP 线程的配置。
这也是推荐的并行作业负载分配。
以上是四种并行负载分配方案,可以通过典型算例做性能测
试,以决定采用哪一种。
下面用 m 代表 MPI 进程数,k 代表每 MPI 进程产生和管理的
OpenMP 线程数。
请注意 m ×k=32。
6 mpich2
(RAW )
由于mpich2不支持infiniband 网络,默认只能通过以太网
通信。
如果需要使用infiniband 高速网络,需要利用IPoIB 功能,只需要将现有节点列表进行修改,比如将gg0113修改为igg0113。
以下为通过RAW 方式运行作业的mpich2作业脚本模板:
附录B:商用软件使用方法
1Fluent
Fluent 作业提交时采用后台运行和命令流的计算方式,而不是大家常用的图形操作方式。
提交作业前用户需要准备cas/dat 文件,同时还要准备一个作业脚本文件和一个 journal 文件。
在journal 文件中描述了fluent 的所有操作命令,采用fluent 软件的TUI 方式记录(具体可参考Fluent User Guide)。
作业脚本文件示例:
作业脚本 RUN 行具体参数
首先进入超算WEB 提交系统,点击作业提交---FLUENT ,进入FLUENT 提交页面,如下图所示:
参数说明:
然后,点击提交作业,该FLUENT 作业就提交出去,LSF 会分配给该作业的一个作业号,用户可以通过作业列表来查看该作业的状态。
2ANSYS
(1)命令流格式文件计算
如果 ansys 计算文件是命令流格式文件(如 input.dat),可参照以下作业脚本(ansys.lsf):
如果 ansys 计算文件是 db 格式(如 jobname.db),那么除了作业脚本(ansys.lsf)外还需要额外建立一个命令流文件(如 input.dat),在文件中读入 db 文件并设置相应的求解参数(具体请参阅 ansys 帮助手册)。
示例如下:
resume,' jobname ','db' !!读入数据库文件jobname.db
/solu
eqslv,dpcg !!指定ANSYS并行计算求解器
dsproc,32 !!指定所需CPU总数
dsopt,script !!指定采用域分解
solve
save,all
finish
此外,在设置模型参数时请确保模型中设置的 proc 数目和作业脚本中的 NP 数目一致,以免造成资源浪费和不必要的错误。
作业脚本 RUN 行具体参数:
首先进入超算WEB提交系统,点击作业提交---ANSYS,进入ANSYS提交页面,如下图所示:
参数说明:
然后,点击提交作业,该ANSYS作业就提交出去,LSF会分配给该作业的一个作业号,用户可以通过作业列表来查看该作业的状态。
备注: 网页提交时对应的MPI为HPMPI。
3CFX
在作业脚本文件中 RUN 行可以设置 cfx 计算的精度、内存、初始条件等,可以分别通过 cfx 软件的参数-single 或-double、-s <factor>、-ini <file>等来指定。
具体可以参考 cfx 帮助手册。
作业脚本 RUN 行具体参数:
首先进入超算WEB提交系统,点击作业提交---CFX,进入CFX提交页面,如下图所示:
参数说明:
然后,点击提交作业,该CFX作业就提交出去,LSF会分配给该作业的一个作业号,用户可以通过作业列表来查看该作业的状态。
4ABAQUS
作业脚本 RUN 行具体参数
首先进入超算WEB提交系统,点击作业提交---ABAQUS,进入ABAQUS提交页面,如下图所示:
参数说明:
然后,点击提交作业,该ABAQUS作业就提交出去,LSF会分配给该作业的一个作业号,用户可以通过作业列表来查看该作业的状态。
5MARC
作业脚本 RUN 行具体参数
RUN=”marc [-ver=xxx] [-smp|-mpp] -j casename [-np|-nps $NP] [other marc software
首先进入超算WEB提交系统,点击作业提交---MARC,进入MARC提交页面,如下图所示:
参数说明:
注意:MARC的网页提交模式只支持单文件计算求解,并且默认为分布式求解,使用的MPI为HPMPI.
然后,点击提交作业,该MARC作业就提交出去,LSF会分配给该作业的一个作业号,用户可以通过作业列表来查看该作业的状态。
6NASTRAN
作业脚本 RUN 行具体参数
RUN=”nastran [-ver=xxx] [-smp|-mpp] xxx.bdf [other nastran software parameters] [-mpi=xxx]
首先进入超算WEB提交系统,点击作业提交---NASTRAN,进入NASTRAN提交页面,如下图所示:
参数说明:
注意:NASTRAN的网页提交模式只支持单文件计算求解,并且默认为SMP求解,MPP模式使用的MPI为OPENMPI 然后,点击提交作业,该NASTRAN作业就提交出去,LSF会分配给该作业的一个作业号,用户可以通过作业列表来查看该作业的状态。
7LSDYNA
作业脚本 RUN 行具体参数
RUN=”dyna [-ver=xxx] [-s|-d] [-smp|-mpp] [-mpi=xxx] [-mpi_opts=xxx] i=x.k [other
首先进入超算WEB提交系统,点击作业提交---LS-DYNA,进入LS-DYNA提交页面,如下图所示:
参数说明:
然后,点击提交作业,该LS-DYNA作业就提交出去,LSF会分配给该作业的一个作业号,用户可以通过作业列表来查看该作业的状态。
8DYTRAN
作业脚本 RUN 行具体参数
RUN=”dytran [-ver=xxx] jid=casename [-smp|-mpp] [other dytran software
首先进入超算WEB提交系统,点击作业提交---DYTRAN,进入DYTRAN提交页面,如下图所示:
参数说明:
然后,点击提交作业,该DYTRAN作业就提交出去,LSF会分配给该作业的一个作业号,用户可以通过作业列表来查看该作业的状态。
9ADF
作业脚本 RUN 行具体参数
首先进入超算WEB提交系统,点击作业提交---ADF,进入ADF提交页面,如下图所示:
参数说明:。