張玉春欣,馮魯彬,梁建國(guó)
(山東科技大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,山東青島 266590)
海冰模型[1]是由美國(guó)能源部[2]的洛斯阿拉莫斯國(guó)家實(shí)驗(yàn)室負(fù)責(zé)開發(fā)和維護(hù)的[3],它是地球系統(tǒng)模型的重要組成部分。海冰是全球氣候變化最敏感的部分之一,其變化對(duì)全球氣候演變具有巨大影響[4]。十幾年來,海冰模型一直用來定量預(yù)測(cè)海冰的演變規(guī)律,為地球系統(tǒng)科學(xué)中諸多分支學(xué)科的相互融合提供平臺(tái)[5]。
近些年來,不少地球系統(tǒng)模型性能得到很大提升,但海冰模型未進(jìn)行優(yōu)化。因此,海冰模型性能逐漸成為制約地球系統(tǒng)模型性能的關(guān)鍵因素,所以對(duì)海冰模型進(jìn)行性能調(diào)優(yōu)有著重要意義[6]。在海冰模型模擬計(jì)算中,模擬規(guī)模通常會(huì)達(dá)到幾百至上千年,出于對(duì)模擬計(jì)算精確性和有效性考慮,時(shí)間步長(zhǎng)在幾分鐘到幾小時(shí)之間,空間網(wǎng)格距離在幾公里到幾十公里不等,其計(jì)算量龐大、耗時(shí)長(zhǎng),對(duì)計(jì)算機(jī)軟硬件是相當(dāng)大的挑戰(zhàn)[7]。如何利用超級(jí)計(jì)算機(jī)更高效地完成海冰模型的模擬計(jì)算,模擬各運(yùn)行模式下的性能變化成為熱點(diǎn)。
目前,基于多核、眾核處理器技術(shù)的新型體系結(jié)構(gòu)下的大型科學(xué)計(jì)算應(yīng)用研究是高性能計(jì)算領(lǐng)域研究熱點(diǎn)[8],目標(biāo)為有效提升科學(xué)研究效率,推動(dòng)其在各領(lǐng)域的應(yīng)用發(fā)展[9-10]。
曙光超級(jí)計(jì)算機(jī)作為通用x86 體系結(jié)構(gòu)的超級(jí)計(jì)算機(jī),尤其適合海冰模型這種龐大的計(jì)算密集型程序。雖然當(dāng)今新型體系結(jié)構(gòu)不斷出現(xiàn),但是通用x86 體系結(jié)構(gòu)的超級(jí)計(jì)算機(jī)依然是科研領(lǐng)域研究者使用最廣泛的超級(jí)計(jì)算機(jī)[11],因此在曙光超級(jí)計(jì)算機(jī)上對(duì)海冰模型進(jìn)行性能調(diào)優(yōu)研究具有非常重要的意義。
海冰模型作為一種復(fù)雜的有限差分網(wǎng)格點(diǎn)模型,由多種物理計(jì)算和動(dòng)力學(xué)組成,其中包括海冰熱力學(xué)、動(dòng)力學(xué)、δ-愛丁頓輻射過程等[12]。Balaprakash 等[13]對(duì)海冰模型的求解方法、動(dòng)力學(xué)、熱力學(xué)過程的計(jì)算性能進(jìn)行評(píng)估,證明海冰模型計(jì)算方法的有效性;陳宏博等[14]對(duì)CESM 中的有限差分算法采用多種方法進(jìn)行優(yōu)化,性能獲得提升;Fu等[15-17]根據(jù)申威眾核處理器的結(jié)構(gòu)特點(diǎn)優(yōu)化數(shù)據(jù)分配方式與模擬計(jì)算方程方法,對(duì)代碼進(jìn)行重組,提高了地球系統(tǒng)模型的并行性;Xiao 等[18]針對(duì)大氣環(huán)流模式動(dòng)力框架提出通信避免算法,不僅降低了通信頻率,還實(shí)現(xiàn)了通信的隱藏。
以上研究都是基于系統(tǒng)模型具體算法或者整個(gè)模擬計(jì)算過程的并行優(yōu)化,但在超級(jí)計(jì)算機(jī)下對(duì)海冰模型自身的多種運(yùn)算方式進(jìn)行并行性能調(diào)優(yōu)的研究還存在空白。
曙光超級(jí)計(jì)算機(jī)主要由高性能計(jì)算集群系統(tǒng)以及虛擬化系統(tǒng)組成,高性能計(jì)算集群系統(tǒng)基于曙光TC4600E 刀片平臺(tái)和W760-G20 服務(wù)器搭建完成。本文將海冰模型CICE 整體移植到曙光超級(jí)計(jì)算機(jī)上,進(jìn)行相關(guān)性能調(diào)優(yōu)研究。
曙光超級(jí)計(jì)算機(jī)雙路刀片的雙精度浮點(diǎn)計(jì)算能力為542.4 萬(wàn)億次/s。計(jì)算刀片、登陸節(jié)點(diǎn)、并行存儲(chǔ)節(jié)點(diǎn)之間采用100GB EDR Infiniband 高速交換網(wǎng)絡(luò)互聯(lián),單個(gè)高頻計(jì)算節(jié)點(diǎn)采用2 顆Intel Xeon E3-1240V5 CPU,每顆CPU4核心,主頻3.5GHz;單個(gè)多核計(jì)算節(jié)點(diǎn)采用2 顆Intel Xeon Gold 6132 CPU,每顆CPU14 核心,主頻2.6GHz。平臺(tái)并行結(jié)構(gòu)拓?fù)鋱D如圖1 所示。
Fig.1 Structural topology of“Dawning”supercomputer圖1 曙光超級(jí)計(jì)算機(jī)并行結(jié)構(gòu)拓?fù)鋱D
本研究選用海冰模型CICE v5.1 版本作為應(yīng)用源程序。與之前版本相比,其采用了更靈活的模擬計(jì)算方法,有效提升了模擬速度、效率和精度。該版本支持獨(dú)立運(yùn)行和全耦合兩種模擬計(jì)算方式。獨(dú)立運(yùn)行模式的模擬計(jì)算,是將大氣與海洋的實(shí)際觀測(cè)數(shù)據(jù)作為海冰模型的強(qiáng)迫輸入,通過海冰模型相關(guān)計(jì)算步驟完成南北極中海冰區(qū)域體積、質(zhì)量、熱力學(xué)等變量的模擬計(jì)算。全耦合運(yùn)行模式的模擬計(jì)算是在海冰模型獨(dú)立運(yùn)行模式基礎(chǔ)上,通過耦合器與地球系統(tǒng)模式中的大氣、陸地、海洋等部分進(jìn)行數(shù)值傳輸與通信,協(xié)同完成地球系統(tǒng)模擬計(jì)算。
海冰模型的并行方案采用數(shù)據(jù)并行方法,不同的數(shù)據(jù)分割方法會(huì)對(duì)性能產(chǎn)生較大影響。7 種數(shù)據(jù)分割方法分別是:cartesian-slenderX1、cartesian-slenderX2、sectcart、cartesian-square、spacecurve、roundrobin、sectrobin[19]。
海冰模型運(yùn)行過程需要多個(gè)環(huán)境協(xié)同完成,而大部分超級(jí)計(jì)算機(jī)是沒有配置這些依賴環(huán)境的,所以在曙光超級(jí)計(jì)算機(jī)上配置依賴庫(kù)環(huán)境。對(duì)依賴函數(shù)庫(kù)的安裝順序是zlib、HDF5、netCDF、netCDF-fortran,需按照這個(gè)順序進(jìn)行安裝,否則無(wú)法成功安裝上述依賴函數(shù)庫(kù)。
海冰模型研究提供的開源強(qiáng)迫輸入數(shù)據(jù)只有精確度為3度的數(shù)據(jù),這種輸入數(shù)據(jù)不僅精度低且只能運(yùn)行海冰模型的3 種笛卡爾網(wǎng)格劃分方式,不能用于運(yùn)行海冰模型全部7 種網(wǎng)格劃分方式。為對(duì)海冰模型性能進(jìn)行全面調(diào)優(yōu),考慮到與大氣網(wǎng)格數(shù)據(jù)T62 格式兼容,使用雙線性插值方法對(duì)輸入網(wǎng)格進(jìn)行預(yù)處理,利用NCAR 提供的NCL 研究工具將大氣網(wǎng)格數(shù)據(jù)T62 原始網(wǎng)格數(shù)據(jù)轉(zhuǎn)化生成1 度強(qiáng)迫輸入數(shù)據(jù)。
海冰模型中新數(shù)據(jù)的更新需要依賴上一次計(jì)算的數(shù)據(jù),因此海冰模型初始化時(shí)需要在各個(gè)進(jìn)程間建立通信,用于網(wǎng)格之間傳遞數(shù)據(jù)。但在實(shí)際運(yùn)算過程中許多網(wǎng)格單元沒有海冰,更新沒有海冰區(qū)域的數(shù)據(jù)是毫無(wú)意義的。因此,在CICEv5.1 中引入掩碼功能,可以隨時(shí)修改需要更新數(shù)據(jù)的區(qū)域,以減少更新非海冰區(qū)域的數(shù)據(jù)通信開銷。圖2 中白色部分為沒有海冰的陸地部分,在計(jì)算時(shí)就可以通過掩碼將這部分?jǐn)?shù)據(jù)屏蔽,不再更新這部分?jǐn)?shù)據(jù),減少了無(wú)海冰區(qū)域更新時(shí)傳遞的數(shù)據(jù)量,降低了通信開銷。
Fig.2 Land parts of sea ice圖2 海冰中的陸地部分
Fig.3 Schematic diagram of task block boundaries圖3 任務(wù)塊邊界
3.4.1 邊界數(shù)據(jù)更新原理
海冰模型中MPI 通信用于任務(wù)塊邊界數(shù)據(jù)的更新。為了支持有限差分計(jì)算,邊界數(shù)據(jù)的更新需要傳遞鄰居信息,每一層塊除邊界塊外有二維水平面上相鄰的8 個(gè)鄰居,圖3 展示了單個(gè)任務(wù)塊的邊界是如何與其他鄰居關(guān)聯(lián)的。當(dāng)鄰居塊被分配給不同的MPI[19]進(jìn)程計(jì)算時(shí),通過MPI 消息傳遞方式在多個(gè)塊之間進(jìn)行數(shù)據(jù)通信。
3.4.2 網(wǎng)格劃分方式
將海冰模型中的水平網(wǎng)格分解為二維任務(wù)塊實(shí)現(xiàn)并行化,劃分的任務(wù)塊被分配給不同MPI 進(jìn)程以進(jìn)行計(jì)算,每個(gè)MPI 進(jìn)程可以分配多個(gè)任務(wù)塊。海冰模型有很多種網(wǎng)格劃分方式,每種劃分方式所需要的處理器形狀和劃分類型不同。在CICEv5.1 版本中網(wǎng)格劃分的主要類型有cartesian、sectcart、spacecurve、roundrobin、sectrobin。其中cartesian 根據(jù)分布類型對(duì)處理器形狀進(jìn)一步細(xì)化為slenderX1、slenderX2、cartesian-square(square-ice 和square-pop)。本文討論了7 種網(wǎng)格劃分方式的優(yōu)缺點(diǎn),圖4 展示了slenderX1 的劃分方式。圖中橫坐標(biāo)為i維,縱坐標(biāo)為j維,不同顏色代表分配給每個(gè)任務(wù)塊的MPI 進(jìn)程[4]。
slenderX1 只劃分i維,所以塊的縱橫比高、陰影區(qū)域多、通信數(shù)據(jù)量大,但鄰居數(shù)量固定,負(fù)載平衡好。slenderX2 方式的劃分如圖5 所示。與slenderX1 類似,區(qū)別是其在j維上劃分,所以j維上的長(zhǎng)度短、陰影區(qū)小。
cartesian-square 劃分方式如圖6 所示。劃分方式分為兩種:①當(dāng)j方向劃分的塊數(shù)大于i方向上劃分的塊數(shù)時(shí),采用square-pop 的處理器形狀;②當(dāng)i方向上劃分的塊數(shù)大于j方向上劃分的塊數(shù)時(shí),采用square-ice 的處理器形狀。cartesian-square 對(duì)二維任務(wù)塊的大小有限制,但是幾個(gè)相鄰塊通??梢怨蚕硐嗤腗PI 進(jìn)程。任務(wù)塊的鄰居少,陰影區(qū)小,有助于通信性能提升。缺點(diǎn)是會(huì)產(chǎn)生物理上緊密相連的塊,這樣會(huì)導(dǎo)致海冰的負(fù)載平衡很差。
Fig.4 SlenderX1圖4 slenderX1
Fig.5 SlenderX2圖5 slenderX2
Fig.6 Catesiansquare圖6 catesiansquare
sectcart劃分方式如圖7所示,是在cartesian-square 劃分方式基礎(chǔ)上將j維度劃分成二維任務(wù)塊,又將每個(gè)二維任務(wù)塊在j 維上平均劃分成4 個(gè)小的二維任務(wù)塊,并將其分配給不同的MPI 進(jìn)程進(jìn)行計(jì)算。此種劃分方式可以將不同區(qū)域的計(jì)算任務(wù)盡可能劃分給同一個(gè)MPI 進(jìn)程,提高了計(jì)算性能。
圖8給出spacecurve的劃分方式。i、j維都劃分,此種劃分方式需要定義任務(wù)塊大小,以保證劃分后塊的大小一致。將這些任務(wù)塊沿著Hilbert-m-Peano-Cinco 空間曲線分配給每個(gè)進(jìn)程。這種劃分方式將不需要計(jì)算的無(wú)海冰區(qū)域盡可能劃分給同一個(gè)進(jìn)程,并且每個(gè)任務(wù)塊的鄰居數(shù)量盡量少。
roundrobin劃分方式如圖9所示。i維和j維都劃分,這種劃分方式在將無(wú)海冰區(qū)域的陸地部分剔除之后,以在i維輪詢的方式將任務(wù)塊分配給各個(gè)MPI 進(jìn)程,這樣會(huì)帶來負(fù)載均衡,但會(huì)導(dǎo)致鄰居任務(wù)的數(shù)量較多,通信代價(jià)高。sectrobin 劃分的工作方式類似于roundrobin 劃分,劃分方式如圖10 所示。區(qū)別在于它盡量將網(wǎng)格上不同位置的任務(wù)塊分配到同一進(jìn)程中。
Fig.7 Sectcart圖7 sectcart
Fig.8 Spacecurve圖8 spacecurve
Fig.9 Roundrobin圖9 roundrobin
Fig.10 Sectrobin圖10 sectrobin
基于海冰模型的7 種網(wǎng)格劃分方式進(jìn)行性能調(diào)優(yōu)研究,將上述x與y維度的精確度為320×384 的1 度強(qiáng)迫數(shù)據(jù)作為輸入,設(shè)置海冰模型迭代周期為10 天。在曙光x86 超級(jí)計(jì)算機(jī)上對(duì)海冰模型在不同進(jìn)程數(shù)下對(duì)典型海冰模型劃分方式slenderX2 的塊大小進(jìn)行調(diào)優(yōu),驗(yàn)證海冰模型的可靠性。參數(shù)如表1 所示,結(jié)果如圖11 所示。
Table 1 The first experimental configuration of“Dawning”platform表1 曙光平臺(tái)第一次實(shí)驗(yàn)配置
Fig.11 The first experimental test of“Dawning”platform圖11 曙光平臺(tái)第一次實(shí)驗(yàn)測(cè)試
從圖11 可以看出,在曙光x86 超級(jí)計(jì)算機(jī)上海冰模型slenderX2 的劃分方式在每個(gè)進(jìn)程分配一個(gè)計(jì)算任務(wù)時(shí),隨著進(jìn)程數(shù)的增加,劃分任務(wù)塊減小時(shí)運(yùn)行時(shí)間持續(xù)下降,性能最高提升了8.32 倍。
繼續(xù)對(duì)海冰模型性能調(diào)優(yōu),第二次試驗(yàn)對(duì)海冰模型7種劃分方式下的性能進(jìn)行更加細(xì)致的測(cè)試實(shí)驗(yàn)。測(cè)試進(jìn)程數(shù)為320,具體參數(shù)如表2 所示,+mh 代表開啟掩碼(mask halo)。
Table 2 “Dawning”x86 platform second experiment configuration mode(MPI process number=320)表2 曙光x86 平臺(tái)第二次實(shí)驗(yàn)配置方式(MPI 進(jìn)程數(shù)=320)
曙光x86 平臺(tái)第二次實(shí)驗(yàn)配置方式的運(yùn)行總時(shí)間如圖12 所示。
在上述實(shí)驗(yàn)中對(duì)海冰模型的5 個(gè)主要求解過程的時(shí)間占用情況進(jìn)行統(tǒng)計(jì),如圖13 所示。5 個(gè)求解過程為:①海冰水平方向運(yùn)動(dòng)(Advectn;②海冰在厚度空間的運(yùn)動(dòng)(Cat Conv);③機(jī)械重分布過程(Ridging);④動(dòng)力學(xué)EVP 過程(Dynamics);⑤熱力學(xué)過程(Column)。
Fig.12 Schematic diagram of the total running time of the second experiment of“Dawning”x86 platform圖12 曙光x86 平臺(tái)第二次實(shí)驗(yàn)總運(yùn)行時(shí)間
Fig.13 Schematic diagram of the main solution process occupation time in different experiment type圖13 不同實(shí)驗(yàn)類型中主要求解過程占用時(shí)間
在上述實(shí)驗(yàn)中,掩碼的開啟很好地改進(jìn)了海冰模型性能,每種劃分方式開啟掩碼之后運(yùn)行時(shí)間都顯著降低。sectrobin(8*6)的劃分方式是所有劃分方式中效果最好的,在320 進(jìn)程時(shí)性能達(dá)到最佳,開啟掩碼前執(zhí)行時(shí)間為30.15s,開啟掩碼之后執(zhí)行時(shí)間為22.41s,性能提升了25.67%。從圖14 可以看出,開啟掩碼與不開啟掩碼相比,每個(gè)模塊的運(yùn)行時(shí)間均有降低。
Fig.14 Comparison of the occupancy time of each module between sectrobin open mask and unopen mask圖14 sectrobin 開啟掩碼與不開啟掩碼各模塊占用時(shí)間對(duì)比
在上述實(shí)驗(yàn)基礎(chǔ)上,在320 進(jìn)程下使用slenderX2 劃分方式,對(duì)海冰模型任務(wù)塊大小和任務(wù)數(shù)量進(jìn)行調(diào)優(yōu)。選擇slenderX2 的原因是每個(gè)進(jìn)程所要計(jì)算的任務(wù)塊數(shù)量隨著y維度任務(wù)塊線性減小呈線性增加趨勢(shì),具體配置方式如表3 所示。
Table 3 The third experimental configuration of“Dawning”platform表3 曙光平臺(tái)第3 次實(shí)驗(yàn)配置方式
第3 次實(shí)驗(yàn)總運(yùn)行時(shí)間如圖15 所示。
Fig.15 Schematic diagram of the total time of the third experimental experiment of the“Dawning”x86 platform圖15 曙光x86 平臺(tái)第3 次實(shí)驗(yàn)總時(shí)間
通過以上實(shí)驗(yàn)結(jié)果可以看出,每個(gè)MPI 進(jìn)程分配4 個(gè)任務(wù)塊時(shí)達(dá)到最佳性能,運(yùn)行時(shí)間為22.09s??傮w變化趨勢(shì)為:當(dāng)每個(gè)進(jìn)程分配1~4 個(gè)任務(wù)時(shí),運(yùn)行時(shí)間不斷減小,性能提升約為10.2%~16.7%。當(dāng)每個(gè)進(jìn)程分配4~32 個(gè)任務(wù)時(shí),運(yùn)行時(shí)間呈現(xiàn)不斷增加的趨勢(shì),運(yùn)行性能降低約為11.9%、31.3%、80.1%。由此可以看出,從每個(gè)進(jìn)程分配4~16 個(gè)任務(wù)塊的過程中,海冰模型的運(yùn)算效率下降,并且當(dāng)每個(gè)進(jìn)程分配32 個(gè)任務(wù)塊時(shí),運(yùn)行時(shí)間急劇提升。對(duì)于任何劃分方式,在合適的任務(wù)塊大小和計(jì)算任務(wù)分配下,通常都有一個(gè)最佳性能的分配方式。進(jìn)行第4 次測(cè)試,具體配置如表4 所示。實(shí)驗(yàn)總時(shí)間如圖16 所示。
Table 4 The fourth experimental configuration method of“Dawning”x86 platform表4 曙光x86 平臺(tái)第4 次實(shí)驗(yàn)配置方式
Fig.16 Schematic diagram of the total time of the fourth experiment of“Dawning”x86 platform圖16 曙光x86 平臺(tái)第4 次實(shí)驗(yàn)總時(shí)間
由圖16 可以看出,在進(jìn)程數(shù)較低時(shí),如16、64,即便是roundrobin 或sectrobin 的劃分方式,每個(gè)進(jìn)程分配8 個(gè)任務(wù)塊時(shí)的性能也要優(yōu)于cartesian 劃分方式下的slenderX1、slenderX2 中每個(gè)進(jìn)程分配1 個(gè)任務(wù)塊時(shí)的性能。結(jié)合roundrobin 與sectrobin 的劃分方式,分析得到此方式下進(jìn)程間具有更好的負(fù)載平衡。而在進(jìn)程數(shù)較高時(shí),比如320,進(jìn)程之間的通信也相應(yīng)增加,邊界更新時(shí)所花費(fèi)的開銷變大,此時(shí)在相同的任務(wù)數(shù)下,sectrobin 與slenderX1 劃分方式相比,依然是sectrobin 的劃分方式性能更佳,性能差別約為11%,差距逐漸縮小。因?yàn)樵谶M(jìn)程數(shù)增加的同時(shí),進(jìn)程之間的通信也在不斷增大。在320 進(jìn)程下,slenderX2 劃分方式中開啟掩碼與不開啟掩碼對(duì)比,性能提升約為26%。
本文在曙光超級(jí)計(jì)算機(jī)上對(duì)海冰模型優(yōu)化進(jìn)行了研究。在分析海冰模型計(jì)算以及網(wǎng)格劃分、任務(wù)分配、掩碼功能原理等基礎(chǔ)上,通過對(duì)海冰模型的7 種網(wǎng)格劃分方式分析,調(diào)整不同的MPI 進(jìn)程數(shù)以及海冰模型中掩碼功能的開啟等,對(duì)海冰模型性能提升進(jìn)行研究分析。通過性能調(diào)優(yōu),在曙光超級(jí)計(jì)算機(jī)上性能最大可提升8.32 倍。未來可以考慮將海冰模型移植到異構(gòu)超算平臺(tái)如CPU+GPU 架構(gòu)或“神威_太湖之光”超級(jí)計(jì)算機(jī)上,實(shí)現(xiàn)異構(gòu)并行加速。