一、 系统硬件信息
中心的高性能计算平台具有高性能、高密度、绿色节能等优点。系统规模根据校内用户调研结果按需而定,综合平衡各项性能,具有很高的性价比和适用性。
吉林大学高性能计算平台 |
计算节点 |
双子刀片节点1:每刀片节点含两台独立的服务器,每服务器2颗Intel Xeon X5650 CPU,24GB ECC内存 双子刀片节点2:每刀片节点含两台独立的服务器,每服务器2颗Intel Xeon X5650 CPU,48GB ECC内存 刀片节点3:每节点2颗Intel Xeon E5-2692V2,64GB ECC内存 |
胖节点:每节点含4颗Intel Xeon E7-8837 CPU,96GB ECC内存,8*1T SATA硬盘 |
登录节点 |
登录节点,每节点2颗 Intel Xeon X5650 CPU,24GB ECC内存 |
计算网络 |
Mellanox QDR Infiniband(40Gb) |
操作系统 |
RedHat Linux AS 5.5+6.3 x86_64版本 |
文件系统 |
LUSTRE并行文件系统1.8.5+2.3 |
作业调度系统 |
Platform LSF HPC 7 Update 6 |
1. 环境变量脚本文件
二、 系统环境设置
环境变量设置脚本文件的用途是告诉系统相关的应用程序及其lib文件所在的位置。
/data1/env下的文件列表 |
文件名 |
用途 |
environments |
intel 11的编译器和mkl以及intel MPI3.x的环境变量设置 |
intel4 |
intel 11的编译器和mkl以及intel MPI4.x的环境变量设置 |
gnu47 |
gnu4.7.3编译器环境变量设置 |
gnu48 |
gnu4.8.2编译器环境变量设置 |
icoMPIler11 |
intel的c和fotran编译器11.1,只含编译器环境变量设置 |
icoMPIler13 |
intel的c和fotran编译器13.1,含编译器环境变量设置和mkl13.1的环境变量设置 |
OpenMPI1.6_gnu |
OpenMPI1.6.5使用gnu4.8,含编译器和MPI环境变量设置 |
OpenMPI1.6_intel |
OpenMPI1.6.5使用icoMPIler13,含编译器和MPI环境变量设置 |
OpenMPI1.8_intel |
OpenMPI1.8 使用icoMPIler13,含编译器和MPI环境变量设置 |
iMPI3.2 |
intel MPI 版本3.2.2.006 |
iMPI4.0 |
intel MPI 版本4.0.3.008 |
iMPI4.1 |
intel MPI 版本4.1.1.036 |
mkl10 |
intel mkl 版本10.0.3.020 |
mkl11 |
intel mkl 版本11.1.072 |
mkl13 |
intel mkl 版本13.1.1 |
fftw3.3.4 |
数学库fftw版本3.3.4,编译时需要,含单双精度 |
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 4.1.2 |
gcc |
g++ |
gfortran |
gfortran |
GNU 4.4.0 |
gcc44 |
g++44 |
gfortran44 |
gfortran44 |
GNU 4.7.3 |
gcc |
g++ |
gfortran |
gfortran |
GNU 4.8.2 |
gcc |
g++ |
gfortran |
gfortran |
Intel |
icc |
icpc |
ifort |
ifort |
OpenMPI |
mpicc |
mpicxx |
mpif77 |
mpif90 |
红色标记的版本在使用之前需要设置环境变量。
eg.source /data1/env/gnu4.8
source /data1/env/icoMPIler13
某些时候需要设置不同的编译器,intel编译器使用不同版本之前需要source一下对应的环境变量文件,gnu4.1和4.4编译器直接部署到系统/usr/bin下,因此直接引用即可,但是不同的版本有不同版本的后缀。
例如:
./configure CC=icc CXX=icpc F77=ifort FC=ifort
./configure CC=gcc44 CXX=g++44 F77=gfortran44 FC= gfortran44
3. 数学库
注意设置LD_LIBRARY_PATH和PATH。
PATH设置可执行文件的路径搜索顺序。
LD_LIBRARY_PATH设置静态库和动态链接库的路径搜索顺序。.a .so
据厂商测试,最新版本的intel mkl的效率超过gotoblas2和lapack。
数学库 |
位置 |
Fftw3.0.1 |
/data1/soft/libs/fftw-3.0.1 |
Fftw3.1.2 |
/data1/soft/fftw3.1.2 |
Fftw3.2.2 |
/data1/soft/fftw.3.2.2 |
Fftw3.3.4 |
/data1/soft/fftw3.3.4 |
Gotoblas |
/data1/soft/libs/gotoblas |
Gotoblas2 |
/data1/soft/gotoblas2-1.1.3 子目录为编译器版本 |
Lapack3.4.2 |
/data1/soft/lapack/3.4.2子目录为编译器版本 |
Lapack3.5.0 |
/data1/soft/lapack/3.5.0子目录为编译器版本 |
mkl10.0.3.020 |
/data1/intel/mkl/10.0.3.020 |
mkl11.1.072 |
/data1/intel/CoMPIler/11.1/072/mkl |
mkl13.1.1 |
/data1/intel/composer_xe_2013.3.163/mkl |
子目录首字母:i=Intel g=GNU
三、 应用软件信息
1. 作业脚本模板
使用gromacs的脚本无需用户另行设置环境变量,脚本内直接包含,避免同时使用多个版本的时候会出现冲突。
当多个人共用一个用户帐号的时候,推荐大家把必要的环境变量设置写到作业提交脚本里面去,避免同时部署多个版本的软件导致冲突。
/data1/scripts下的文件列表 |
|
|
文件名 |
用途 |
|
abaqus.lsf |
abaqus作业提交脚本模板 |
|
gaussian.lsf |
gussian作业提交脚本模板 |
|
gromacs454float.lsf |
gromacs4.5.4单精度作业提交脚本模板 |
|
gromacs465double.lsf |
gromacs4.6.5双精度作业提交脚本模板 |
|
gromacs465float.lsf |
gromacs4.6.5单精度作业提交脚本模板 |
|
molpro.lsf |
molpro作业提交脚本模板 |
|
ms6.lsf |
ms6.0 castep作业提交脚本模板 |
|
ms.lsf |
ms castep dmol3 discover作业提交脚本模板 |
|
namd.lsf |
namd 作业提交脚本模板 |
|
normal-parallel.lsf |
常规并行作业使用normal队列提交脚本模板 |
|
pwscf.lsf |
pwscf作业提交脚本模板 |
|
siesta.lsf |
siesta作业提交脚本模板 |
|
vasp.lsf |
vasp作业提交脚本模板 |
2. 应用软件部署
开源软件统一部署,如果需要特别编译参数请事先沟通,可以为特殊需求单独生成可执行文件。商业软件可以选择统一部署和自行部署。如需要统一部署商业软件,请上传安装包和licenses文件,并提供销售商技术支持电话。
商业软件请务必确保自己拥有合法授权,否则发表论文的时候会遇到版权问题。 如有疑问请详询系统管理员。
目前我们知道的商业授权有:限定特定几个人的,要求单位内部使用的,限定通讯地址的。
四、 LSF常用命令
#BSUB脚本常用参数:
#BSUB -q vasp |
作业使用的队列queue |
#BSUB -app vasp |
作业使用的应用程序 |
#BSUB -a intelMPI |
作业使用的MPI |
#BSUB -J MYJOBNAME |
作业名 |
#BSUB -n 12 |
作业使用的cpu核数cores |
#BSUB -R "span[ptile=12]" |
当需要跨节点计算的时候,指定每个节点使用的核数 |
#BSUB -R "cu[usablecuslots=12]" |
每12核当作一个计算单元,以12核为单位进行资源预留 |
#BSUB -R "[hosts=1]" |
确保作业不跨节点计算,只使用一个host里面的cpu核 |
#BSUB -o %J.vasp-output.jlu-hpcc |
作业输出文件,一般用于排错 |
#BSUB -x |
独占作业节点,即使上面还有空核也不允许其他作业使用 |
#BSUB –m “c1b2 c1b3 c1b4” |
在指定节点内选择机器运行作业 |
Mpirun.lsf 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 把指定作业放到队列的最后面
五、 常用linux命令
& 后台执行作业标示符
nohup如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂断的意思( no hang up)。
nohup command & 在后台运行一个不挂断的作业
ls 列出当前目录下的所有内容
ll 同ls –l 每行列一个文件或目录,显示更详细的信息
cd 目录名 进入指定的目录名
cd 进入自己的home目录
mkdir 目录名 在当前目录下创建一个目录
rmdir 目录名 删除当前目录下的一个空目录
rm 文件名 删除一个文件
rm –Rf 目录名 强制删除一个目录,包括目录下的文件和子目录
mv src dest 把src下的内容移动到dest
cp src dest 把src复制到dest
cp /data1/scripts/vasp.lsf . 把/data1/scripts下的vasp.lsf复制到当前目录下
export A=123 给变量A赋值123
echo $A 显示变量A的值
man ls 显示命令ls的帮助,更简单的办法是用ls –-help
source 文件名 把一个文件的内容当成是shell来执行。
. 作为目录的一部分的时候表示当前目录,作为操作符的在bash里面等同于source
.. 作为目录的一部分,代表当前目录的父目录。
vi 文本文件名linux下的文本编辑器,很强大。vim比vi更强大。
dos2unix 转换dos/win平台下的文本文件到unix格式
ccmake 编译源码前的配置工具
configure编译源码前的配置工具
make 编译源码
make install 安装源码
chmod u+x 文件名 赋予文件可执行权限
chmod –R 755 目录名 共享目录或文件,其他人可以查看和执行
chmod –R 700 目录名 防止别人看你的数据和应用程序
pwd 显示当前目录的全路径
which 文件名 查找一个可执行文件是否在搜索路径里面,前提是你有执行这个文件的权限。
cat文本文件名 查看文本文件内容
more文本文件名 查看文本文件,每屏暂停一下,等同于cat 文本文件名 | more
tail 文本文件名 查看文件的末尾10行
tail 文本文件名 –n 20查看文件的末尾20行
| 管道操作符,把前面命令的输出当作后面命令的输入
< > 都是重定向操作符,分别用于重定向标准输入和标准输出。
linux下是大小写敏感的,请特别注意!!!
六、 如何编译软件
1. 选定编译软件,设置对应的环境变量
a) GNU编译环境
系统里面已经部署,使用GNU编译环境,免费软件。
source /data1/env/gnu4.8
b) Intel编译环境
系统里面已经部署,使用Intel编译器,收费软件。
source /data1/env/icoMPIler13
c) PGI编译环境
需要自行部署,使用PGI编译器,收费软件。
d) OpenMPI编译环境
OpenMPI自身没有编译器,源码安装OpenMPI的时候使用那个编译器来编译安装的,就调用那个编译器。系统部署有对应Intel CoMPIler和GNU CoMPIler两种
source /data1/env/OpenMPI1.6_intel
source /data1/env/OpenMPI1.6_gnu
执行以上某个环境变量后可以通过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 -app vasp #应用程序是vasp
a)#BSUB -a intelMPI #使用intelMPI
#BSUB -a OpenMPI #使用OpenMPI
#BSUB -n 12 #使用12核进行计算
#BSUB -J MYJOBNAME #设置作业名
#BSUB -o %J.output #作业输出文件,%J是作业ID
b) 作业预备指令:包括执行必要的环境变量设置,如MPI的环境变量设置,应用程序可执行文件及库文件所在的路径信息等。
b)export g09root=/data1/soft/gaussian09 #设置应用程序路径
b)export MSVERSION=5.0 #设置作业环境变量
b)dos2unix ./* #担心文本文件格式错误
export OMP_NUM_THREADS=n #设置OpenMP并行的线程数
#设置可执行文件的搜索路径
export PATH=$g09root/bin:$PATH
#设置库文件的搜索路径
export LD_LIBRARY_PATH=$g09root/lib:$LD_LIBRARY_PATH
#IntelMPI
source /data1/env/iMPI4.1
#OpenMPI
source /data1/env/OpenMPI1.6_intel
c) 作业执行命令,与具体使用的应用程序并行模式有关
c)gaussian03 H10-C60H50-2.com #OpenMP并行
c)mpirun.lsf ./vasp.5.2 #MPI并行
c)mpirun -lsb_mcpu_hosts -e "MPI_REMSH=rsh" $app $basename #在作业执行命令里面包含环境变量设置
mpirun.lsf mdrun_mpid -s topol.tpr #包含输入文件
3. 提交作业
借助合适的软件生成作业输入文件。
使用winscp或SSH Secure File Transfer Client等软件上传作业数据文件。
在作业子目录下提交作业。
bsub < myjob.lsf
如上图所示,作业的jobid就是484813
4. 查看作业输出
bpeek 484813
如上图所示。
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=12] 和[hosts=1]不要一起使用,跨节点计算一般会指定每节点运行的核数 span[ptile=12],使用单节点内的核数进行计算的时候才需要[hosts=1]。
例如:在一个只有12核的节点内想进行24核的计算在逻辑上是错误的,作业也就无法运行了,只能排队等候。
4. 经常会用到的并行模式
在lsf调度软件环境里,MPI并行的作业一般都是以Mpirun.lsf来引导你的应用程序
mpirun.lsf mdrun_mpid -s topol.tpr
OpenMP并行的作业一般是直接运行你的应用程序,这种程序一般不跨节点运行。
g03 H10-C60H50-2.com
5. 系统目录结构
每个用户有两个空间:
HOME 目录空间 |
用户登录后就在这个目录,每个用户200GB,用户自行部署软件使用 执行cd命令或cd ~命令都可以来到这里 |
workplace 目录空间 |
公用空间,并行高速缓存空间,定期清理 执行cd ~/workplace即可来到这里 |
提交作业的时候一定要在workplace目录下,还要注意这里面的计算结果要及时下载到你自己的机器里面去,每个假期中心会根据lustre文件系统的表现决定是否重新初始化整个lustre系统,这时候没有及时清理数据的用户会丢失数据。
cd /data1/intel |
各种编译器和intel mkl |
cd /data1/soft |
数学库和应用软件 |
cd /data1/scripts |
常用的应用程序脚本模板文件 |
cd /data1/env |
编译器、MPI、mkl的环境变量设置脚本 |
公共部署的应用程序和脚本等资源都在data1里面,这些目录是系统动态挂载的,想进入这些目录的时候请直接进入具体的子目录,在/data1下用ls很可能是看不到任何子目录的。
九、 SSH软件的使用
1. 登录
用户在windows或Linux下,使用客户端,通过ssh协议来链接。使用的客户端大家登录login4.hpcc.jlu.edu.cn.
文本界面登陆软件:SSH Secure Shell Client、putty。
外网用户登录:login5.hpcc.jlu.edu.cn,端口22222。
内网用户登录:login4.hpcc.jlu.edu.cn,端口222。
输入服务器 IP地址或域名:login4.hpcc.jlu.edu.cn
用户名:***** 密码:******。
即可登陆服务器终端进行命令操作。
外网用户如果不是教育网用户和国外用户,请使用VPN拨号进入吉林大学校园网,然后正常登录服务器即可。VPN使用指南请看vpn.jlu.edu.cn,VPN服务由吉林大学网络中心提供,仅限校内教工使用。
文件传输
使用winscp或SSH Secure File Transfer Client。
外网用户登录:login5.hpcc.jlu.edu.cn,端口22222。
内网用户登录:login4.hpcc.jlu.edu.cn,端口222。
2. 作业提交和软件使用
用户登陆后,用户可以在登录节点查看目录、编辑文件、查看作业、查看资源使用情况等。
但是用户不允许在登录节点运行计算程序或前后处理程序,只能以作业形式向作业调度系统提交,由作业调度软件安排程序的具体执行节点。登录节点功能为管理用户登录等事务,严禁在登录节点上直接运行程序,会造成该节点很忙,影响大家的使用。
3. PUTTY使用指南
通过SSH方式连接登录服务器,用户可以使用命令行方式向lsf提交作业并查看作业相关信息。较小的ssh客户端有putty,绿色软件不需要安装。下载putty软件(如果是压缩文件请解压),双击图标运行程序。在吉林大学高性能计算中心QQ群的群共享里面可以下载相关软件和其他的文档。群号115060597。
2、显示如下界面。在hostname位置填写登录服务器IP地址。
3、首次登录会出现以下对话框,点击是(Y)。
4、登录界面如下,输入在高性能计算中心申请的帐号,回车后输入密码,就正常登录到系统中了。
5、现在可以运行作业相关的命令或linux命令了。
登录进来的目录就是你的HOME目录,用cd或cd ~命令可以回到你的HOME目录。HOME目录下的workplace目录就是你计算用的目录。
如果需要在HOME目录里面安装软件,请建立子目录。如果要计算作业请在workplace里面建立子目录。
如果账号多人共享,良好的习惯是分别在HOME目录和workplace里面建立每个人姓名缩写的子目录,然后每个人只在自己的子目录里面操作。
十、 常用的资源站点
GNU编译器 http://gcc.gnu.org/
Intel编译器 http://software.intel.com/en-us/intel-coMPIlers/
PGI编译器 http://www.pgroup.com/
CUDA http://www.nvidia.cn/object/cuda-cn.html
OpenMP http://OpenMP.org/wp/
mpich http://www.mpich.org/
mvapich http://mvapich.cse.ohio-state.edu/
OpenMPI http://www.Open-MPI.org/
FFTW http://www.fftw.org/
GOTOBLAS2 https://www.tacc.utexas.edu/tacc-projects/gotoblas2
LAPACK http://www.netlib.org/lapack/
CSDN论坛CUDA http://bbs.csdn.net/forums/CUDA/
小木虫 http://emuch.net/
十一、 中心联系方式
办公电话:85155256
传真电话:85155257
单位主页:http://hpcc.jlu.edu.cn
服务邮箱:hpccadmin@jlu.edu.cn
QQ群号:115060597
单位位置:吉林大学前卫南校区计算机楼b201
通讯地址:长春市前进大街2699号计算机楼b201
邮政编码:130012