集群的搭建从方案制定、实施验收到后期运维,是复杂又(yòu)漫長(cháng)的过程。集群搭建完成后,急需将应用(yòng)软件源代码变成集群可(kě)执行的代码文(wén)件,并将可(kě)执行的文(wén)件安(ān)装(zhuāng)到操作(zuò)系统中(zhōng),应用(yòng)软件才能(néng)正常运行,这个过程简称為(wèi)“编译安(ān)装(zhuāng)”。
本期就以“VASP”為(wèi)例和大家聊一下如何通过编译安(ān)装(zhuāng)為(wèi)用(yòng)户的集群应用(yòng)完成最后一站。
01/為(wèi)什么需要编译
每一位和集群打交道的小(xiǎo)伙伴都知道:集群搭建完成≠可(kě)以直接使用(yòng)。高校的大型超算集群承担着“教學(xué)+科(kē)研”的双重任務(wù),不同學(xué)科(kē)需要不同的专业计算软件,大部分(fēn)软件都有(yǒu)绕不开的“编译安(ān)装(zhuāng)”步骤,编译可(kě)以说是完成集群交付运营的“桥梁”,而编译器就是将“一种语言(通常為(wèi)源代码:一般為(wèi)高级语言如Pascal、C、C++、Java、汉语编程等或汇编语言)”翻译為(wèi)“另一种计算机可(kě)以直接解读&运行的语言(通常為(wèi)低级语言或者机器语言)”的程序。
不同于windows极為(wèi)友好的安(ān)装(zhuāng)操作(zuò),linux环境下手动编译安(ān)装(zhuāng)科(kē)學(xué)计算软件有(yǒu)着不小(xiǎo)的难度,各种前置的软件和依赖库常常让非专业用(yòng)户不知所措,投入不必要的學(xué)习成本。编译安(ān)装(zhuāng)是奥工(gōng)集群服務(wù)的基本内容,奥工(gōng)服務(wù)小(xiǎo)分(fēn)队為(wèi)用(yòng)户安(ān)装(zhuāng)集群应用(yòng)软件,保障他(tā)们超算集群软件“能(néng)用(yòng)”且“好用(yòng)”,帮助客户聚焦集群应用(yòng)本身。
02/VASP简介
VASP 全称 Vienna Ab-initio Simulation Package,是维也纳大學(xué) Hafner 小(xiǎo)组开发的进行電(diàn)子结构计算和量子力學(xué)-分(fēn)子动力學(xué)模拟软件包,也是目前材料模拟和计算物(wù)质(zhì)科(kē)學(xué)研究中(zhōng)最流行的商(shāng)用(yòng)软件之一。VASP的功能(néng)很(hěn)多(duō),可(kě)以计算材料的结构参数(键長(cháng),键角,晶格常数,原子位置等)和构型;计算材料的状态方程和力學(xué)性质(zhì)(體(tǐ)弹性模量和弹性常数);计算材料的電(diàn)子结构(能(néng)级、電(diàn)荷密度分(fēn)布、能(néng)带、電(diàn)子态密度和ELF)等等,因此在高校领域的集群中(zhōng)非常常见。
03/编译安(ān)装(zhuāng)
首先,需要准备编译的环境。通常选用(yòng)Intel Compiler /GNU Compiler + MPI Compiler 作(zuò)為(wèi)编译环境来进行安(ān)装(zhuāng)。
先安(ān)装(zhuāng)Intel compiler 和Intel mpi,安(ān)装(zhuāng)好后加载相对应的环境变量。
这样我们就获得了一个完整的编译环境。有(yǒu)了环境,就可(kě)以直接编译vasp了么?并不是,编译vasp需要有(yǒu)fftw数學(xué)库作(zuò)為(wèi)依赖,我们需要先解决依赖问题,编译好fftw。
至此才算是做完了准备工(gōng)作(zuò),准备工(gōng)作(zuò)结束不要忘了先去官网找到最新(xīn)的补丁,给软件打好补丁(如果已经是最新(xīn)版不需要此步骤),然后就可(kě)以开始编译VASP了。自从vasp5.4版本以后,它的目录结构及makefile有(yǒu)了很(hěn)大的改进和提升,不再像之前需要繁琐的修改了,而是通过makefile.include文(wén)件进行配置即可(kě)。
紧接着,重点来了,在编译过程中(zhōng),由于我们的测试环境配置為(wèi)搭载AMD CPU的服務(wù)器,我们还可(kě)以对编译进行一个简单优化:
下面是相关参数的解释:
●DMPI / -DMPI_BLOCK=8000
使用(yòng)MPI运行。启用(yòng)-Duse_collective时,不使用(yòng)参数MPI_BLOCK
●Duse_collective
使用(yòng)集體(tǐ)MPI函数(Allreduce/Alltoall/Alltoallv)代替手写的Isend/Irecv/Waitall
●Dscalapack
使用(yòng) Scalapack
●DELPA
使用(yòng)ELPA特征值求解器
●DCACHE_SIZE=4000
32 KB一级缓存的块
●Duse_shmem
使用(yòng)shmem进行工(gōng)作(zuò)阵列的节点间通信
优化完成后即可(kě)开始继续编译了:
make all 2>&1 | tee make.log
稍作(zuò)等待之后,编译完成,并会生成三个可(kě)执行文(wén)件,如下:
vasp_std 默认版本
vasp_ncl 支持自旋轨道耦合的版本
vasp_gam 支持gamma的版本。
VASP根据配置不同还可(kě)以编译gpu版本,这里就不多(duō)做展开了。
04/性能(néng)测试
编译安(ān)装(zhuāng)完成,VASP性能(néng)如何?是否达到预期了呢(ne)?最后一步,奥工(gōng)小(xiǎo)分(fēn)队使用(yòng)霄威服務(wù)器对VASP安(ān)装(zhuāng)后的性能(néng)进行测试,确保VASP获得更好的优化性能(néng)。
单节点测试结果:
多(duō)节点测试结果:
结果表明:经过编译优化的VASP已经成功安(ān)装(zhuāng)在集群上,且处于高性能(néng)运行中(zhōng)。
作(zuò)為(wèi)“附加服務(wù)”,奥工(gōng)小(xiǎo)分(fēn)队对“编译安(ān)装(zhuāng)”的重视程度并不亚于集群建设中(zhōng)的任何一环。面对五花(huā)八门的软件、不同集群环境,奥工(gōng)小(xiǎo)分(fēn)队在编译安(ān)装(zhuāng)中(zhōng)不断优化、為(wèi)客户集群软件高性能(néng)运行保驾护航。
—END—
OGSP(Ongineer Service Platform)是奥工(gōng)科(kē)技(jì )自主研发的一款面向终端计算用(yòng)户的、安(ān)全、可(kě)进化的密集计算服務(wù)平台。
OGSP秉承云原生设计理(lǐ)念,搭建密集计算场景中(zhōng)基础侧、平台侧、应用(yòng)侧的生态服務(wù)架构,谋求基础侧的稳定、健康、可(kě)扩展性;平台侧的高效、动态、易用(yòng)性;应用(yòng)侧的专业、交互、场景化。将服務(wù)产(chǎn)品化、产(chǎn)品场景化,為(wèi)用(yòng)户提供基于实际生产(chǎn)场景的一站式密集计算服務(wù)。
hwclould@ongineer.cn
南京市雨花(huā)台區(qū)锦绣街(jiē)绿地之窗C4栋326室
025-86738812
版权所有(yǒu) ©南京奥工(gōng)信息科(kē)技(jì )有(yǒu)限公(gōng)司 京ICP证000000号
技(jì )术支持:网站建设