文敏華,胡廣超,王一超
(上海交通大學 網(wǎng)絡信息中心,上海 200240)
高性能計算(High Performance Computing,HPC)與理論研究、實驗科學并稱為人類科學研究的三大范式[1],在生物科學、材料模擬、天氣預報、工程計算等眾多領域有廣泛應用。軟件部署和環(huán)境維護是HPC 集群運維的重點和難點。HPC 軟件通常涉及復雜依賴環(huán)境、多種依賴庫、多版本部署,而一般用戶往往需要使用特定版本軟件,極易與其他版本產(chǎn)生沖突;另一方面,新型HPC 芯片層出不窮,計算架構的多樣性使軟件部署方式更加復雜。如果采用傳統(tǒng)物理機直接編譯的部署方法,很難兼顧其他軟件的版本和依賴環(huán)境,軟件版本控制極大增加了部署和使用難度。
容器是一種輕型虛擬化技術,以輕量級、隔離性和啟動速度快等優(yōu)勢著稱,近年來逐漸被HPC 領域關注和應用。容器技術為軟件安裝提供了一種便利的打包機制[2],可對應用及其依賴環(huán)境進行打包,并封裝為單個對象,既可以避免不同版本軟件產(chǎn)生沖突,又提升了不同系統(tǒng)間的可移植性。
2013 年,世界首個開源容器引擎Docker[3]誕生,其基于Linux 核心中的資源分離機制和cgroup 等技術實現(xiàn)了靈活、便捷、輕量級的容器方案。之后容器技術快速發(fā)展,Linux Container[4]等典型的應用實例,以及Kubernetes[5]、Mesos[6]等多容器編排框架相繼誕生,并在HPC 領域有所應用[7-10]。然而上述容器技術存在一些問題,如多節(jié)點并行運行模式下Linux Container 存在性能損耗[11];Docker 在多用戶共享場景下的權限和安全性存在問題[12],且對多處理器及多節(jié)點并行計算模式MPI 的支持機制復雜[13],使其在HPC 中的應用受到限制。針對這些問題,一些面向HPC 計算的容器技術先后被開發(fā)出來[14-16],其中Singularity 是其中典型代表,由于在性能、安全性、并行效率等方面表現(xiàn)優(yōu)異,Singularity 已在HPC 領域廣泛應用[15],本文便是基于Singularity容器技術進行軟件部署和測試。
本文選取開源分子動力學軟件Quantum Espresso(QE)[17-18]在不同計算平臺進行部署和性能測試,探索容器使用對HPC 應用部署和性能的影響。在算法上,分子動力學模擬對訪存和計算均具有一定要求,是HPC 的典型計算模式。在軟件選擇上,QE 是最廣泛使用的開源分子動力學軟件之一,其計算性能和可擴展性均有充分研究與優(yōu)化依據(jù)[19],在眾多分子動力學軟件中具有代表性。
除了傳統(tǒng)的x86 計算平臺,本文也將面向國產(chǎn)ARM 計算平臺進行測試,以探索容器技術在不同架構計算平臺的適用性。分別通過容器技術安裝基準測試程序和QE,以不同規(guī)模的算例進行性能測試,并與物理機運行性能進行比較,以探索容器技術對以QE 為代表的分子動力學軟件可移植性和性能的影響。
Singularity 為超輕量級容器化方案,用戶可在隔離空間內(nèi)部署所需應用,有效解決物理機上因依賴插件過多而導致的版本沖突,同時給應用版本的升級也提供了極大便利。此外,容器化應用在不同計算平臺上可快速遷移,諸多優(yōu)勢使得Singularity 在HPC 領域應用空間廣闊。
Singularity 架構如圖1 所示,容器中的應用運行在一個相對隔離的空間內(nèi)。從操作系統(tǒng)角度來看,容器和主機上運行的進程比較相似,使得容器易于運行與管理。相較于傳統(tǒng)虛擬機技術,容器共享物理機上的Linux 內(nèi)核與底層硬件資源使得容器體量變小,一定程度上會降低虛擬化開銷。容器對底層資源的訪問無需通過root 權限,普通用戶即可共享主機上的服務,為容器的可遷移性奠定了良好基礎,使得任何用戶均可在裸機上運行容器中的應用。
Fig.1 Architecture of Singularity圖1 Singularity 架構
Singularity 是專門面向HPC 開發(fā)的容器技術,主要特征為:①計算可移植。容器內(nèi)部的軟件棧從數(shù)據(jù)到依賴庫均可在不同操作系統(tǒng)和計算平臺上遷移,鏡像將應用打包成一個可復制與共享的文件,該文件適用于任何標準Unix文件系統(tǒng);②用戶自由度高。非特權用戶也可操作容器并根據(jù)需求實施應用部署、安裝依賴和版本升級等操作,無需擔心與其他應用的依賴版本沖突;③不完全隔離。不同于Docker 和Linux Container 等容器技術,Singularity 沒有實現(xiàn)網(wǎng)絡地址空間的隔離,網(wǎng)絡虛擬化開銷較低;④兼容HPC 計算環(huán)境。Singularity 可有效整合并行文件系統(tǒng)、GPU、MPI 和快速網(wǎng)絡等傳統(tǒng)HPC 軟硬件支持;⑤安全性高。雖然容器內(nèi)外用戶目錄保持一致,但容器不能對主機上的系統(tǒng)配置實施任何其他操作,普通用戶無法更改鏡像文件內(nèi)容,對其僅有只讀權限。
主要通過兩個基準測試程序和QE 的3 個算例進行部署與性能測試。
基準測試程序主要用于對分項性能參數(shù)進行測試,分別采用STREAM[20]和HPL[21]兩個基準測試程序?qū)υL存和計算能力進行測試。STREAM 是一個用于測試可持續(xù)訪存帶寬的綜合基準測試程序,由4 種不同算術操作組成,分別為Copy、Scale、Add 和Triad。STREAM 最多使用3 個數(shù)組和1 個標量進行基本算術操作,通過控制數(shù)組數(shù)據(jù)大小可以實現(xiàn)不同數(shù)據(jù)量的內(nèi)存帶寬測試。HPL 是目前使用最廣泛的浮點性能測試基準程序,長期用于世界前500 強超級計算機排行榜排名。HPL 通過采用高斯消元法求解一元N 次稠密線性代數(shù)方程組對HPC 集群進行測試,評價其浮點計算能力。
開源分子動力學軟件QE 是在密度泛函理論、贗勢和平面波的基礎上,使用電子結構技術對材料進行量子模擬的軟件包,從其誕生至今,一直在全球領先的材料建模團隊中廣泛使用。QE 彈性擴展性能良好,在不同大型并行計算機的各種硬件架構上均能保持優(yōu)越性能,為其在HPC 平臺上的容器部署奠定了良好基礎。
分別在x86 平臺和國產(chǎn)ARM 平臺上進行部署與性能測試,配置信息如表1 所示。在軟件層面,兩個平臺除操作系統(tǒng)外,其余均采用同版本軟件。
Table 1 Testing platform environment configuration表1 測試平臺環(huán)境配置
與在裸機上通過源碼編譯不同,QE 在容器中的部署需按照一定規(guī)則生成定義文件,然后通過Singularity 的build指令生成相應鏡像。定義文件的制作示意圖見圖2,其本質(zhì)安裝邏輯與裸機安裝一致,可以對軟件和依賴庫的版本實現(xiàn)精細控制。定義文件包含%files、%environment 和%post 等關鍵屬性,分別用于實現(xiàn)容器內(nèi)外文件傳輸、環(huán)境變量配置與使用命令行編譯軟件等操作。
Fig.2 Schematic diagram of QE image definition file圖2 QE 鏡像制作定義文件示意圖
制作定義文件后,通過命令行“singularity build qe.sif qe.def”生成鏡像,此處qe.sif 為生成的鏡像,qe.def 為制作鏡像的定義文件。鏡像生成后,可以通過Singularity 的exec指令調(diào)用鏡像中封裝的各類可執(zhí)行文件,從而運行容器內(nèi)應用。
本文測試平臺包括x86 平臺和國產(chǎn)ARM 平臺,兩種平臺部署邏輯一致,僅需根據(jù)實際配置對定義文件內(nèi)環(huán)境變量、源碼安裝命令進行設置即可,這表示x86 平臺的配置經(jīng)驗可以比較方便地推廣到國產(chǎn)ARM 計算平臺上。
對于基準測試程序,本文主要針對單節(jié)點進行測試,目的是獲得容器下單項特征的性能數(shù)據(jù);對于QE,本文分別在x86 平臺和ARM 平臺上使用不同核心數(shù)量進行測試。兩種架構上使用的數(shù)據(jù)為官方提供的AUSURF112、CuO 和PSIWAT,鏈接為https://github.com/QEF/benchmarks。
圖3 和圖4 分別為STREAM 和HPL 基準測試程序在x86 平臺和國產(chǎn)ARM 平臺上的性能比較,此處調(diào)用單節(jié)點所有核心,以測試整個節(jié)點的性能。對于x86 平臺,容器對表征內(nèi)存帶寬的STREAM 帶來的損失小于1%,對表征浮點計算性能的HPL 帶來的損失亦小于1%。對于國產(chǎn)ARM平臺,容器對內(nèi)存帶寬帶來的損失小于3%,對浮點計算性能帶來的損失小于1%。兩種計算平臺的性能損失均不超過3%。由此可以推測,不論是對于計算受限還是訪存受限的應用,容器的引入都不會帶來較大的性能損失。
Fig.3 Performance comparison of x86 and ARM platform on STREAM benchmark圖3 x86 平臺與ARM 平臺STREAM 基準測試性能比較
Fig.4 Performance comparison of x86 and ARM platform on HPL benchmark圖4 x86 平臺與ARM 平臺HPL 基準測試性能比較
Singularity 容器部署作為新的部署方法,需優(yōu)先考慮其正確性,為此比較物理機部署和容器部署的計算結果差異。對于QE 模擬,總能(Total Energy)是其關鍵指標,可用于結果正確性驗證。通過比較基于這兩種部署方式的總能隨運行時迭代步數(shù)的變化情況判斷二者結果是否一致。圖5 展示了一個典型QE 算例(CuO)在兩種計算平臺上的運行結果,可以看出,不論是x86 還是ARM 平臺,物理機部署方式和Singularity 容器部署方式的總能都能吻合得很好,說明兩種部署方式模擬結果一致,證明了Singularity 容器部署方式的正確性。
Fig.5 Correctness verification of QE installation based on Singularity(up:x86,down:ARM)圖5 Singularity 安裝QE 正確性驗證(上:x86 平臺,下:ARM 平臺)
圖6 為x86 平臺上物理機與Singularity 運行AUSURF112、CuO 和PSIWAT 3 個算例的計算時間??梢钥闯?,從單節(jié)點內(nèi)的20 核心和40 核心并行,到跨節(jié)點的80 核心和120 核心并行,基于Singularity 容器技術安裝的QE 均能取得接近物理機裸機部署的性能,性能損失最大不超過3%,最小則小于1%,可見Singularity 對跨節(jié)點的MPI 并行方式確實有較好的支持效果。
圖7 為國產(chǎn)ARM 平臺上物理機和Singularity 運行AUSURF112、CuO 和PSIWAT 3 種算例的計算時間。由不同并行核數(shù)下性能表現(xiàn)可以看出,QE 在兩種環(huán)境下可以保持相近的性能。在3 種算例上使容器運行應用,結果表明不同并行度下容器部署性能損耗值均小于2%,可見對于國產(chǎn)ARM 平臺,容器的引入也基本上不會帶來性能損失。
Fig.6 Running time of examples of physical machine and Singularity on x86 platform圖6 x86 平臺物理機與Singularity 算例運行時間
Fig.7 Running time of examples of physical machine and Singularity on ARM platform圖7 ARM 平臺物理機與Singularity 算例運行時間
本文闡述了基于Singularity 容器技術的QE 部署流程,并在x86 和國產(chǎn)ARM 兩種平臺上進行了部署實踐和性能測試。利用容器技術靈活、便捷、輕量級等特點可有效應對應用軟件及其依賴庫版本不同帶來的挑戰(zhàn),方便HPC 集群管理人員進行應用軟件部署與管理。在兩種計算平臺的不同并行規(guī)模上,相較于物理機裸機部署方法,基于容器技術的部署方法性能損失小于3%,幾乎可以忽略不計。不僅如此,QE 在兩種計算架構上容器中的性能均可隨節(jié)點數(shù)增加而良好擴展,即使算例的計算規(guī)模不斷擴大也能夠取得物理機般的計算效果,說明Singularity 容器高度兼容多核與MPI 多節(jié)點并行的計算方式,對高速網(wǎng)絡的支持度較為友好,在x86 和國產(chǎn)ARM 兩種主流HPC 集群架構上均能保持穩(wěn)定的計算性能。
綜上所述,對于分子動力學軟件QE 以及不同計算平臺,Singularity 容器技術可以在保障性能的情況下優(yōu)化軟件部署與管理。后續(xù)將繼續(xù)對其他分子動力學軟件進行部署和性能測試,驗證容器部署模式對分子動力學類計算模式的可用性。