多深度文章,請(qǐng)關(guān)注云計(jì)算頻道:https://yq.aliyun.com/cloud
背景
眾所周知,容器技術(shù)的出現(xiàn)深刻改變了軟件交付的方式:
敏捷: 秒級(jí)應(yīng)用啟動(dòng)、輕量級(jí)隔離、細(xì)粒度資源控制、低性能損耗
標(biāo)準(zhǔn)化:版本管理可追溯。
可移植性: 環(huán)境無(wú)關(guān)的交付、部署方式;可用于軟件生命周期中不同運(yùn)行環(huán)境。 這些能力不但影響了企業(yè)軟件的開(kāi)發(fā)、構(gòu)建和交付模式,提高了交付效率和可靠性,也對(duì)于像WRF(Weather Research Forecast)這類大型開(kāi)源氣象科學(xué)預(yù)報(bào)軟件產(chǎn)生了潛移默化的影響。美國(guó)國(guó)家大氣研究中心(NCAR,也是WRF的開(kāi)發(fā)方)于2016年開(kāi)源了自己的容器化解決方案。 而阿里云HPC團(tuán)隊(duì)和容器服務(wù)團(tuán)隊(duì)在NCAR方案的基礎(chǔ)上進(jìn)行了改進(jìn)和增強(qiáng),在保持高性能的同時(shí),方便您實(shí)現(xiàn)一鍵式的部署和運(yùn)行WRF,將復(fù)雜的WRF工作變成一個(gè)高效,可控的自動(dòng)化流程。
注: 為節(jié)省篇幅,會(huì)將美國(guó)國(guó)家大氣研究中心統(tǒng)稱為NCAR
痛點(diǎn)
美國(guó)國(guó)家大氣研究中心(NCAR)容器化WRF并非無(wú)痛呻吟,作為WRF的開(kāi)發(fā)方,維護(hù)者和主要使用者,對(duì)于WRF這個(gè)在工業(yè)界和學(xué)術(shù)界得到廣泛使用的數(shù)值天氣預(yù)測(cè)軟件,NCAR面臨這如下挑戰(zhàn):
編譯和執(zhí)行WRF非常復(fù)雜,需要專業(yè)的知識(shí)和大量的時(shí)間準(zhǔn)備,很久才能得到結(jié)果
代碼量巨大
非常多的軟件依賴
配置容易出錯(cuò),很難排查
經(jīng)常需要數(shù)周的準(zhǔn)備才能將WRF運(yùn)行起來(lái)并且得到結(jié)果
WRF本身的部署難度給基于MPI的WRF的高擴(kuò)展性帶來(lái)了困難
WRF迭代迅速,而部署構(gòu)建困難導(dǎo)致許多公司和研究機(jī)構(gòu)依然使用3.4.1版本的WRF,造成了極大的維護(hù)成本
初學(xué)者抱怨搭建WRF難度過(guò)大,對(duì)于軟件知識(shí)要求太高,導(dǎo)致入門花的時(shí)間太多
研究者發(fā)現(xiàn)重現(xiàn)數(shù)值天氣預(yù)報(bào)的難度極大,因?yàn)闄C(jī)器不同,編譯器配置不同,以及復(fù)雜的配置和流程
而這些痛苦也是中國(guó)的WRF使用者遭遇到的,為了解決這個(gè)問(wèn)題,阿里云容器服務(wù)給出以下解決方案:
方案
整個(gè)方案分為下面幾個(gè)步驟:
通過(guò)容器鏡像標(biāo)準(zhǔn)化WRF的構(gòu)建和配置,同時(shí)實(shí)現(xiàn)一次構(gòu)建到處運(yùn)行
-客戶可以直接使用阿里云Dockerfile,也可以對(duì)其進(jìn)行改進(jìn)和替換
利用OSSFS上傳WRF配置文件,WPS配置文件, 氣象數(shù)據(jù)以及地理基礎(chǔ)數(shù)據(jù),
如果是海量數(shù)據(jù)可以考慮海量數(shù)據(jù)遷移至OSS服務(wù): https://market.aliyun.com/products/52738004/cmfw000394.html
利用容器服務(wù)一鍵式部署和WRF應(yīng)用,并且將運(yùn)行出的數(shù)據(jù)導(dǎo)出到OSS上,并可以直接下載
可以通過(guò)參數(shù)配置指定運(yùn)行方式
利用容器服務(wù)一鍵式部署和運(yùn)行NCL應(yīng)用,將WRF運(yùn)算出的結(jié)果通過(guò)NCL繪圖出來(lái)
上圖所列的是通過(guò)阿里云提供高性能計(jì)算,容器服務(wù)和OSS實(shí)現(xiàn)一鍵式的從數(shù)據(jù)到計(jì)算再產(chǎn)生數(shù)據(jù)的全過(guò)程。
這樣就可以看到氣象的走勢(shì)
總結(jié)
可以看到,利用阿里云HPC和容器服務(wù),您除了可以獲得高性能計(jì)算的洪荒之力,還可以簡(jiǎn)單的掌控這種能力,降低使用門檻,真正實(shí)現(xiàn)彈性的高性能計(jì)算。利用阿里云的能力,我們可以在云端快速的部署和執(zhí)行氣象模擬應(yīng)用,讓傳統(tǒng)的WRF應(yīng)用煥發(fā)新的魅力。阿里云為氣象預(yù)測(cè)提供了豐富的基礎(chǔ)設(shè)施,從彈性計(jì)算、負(fù)責(zé)均衡到對(duì)象存儲(chǔ),日志、監(jiān)控等等。
具體來(lái)說(shuō):
幫助客戶構(gòu)建標(biāo)準(zhǔn)化可追溯的容器鏡像
讓客戶很清楚自己在WRF上配置了什么,并且很容易復(fù)制自己的配置
將系統(tǒng)構(gòu)建過(guò)程透明化,整個(gè)架構(gòu)可描述,降低運(yùn)維成本,避免人員變化帶來(lái)的隱患
加快交付速度,縮短投產(chǎn)時(shí)間(從周到小時(shí))
支持WRF應(yīng)用的一鍵式部署和執(zhí)行
無(wú)需提前軟件依賴,幾個(gè)小時(shí)內(nèi)WRF就開(kāi)始工作
支持本地和云上構(gòu)建和測(cè)試,保持一致性
國(guó)際上WRF的版本演進(jìn)非常迅速,緊跟國(guó)際潮流,保持更新速度
多種軟件及配置組合比較,最優(yōu)性能選擇
想了解更多容器服務(wù)內(nèi)容,請(qǐng)?jiān)L問(wèn) https://www.aliyun.com/product/containerservice
想了解如何在HPC上使用容器服務(wù),請(qǐng)?jiān)L問(wèn)https://help.aliyun.com/document_detail/48631.html
VASP(Vienna Ab-inito Simulation Package)是維也納大學(xué)Hafner小組開(kāi)發(fā)的進(jìn)行電子結(jié)構(gòu)計(jì)算和量子力學(xué)-分子動(dòng)力學(xué)模擬軟件包。它是目前材料模擬和計(jì)算物質(zhì)科學(xué)研究中十分流行的商用軟件之一,VASP是基于贋勢(shì)平面波基組的第一性原理密度泛函計(jì)算程序,VASP軟件作為目前國(guó)內(nèi)國(guó)際上權(quán)威的第一性原理計(jì)算軟件,可以研究多種體系,包括金屬及其氧化物、半導(dǎo)體、晶體、摻雜體系、納米材料、分子、團(tuán)簇、表面體系和界面體系等。
1、硬件環(huán)境:X86架構(gòu)服務(wù)器
2、Intel開(kāi)發(fā)套件版本:parallel_studio_xe_2019_update5
3、安裝用戶:root用戶,安裝到/opt/software下
4、本次安裝的系統(tǒng)版本:CentOS7.6x64
5、cuda環(huán)境版本:cuda10.1
所需軟件介質(zhì)
vasp.5.4.4.tar.gz
或者
vasp.6.1.0.tgz
1、Intel編譯器設(shè)置
我們使用intel編譯器編譯vasp,使用intel MPI運(yùn)行vasp
intel編譯器的安裝和設(shè)置步驟詳見(jiàn)文章《Intel Parallel Studio XE 2019安裝設(shè)置》一文
運(yùn)行如下命令設(shè)置好編譯環(huán)境
source /opt/intel/intel2019u5.sh
2、cuda環(huán)境設(shè)置
提前安裝好cuda,本次安裝環(huán)境安裝的cuda版本為cuda10.1
運(yùn)行如下命令設(shè)置好cuda環(huán)境
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
vasp5.4.4和vasp6.1.0安裝步驟基本一致
本次以vasp6.1.0安裝為例
tar xvf vasp.6.1.0.tgz
cd vasp.6.1.0
1、 復(fù)制makefile文件
cp arch/makefile.include.linux_intel makefile.include
修改如下兩行
CUDA_ROOT :=/usr/local/cuda/
MPI_INC=/opt/intel/impi/2019.5.281/intel64/include/
如果是vasp5.4.4,需要把下面一行的openmp改成qopnemp
CFLAGS=-fPIC -DADD_ -Wall -qopenmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DGPUSHMEM=300 -DHAVE_CUBLAS ##openmp改成qopenmp
2、 vasp5.4.4編譯
make all
在bin下生成vasp_gam vasp_ncl vasp_std三個(gè)可執(zhí)行文件
make gpu
在bin下生成vasp_gpu可執(zhí)行文件
3、 vasp6.1.0編譯
make all
在bin下生成5個(gè)可執(zhí)行文件
vasp_gam vasp_gpu vasp_gpu_ncl vasp_ncl vasp_std
vasp_std 默認(rèn)版本
vasp_ncl 支持自旋軌道耦合的版本
vasp_gam 支持gamma的版本
若不明原因?qū)е聉asp崩潰,可以添加如下參數(shù)編譯
使用該參數(shù)
FFLAGS=-assume byterecl -w -heap-arrays 64
運(yùn)行軟件時(shí)需要用普通用戶,如下操作用jingyang用戶測(cè)試
1、準(zhǔn)備算例,放到~/vasp_test目錄下
INCAR KPOINTS POSCAR POTCAR
2、設(shè)置好intel環(huán)境變量
source /opt/intel/intel2019u5.sh
cd ~/vasp_test
3、單節(jié)點(diǎn)內(nèi)并行測(cè)試
mpirun -np 10 /opt/software/vasp.6.1.0/bin/vasp_std
4、多節(jié)點(diǎn)并行測(cè)試(前提配置好集群環(huán)境)
編輯host文件,內(nèi)容如下
node01
node02
運(yùn)行
mpirun -machinefile host -np 20 /opt/software/vasp.6.1.0/bin/vasp_std
運(yùn)行軟件時(shí)需要用普通用戶,如下操作用jingyang用戶測(cè)試
1、準(zhǔn)備算例,放到~/vasp_test目錄下
INCAR KPOINTS POSCAR POTCAR
注意運(yùn)行GPU版本的vasp時(shí)INCAR需要設(shè)置如下參數(shù)
LREAL=.TRUE.
2、設(shè)置好intel環(huán)境變量
source /opt/intel/intel2019u5.sh
3、設(shè)置cuda環(huán)境變量
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
4、本此節(jié)點(diǎn)共有4個(gè)GPU卡,用如下命令運(yùn)行
mpirun -np 4 /opt/software/vasp.6.1.0/bin/vasp_gpu
用nvidia-smi命令查看gpu的調(diào)用情況
#PBS -N vasp_test
#PBS -l nodes=2:ppn=20
#PBS -q batch
#PBS -V
#PBS -S /bin/bash
### Set intel environment###
source /opt/intel/compilers_and_libraries/linux/bin/compilervars.sh intel64
source /opt/intel/mkl/bin/mklvars.sh intel64
source /opt/intel/impi/2019.5.281/intel64/bin/mpivars.shcd $PBS_O_WORKDIR
NP=`cat $PBS_NODEFILE | wc -l`
NN=`cat $PBS_NODEFILE | sort | uniq | tee /tmp/nodes.$$ | wc -l`
cat $PBS_NODEFILE > /tmp/nodefile.$$
mpirun -machinefile /tmp/nodefile.$$ -n $NP /opt/software/vasp.6.1.0/bin/vasp_std
rm -rf /tmp/nodefile.$$
rm -rf /tmp/nodes.$$
景陽(yáng)雷諾科技