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