一、 系统硬件信息
中心的高性能计算平台具有高性能、高密度、绿色节能等优点。系统规模根据校内用户调研结果按需而定,综合平衡各项性能,具有较高的性价比和良好的适用性。
本套集群计算能力超过370TFlops,存储能力1PB。
高性能计算平台本套集群与老集群的性能对照表如下:
机群名称 |
2010年浪潮TS10K |
2020年浪潮TS10K |
型号 |
Xeon X5650 |
Gold 6240 |
代号 |
Westmere |
Skylake-SP |
上市日期 |
Q1'10 |
Q2'19 |
制做工艺 |
32 nm |
14 nm |
最大功耗 |
95 W |
150 W |
核数 |
6 |
18 |
每时钟周期指令数 |
4 |
32 |
通道连接 |
QPI 2 |
UPI 3 |
主频 |
2.66 GHz |
2.60 GHz |
最大睿频 |
3.06 GHz |
3.90 GHz |
缓存 |
12 MB |
24.75MB |
总线速度 |
6.4 GT/s per QPI |
10.4GT/s per UPI |
内存 |
DDR3 1333 |
DDR4 2933 |
内存通道数 |
3 |
6 |
最大内存带宽 |
32 GB/s |
140.8GB/s |
每节点计算能力 |
127.68 GFlops |
2995.2GFlops |
每核计算能力 |
10.64GFlops |
83.2GFlops |
每节点核数 |
12核 |
36核 |
每节点内存数 |
24GB |
192GB |
每CPU核内存 |
2GB |
5.33GB |
每节点计算能力 |
127.68 GFlops |
2995.2GFlops |
二、 系统环境设置
1. 环境变量脚本文件
环境变量设置脚本文件的用途是告诉系统相关的应用程序及其lib文件所在的位置。
/data/env下的文件列表 |
文件名 |
用途 |
fftw-3.3.8-intel2018-avx2.profile |
用intel2018编译的fftw库的环境变量设置文件(编译参数开avx2支持) |
gcc-920gfortran.profile |
gcc/ gfortran 9.2.0版本的环境变量设置文件 |
gcc-920local.profile |
本地gcc9.2.0的环境变量设置文件 |
gcc-920.profile |
标准gcc9.2.0的环境变量设置文件 |
intel2015.profile |
Intel的c和fortran编译器2015版的环境变量设置文件 |
intel2018.profile |
Intel的c和fortran编译器2018版的环境变量设置文件 |
intel2019u3.profile |
Intel的c和fortran编译器2019.3.199版的环境变量设置文件 |
intel2019u4.profile |
Intel的c和fortran编译器2019.4.243版的环境变量设置文件 |
intel2020.profile |
Intel的c和fortran编译器2020版的环境变量设置文件 |
mpich332.profile |
Mpich3.3.2版的环境变量设置文件 |
openmpi184.profile |
用本地gnu9.2.0编译的openmpi1.8.4版本的环境变量设置文件 |
openmpi216.profile |
用本地gnu9.2.0编译的openmpi2.1.6版本的环境变量设置文件 |
openmpi316.profile |
用本地gnu9.2.0编译的openmpi3.1.6版本的环境变量设置文件 |
openmpi401.profile |
用本地gnu9.2.0编译的openmpi4.0.1版本的环境变量设置文件 |
2. 编译器设置
当需要部署应用程序的时候,推荐使用源码包在本地编译部署,这样优化等级比较高的时候应用程序的执行效率会比较高。而且可以方便的修改编译参数和源码的代码。
主流的C/C++编译器包括MicroSoft的CL、GNU的gcc、Intel的icc、PGI的pgcc及Codegear的bcc(原来属于Borland公司)。Windows上使用最多的自然是cl,而在更广阔的平台上,gcc则是C/C++编译器的首选。大多数情况下,x86服务器使用intel编译器会获得更好的数值计算速度。
高版本的编译器校验会更严格,因此有些时候用最新版本编译器无法通过的源码包尝试换一个较低版本的反而会编译成功。一般而言,应用程序使用的编程规范会滞后于编译器的更新。因此如果不是追求新版本软件的新特性支持,不要盲目追求高版本软件。
编译环境 |
CC |
CXX |
F77 |
FC |
GNU 9.2.0 |
gcc |
g++ |
gfortran |
gfortran |
Intel |
icc |
icpc |
ifort |
ifort |
OpenMPI |
mpicc |
mpicxx |
mpif77 |
mpif90 |
红色标记的版本在使用之前需要设置环境变量。
eg.source /data/env/ intel2019u4.profile
某些时候需要设置不同的编译器,intel编译器使用不同版本之前需要source一下对应的环境变量文件,gnu9.2.0编译器直接部署到系统/usr/local/ gcc-9.2.0下,因此直接引用即可,但是不同的版本有不同版本的后缀。
例如:
./configure CC=icc CXX=icpc F77=ifort FC=ifort
3. 数学库
注意设置LD_LIBRARY_PATH和PATH。
PATH设置可执行文件的路径搜索顺序。
LD_LIBRARY_PATH设置静态库和动态链接库的路径搜索顺序。.a .so
本集群数学库包含在各版本intel编译器套件中。
据厂商测试,最新版本的intel mkl的效率超过gotoblas2和lapack。
三、 应用软件信息
1. 作业脚本模板
强烈建议大家把必要的环境变量设置写到作业提交脚本里,这样可以避免多个版本的软件使用冲突。
/data/scripts下的文件列表 |
文件名 |
用途 |
vasp5-4-1.lsf |
用intel2019u4编译的vasp作业提交脚本模板 |
vasp5-4-4.lsf |
用intel2020编译的vasp作业提交脚本模板 |
2. 应用软件部署
开源软件统一部署,如果需要特别编译参数请事先沟通,可以为特殊需求单独生成可执行文件。商业软件可以选择统一部署和自行部署。如需要统一部署商业软件,请上传安装包和licenses文件,并提供销售商技术支持电话。
商业软件请务必确保自己拥有合法授权,否则发表论文的时候会遇到版权问题。 如有疑问请详询系统管理员。
目前常见的商业授权模式有:限定特定几个人的,要求特定单位内部使用的,限定特定通讯地址的。
四、 LSF常用命令
本集群作业提交脚本不再需要指定-a –app参数。目前集群设置了vasp和normal两个队列名。
#BSUB脚本常用参数:
#BSUB -q vasp |
作业使用的队列queue |
#BSUB -J MYJOBNAME |
作业名 |
#BSUB -n 36 |
作业使用的cpu核数cores |
#BSUB -R "span[ptile=36]" |
指定每个节点使用的核数 |
#BSUB -R "cu[usablecuslots=36]" |
每36核当作一个计算单元,以36核为单位进行资源预留(此项用于排队困难的大作业) |
#BSUB -R "[hosts=1]" |
确保作业不跨节点计算,只使用一个host里面的cpu核,参数值只支持1。 |
#BSUB -o %J.vasp-output.jlu-hpcc |
作业输出文件,一般用于排错(不使用-e参数时错误) |
#BSUB -e %J.vasp-error.jlu-hpcc |
作业错误输出文件,用于排错 |
#BSUB -x |
独占作业节点,即使上面还有空核也不允许其他作业使用 |
#BSUB –m “c1b2 c1b3 c1b4” |
在指定节点内选择机器运行作业 |
mpirun path/vasp.5.2 |
MPI并行 |
dos2unix * |
把当前目录下所有文本文件的格式从dos格式转换为unix格式 |
bsub < 脚本文件名 提交作业
bjobs 查看自己的所有运行任务情况;说明:输入bjobs后,会列出当前用户正在运行的所有作业,最左边一列数字是每个作业的JOBID,一些其他命令使用的时候需要调用这个JOBID。
bjobs -l 查看所有运行任务的详细情况
bjobs -l JOBID 查看JOBID这个任务的详细情况
bpeek JOBID 查看某任务屏幕输出
bkill JOBID 终止某任务运行
bkill JOBID1 JOBID2 JOBID3 终止多个任务运行
bstop JOBID 临时挂起某个作业,为其它作业腾出计算资源
bresume JOBID 恢复由bstop挂起的作业
btop JOBID 把指定作业放到队列的最前面(请合理使用此命令,不要产生恶意竞争,否则取消此命令。)
bbot JOBID 把指定作业放到队列的最后面
五、 如何编译软件
1. 选定编译软件,设置对应的环境变量
a) GNU编译环境
系统里面已经部署,使用GNU编译环境,免费软件。
source /data/env/ gcc-920.profile
b) Intel编译环境
系统里面已经部署,使用Intel编译器,收费软件。
source /data/env/ intel2020.profile
c) PGI编译环境
需要自行部署,使用PGI编译器,收费软件。
d) OpenMPI编译环境
OpenMPI自身没有编译器,源码安装OpenMPI的时候使用那个编译器来编译安装的,就调用那个编译器。系统部署有对应Intel CoMPIler和GNU CoMPIler两种
source /data/env/ openmpi401.profile
执行以上某个环境变量后可以通过ompi_info | more 查看OpenMPI的相关信息,包括编译器信息
一般来说在x86_64cpu的平台上, IntelMPI编译器编译速度较慢,对语法检查的最严格,编译生成的代码执行效率也最高,特别是数值运算。目前中心的硬件环境只支持运行在CPU上的并行,不支持GPU和MIC。
2. 编译软件
a) 自动配置软件
configure或cmake
make
make install
b) 手动修改配置文件,vasp
vi makefile
vi makefile.inc
make
make install
c) 手动编译
icc -o hello.o hello.c
icpc -o test1.o test1.cxx
ifort -o test2.o test2.f77
ifort -o test3.o test3.f
六、 如何开始计算
1. 选定要使用的应用软件
系统中已经部署的开源软件可以直接使用,没有部署的软件请自行部署或联系系统管理员协助部署。商业软件请务必确保自己具有合法授权才能使用。
部署商业软件请务必确认是适合linux和x86_64平台的版本,其他平台的软件版本无法部署在我们的计算平台。
2. 编制作业脚本
使用ssh客户端软件如putty等登录到login4或login5节点,在HOME目录的workplace子目录下面合适的位置建立作业子目录,进入此作业目录,使用vi或vim软件编写作业脚本。
可以从/data1/scripts里面彩电合适的脚本模板,或者请系统管理员帮助,或者自己编制作业脚本。建议命名作业脚本文件的时候使用.lsf扩展名,虽然作业脚本文件怎么命名都可以。
作业脚本里面一般有三类指令:
a) 作业调度指令:以# BSUB 开头的行,是lsf作业调度软件的指令,用于告诉作业调度系统你需要的资源和作业的属性。
a)#BSUB -q vasp #使用vasp队列(queue)
a)#BSUB -n 36 #使用36核进行计算
#BSUB -J MYJOBNAME #设置作业名
#BSUB -o %J.output #作业输出文件,%J是作业ID
b) 作业预备指令:包括执行必要的环境变量设置,如MPI的环境变量设置,应用程序可执行文件及库文件所在的路径信息等。
b)export vasproot=/data/software/vasp.5.4.4 #设置应用程序路径
b)source /data/env/intel2020.profile #设置作业环境变量
b)dos2unix ./* #担心文本文件格式错误
export OMP_NUM_THREADS=n #设置OpenMP并行的线程数
#设置可执行文件的搜索路径
export PATH=$vasproot/bin:$PATH
#设置库文件的搜索路径
export LD_LIBRARY_PATH=$vasproot/lib:$LD_LIBRARY_PATH
#OpenMPI
source /data/env/ openmpi401.profile
c) 作业执行命令,与具体使用的应用程序并行模式有关
c) export OMP_NUM_THREADS=n
appname #OpenMP并行
OpenMP并行的作业一般是直接运行应用程序,这种程序一般不跨节点运行。
mpirun appname #MPI并行
3. 提交作业
借助合适的软件生成作业输入文件。
使用winscp或SSH Secure File Transfer Client等软件上传作业数据文件。
在作业子目录下提交作业。
bsub < myjob.lsf
4. 查看作业输出
bpeek JOBID
5. 查看作业状态
bjobs
JOBID 作业号
USER 用户ID
STAT 作业状态,一般有如下几种状态:
PEND 作业排队中
PSUSP 作业在排队状态被bstop挂起
RUN 作业正常运行中
USUSP 作业运行状态被bstop
SSUSP 作业运行状态因为不满足运行条件被系统自动挂起
DONE 作业正常完成,退出码为0
EXIT 作业非正常退出
UNKWN 作业状态异常,多是作业节点lsf进程死亡或死机
WAIT 批量提交作业包在运行中,这个作业处于等待状态
ZOMBI bkill掉一个作业节点UNKWN的作业
QUEUE 作业队列名
FROM_HOST 提交作业的节点
EXEC_HOST 计算节点名称及每个节点上执行的核数
JOB_NAME 作业名称
SUBMIT_TIME提交作业的时间
bjobs -d 可以查看最近完成或退出的作业。
如果作业提交成功30s以后用bjobs看不到,就用这个命令查看一下作业是否异常退出EXIT,正常结束的作业状态是DONE。然后找这个作业的日志文件,根据里面的错误信息进行纠错,或寻求系统管理员获取技术支持。
七、 要注意的一些问题
1. Dos/Windows和unix/linux的文本格式不同
|
换行符 |
文件结束符 |
unix |
^J |
LF |
0A |
^D |
04 |
windows/dos |
^M^J |
CR+LF |
0D+0A |
^Z |
1A |
在win平台下转换成unix格式的文本文件,通过ftp上传的时候最好使用二进制方式上传,避免出现格式问题。
也可以在linux使用dos2unix命令来转换文本文件的格式。
linux里面常用的文本编辑器是vi或vim,习惯了windows的老师可能很不习惯,但是熟悉以后会很方便。
2. 提交作业有问题
在提交作业的时候系统会显示你一个作业号jobid(一般是6位数字),查看提交作业的目录下是否有一个以作业号开始的文件,然后联系管理员;或者用bjobs –d查看作业退出的原因。
#BSUB -o %J.gromacs-output.jlu-hpcc
作业提交脚本有上面这样类似的一行非常重要,这是在作业出现问题的时候提供重要信息的记录文件,可以帮助系统管理员定位故障。
3. 作业排队的原因
提交作业的参数有问题,参数前后矛盾,或没有足够的空余CPU核。还有些时候是提交作业的规模过大,或计算过程中出现重大错误,导致计算节点死机或导致计算节点剩余的内存不足,不能满足作业调度的条件。还要注意作业脚本里面的“#BSUB”前面的“#”是不能去掉的,连在一起的这五个符号是保留字,去了#会出错。
span[ptile=36] 和[hosts=1]不要一起使用,跨节点计算一般会指定每节点运行的核数 span[ptile=36],使用单节点内的核数进行计算的时候才需要[hosts=1]。
例如:在一个只有36核的节点内想进行72核的计算在逻辑上是错误的,作业也就无法运行了,只能排队等候。
4. 系统目录结构
每个用户有两个空间:
HOME 目录空间 |
用户登录后就在这个目录,每个用户200GB,用户自行部署软件使用 执行cd命令或cd ~命令都可以来到这里 |
workplace 目录空间 |
公用空间,并行高速缓存空间,定期清理 执行cd ~/workplace即可来到这里 |
提交作业的时候一定要在workplace目录下,还要注意这里面的计算结果要及时下载到你自己的机器里面去,每个假期中心会根据lustre文件系统的表现决定是否重新初始化整个lustre系统,这时候没有及时清理数据的用户会丢失数据。
公共部署的应用程序和脚本等资源都在data里面。
cd /data/software |
编译器、数学库和应用软件 |
cd /data/scripts |
常用的应用程序脚本模板文件 |
cd /data/env |
编译器、MPI、mkl的环境变量设置脚本 |
八、 SSH软件的使用
1. 登录
用户在windows或Linux下,使用客户端,通过ssh协议来链接。使用的客户端大家登录login4.hpcc.jlu.edu.cn.
文本界面登陆软件:SSH Secure Shell Client、putty。
用户登录入口:202.198.21.183,端口22222。
外网用户如果不是教育网用户和国外用户,请使用VPN拨号进入吉林大学校园网,然后正常登录服务器即可。VPN使用指南请看vpn.jlu.edu.cn,VPN服务由吉林大学网络中心提供,仅限校内教工使用。
文件传输
使用winscp或SSH Secure File Transfer Client。
2. 作业提交和软件使用
用户登陆后,用户可以在登录节点查看目录、编辑文件、查看作业、查看资源使用情况等。
但是用户不允许在登录节点运行计算程序或前后处理程序,只能以作业形式向作业调度系统提交,由作业调度软件安排程序的具体执行节点。登录节点功能为管理用户登录等事务,严禁在登录节点上直接运行程序,会造成该节点很忙,影响大家的使用。
九、 常用的资源站点
GNU编译器 http://gcc.gnu.org/
Intel编译器
https://software.intel.com/content/www/us/en/develop/tools/compilers.html
PGI编译器 http://www.pgroup.com/
CUDA http://www.nvidia.cn/object/cuda-cn.html
OpenMP https://www.openmp.org/
mpich http://www.mpich.org/
mvapich http://mvapich.cse.ohio-state.edu/
OpenMPI http://www.Open-MPI.org/
FFTW http://www.fftw.org/
LAPACK http://www.netlib.org/lapack/
CSDN论坛CUDA http://bbs.csdn.net/forums/CUDA/
小木虫 http://emuch.net/