楊曉丹,宋振亞,周 姍,劉海行,尹訓(xùn)強(qiáng)
(1.中國(guó)海洋大學(xué)海洋與大氣學(xué)院,山東青島266010;2.青島海洋科學(xué)與技術(shù)國(guó)家實(shí)驗(yàn)室區(qū)域海洋動(dòng)力學(xué)與數(shù)值模擬功能實(shí)驗(yàn)室,山東青島266237;3.國(guó)家海洋局第一海洋研究所,山東青島266061;4.英特爾亞太研發(fā)有限公司,上海200241)
MASNUM 海浪模式的代碼現(xiàn)代化優(yōu)化
楊曉丹1,2,3,宋振亞2,3*,周 姍4,劉海行2,3,尹訓(xùn)強(qiáng)2,3
(1.中國(guó)海洋大學(xué)海洋與大氣學(xué)院,山東青島266010;2.青島海洋科學(xué)與技術(shù)國(guó)家實(shí)驗(yàn)室區(qū)域海洋動(dòng)力學(xué)與數(shù)值模擬功能實(shí)驗(yàn)室,山東青島266237;3.國(guó)家海洋局第一海洋研究所,山東青島266061;4.英特爾亞太研發(fā)有限公司,上海200241)
海洋數(shù)值模式當(dāng)前已經(jīng)成為海洋研究和預(yù)測(cè)的核心工具,其高分辨率。多物理過程的發(fā)展趨勢(shì)對(duì)數(shù)值模式計(jì)算速度也提出了越來越高的要求。為了使得海洋數(shù)值模式更好的適應(yīng)計(jì)算機(jī)基礎(chǔ)架構(gòu),充分發(fā)揮現(xiàn)代化計(jì)算機(jī)體系的計(jì)算特點(diǎn),提高計(jì)算效率,本文提出了一種簡(jiǎn)單易行且有效的代碼現(xiàn)代化優(yōu)化方案,并以MASNUM海浪模式為例進(jìn)行了測(cè)試。首先利用診斷工具Intel Vtune Amplifier XE和Intel Trace Analyzer Collector,對(duì)模式的性能和負(fù)載均衡性進(jìn)行了分析;之后,針對(duì)熱點(diǎn)函數(shù),在單節(jié)點(diǎn)上制定了4個(gè)優(yōu)化步驟,包括編譯器選項(xiàng)優(yōu)化,串行和標(biāo)量?jī)?yōu)化,向量化和Open MP并行優(yōu)化。結(jié)果表明,經(jīng)過優(yōu)化后,單節(jié)點(diǎn)內(nèi)模式的計(jì)算速度可以提高1.95倍,多節(jié)點(diǎn)的模式強(qiáng)擴(kuò)展性呈線性。這表明本文提出的代碼現(xiàn)代化方案是一種行之有效的優(yōu)化方法。
Intel分析工具;代碼現(xiàn)代化優(yōu)化;海洋數(shù)值模式;海浪模式;高性能計(jì)算
海洋數(shù)值模擬是基于一定的物理定律,以電子計(jì)算機(jī)為手段,通過數(shù)值計(jì)算對(duì)特定的海洋中物理或者工程問題進(jìn)行研究的方法。海洋數(shù)值模擬的出現(xiàn)使得海洋科學(xué)成為一個(gè)可重復(fù)、可實(shí)驗(yàn)的科學(xué)。自20世紀(jì)70年代Manabe和Bryan[1]的開創(chuàng)性工作以來,隨著地球科學(xué)的發(fā)展,當(dāng)前海洋數(shù)值模擬正朝著更高分辨率、更多物理過程和更快的計(jì)算速度發(fā)展[2-4]。通常來說,分辨率每提高1倍,計(jì)算量將變?yōu)樵瓉淼?~10倍;同時(shí)隨著分辨率的提高,新的參數(shù)化方案也需要多次數(shù)值實(shí)驗(yàn)進(jìn)行調(diào)整和驗(yàn)證,這都對(duì)計(jì)算速度提出了更高的要求。充分利用現(xiàn)有計(jì)算資源提高計(jì)算效率已經(jīng)成為海洋數(shù)值模擬發(fā)展的一個(gè)必要條件。
代碼的現(xiàn)代化優(yōu)化是提高高性能數(shù)值模擬性能的一種有效途徑。它通過對(duì)高性能應(yīng)用軟件的設(shè)計(jì)進(jìn)行優(yōu)化,以充分利用和發(fā)揮現(xiàn)代計(jì)算機(jī)的高性能,如多核處理器,超線程,大緩存,高帶寬的通信結(jié)構(gòu)和高速I/O功能等。代碼現(xiàn)代化方法包括5個(gè)部分:合理使用優(yōu)化工具和庫(kù),串行和標(biāo)量?jī)?yōu)化,向量化,并行優(yōu)化,從多核應(yīng)用到眾核。這些優(yōu)化過程相互影響,共同提高應(yīng)用程序的性能[5]。
MASNUM海浪模式是20世紀(jì)90年代初海洋環(huán)境科學(xué)與數(shù)值模擬國(guó)家海洋局重點(diǎn)實(shí)驗(yàn)室與國(guó)際同步自主發(fā)展的第三代海浪數(shù)值模式。隨著高性能計(jì)算機(jī)的發(fā)展,經(jīng)過二十余年,MASNUM海浪模式也已經(jīng)從串行版本發(fā)展到MPI(Message Passing Interface)并行版本[6-7],尤其最近發(fā)展的基于非規(guī)則類矩形網(wǎng)格剖分方案的高效并行版本,具有良好的擴(kuò)展性和負(fù)載均衡性[8]。然而當(dāng)前MASNUM海浪模式的性能提高都是基于并行層面,在模式編程中未充分考慮代碼的現(xiàn)代化,如變量是否存在重復(fù)計(jì)算、多重循環(huán)的嵌套順序等。以MASNUM海浪模式作為例子,研究如何使用代碼現(xiàn)代化方法提高海洋數(shù)值模式的計(jì)算性能,非常具有代表性和必要性。
為了充分利用和發(fā)揮現(xiàn)代高性能計(jì)算機(jī)的性能,進(jìn)一步促進(jìn)海洋數(shù)值模擬的發(fā)展,本文嘗試以MASNUM海浪模式為例,提出了海洋數(shù)值模式代碼現(xiàn)代化優(yōu)化的方案,并在此基礎(chǔ)上對(duì)代碼進(jìn)行現(xiàn)代化優(yōu)化,為今后海洋環(huán)境數(shù)值模擬的研究和發(fā)展提供參考和基礎(chǔ)。
為了充分提高代碼現(xiàn)代化優(yōu)化的效果,我們?cè)O(shè)計(jì)了數(shù)值模式代碼現(xiàn)代化優(yōu)化的策略(圖1)。首先,使用Intel分析工具對(duì)數(shù)值模式的性能以及負(fù)載均衡性進(jìn)行分析;其次,針對(duì)模式存在的問題,在編譯選項(xiàng)優(yōu)化、串行和標(biāo)量?jī)?yōu)化、向量化優(yōu)化和并行優(yōu)化四個(gè)層面上制定優(yōu)化策略,以提高模式在單節(jié)點(diǎn)的性能;最后,將優(yōu)化后的模式從單節(jié)點(diǎn)擴(kuò)展到多節(jié)點(diǎn),測(cè)試和優(yōu)化其擴(kuò)展性。通過以上3個(gè)步驟的反復(fù),最大限度地達(dá)到代碼現(xiàn)代化優(yōu)化的效果。具體如圖1所示。
圖1 數(shù)值模式代碼現(xiàn)代化優(yōu)化策略Fig.1 Strategy for code optimization of numerical model
為了使得模式的優(yōu)化更有針對(duì)性,首先采用Intel分析工具對(duì)模式的計(jì)算和并行性能進(jìn)行分析,主要包括熱點(diǎn)函數(shù)分析和負(fù)載均衡分析。利用Intel Vtune Amplifier XE可以得到每個(gè)函數(shù)的計(jì)算時(shí)間,根據(jù)計(jì)算時(shí)間可以定位出熱點(diǎn)函數(shù)(模式中耗時(shí)最長(zhǎng)的函數(shù)),之后對(duì)這個(gè)熱點(diǎn)函數(shù)進(jìn)行重點(diǎn)優(yōu)化。利用Intel Trace Analyzer and Collector(ITAC)可以通過可視化界面查看程序MPI的并行計(jì)算和不同進(jìn)程間的通信情況。若模式負(fù)載不均衡,則可以通過更改模式并行方式或重新分配每個(gè)進(jìn)程的任務(wù),使其實(shí)現(xiàn)負(fù)載均衡。
在性能分析的基礎(chǔ)上,在編譯器選項(xiàng)、串行和標(biāo)量、向量化和并行優(yōu)化四個(gè)層面對(duì)模式在單節(jié)點(diǎn)內(nèi)進(jìn)行優(yōu)化。
1.2.1 編譯器選項(xiàng)
編譯器提供了不同編譯器選項(xiàng),選用合適的編譯選項(xiàng)能夠有效提高模式計(jì)算性能。在選擇編譯選項(xiàng)時(shí),為了最大限度地發(fā)揮處理器硬件的優(yōu)勢(shì),首先應(yīng)該保證指令由處理器所支持的最高指令集生成,然后在此基礎(chǔ)上再根據(jù)程序和系統(tǒng)特點(diǎn)選用其他的編譯選項(xiàng)。
1.2.2 串行和標(biāo)量?jī)?yōu)化
在對(duì)模式進(jìn)行向量化和并行化優(yōu)化等進(jìn)一步優(yōu)化前,應(yīng)該確保代碼使用最少的計(jì)算量和合適的精度獲得正確的結(jié)果,這一步的優(yōu)化稱為串行和標(biāo)量?jī)?yōu)化。減少重復(fù)性計(jì)算是其中一種優(yōu)化方法。重復(fù)計(jì)算可以從循環(huán)中移出,然后將計(jì)算的結(jié)果存儲(chǔ)到臨時(shí)的常數(shù)或矩陣中。另外,優(yōu)化方法還包括選擇適當(dāng)?shù)母↑c(diǎn)精度,避免或減少條件分支等,這需要根據(jù)代碼存在的問題進(jìn)行優(yōu)化。
1.2.3 向量化
向量化計(jì)算是一種特殊的并行計(jì)算的方式,它可以在同一時(shí)間執(zhí)行多次操作,通常是對(duì)不同的數(shù)據(jù)執(zhí)行同樣的一個(gè)或一批指令,或者說把指令應(yīng)用于一個(gè)數(shù)組/向量。向量化的處理方式是現(xiàn)代計(jì)算機(jī)的一個(gè)特點(diǎn),使用向量化能夠有效提高應(yīng)用軟件的計(jì)算性能,當(dāng)前無論硬件還是軟件上,都提供了向量化的支持。在使用編譯器編譯時(shí),通常默認(rèn)優(yōu)化選項(xiàng)中都包括了自動(dòng)向量化的功能,即若代碼沒有違反向量化的規(guī)則,那么它將被自動(dòng)向量化。但自動(dòng)向量化要求較為嚴(yán)格,如循環(huán)中有數(shù)據(jù)依賴、循環(huán)對(duì)內(nèi)存訪問不連續(xù)等情況時(shí),就會(huì)無法自動(dòng)向量化,此時(shí)需要對(duì)代碼進(jìn)行分析和修改。
1.2.4 MPI/Open MP并行化
當(dāng)前MPI和Open MP混合并行方法已經(jīng)在多個(gè)海洋和大氣環(huán)流模式中得到了應(yīng)用[9-11]。Open MP可以實(shí)現(xiàn)共享內(nèi)存層面的任務(wù)并行,它是一種簡(jiǎn)單有效的并行方式[13-14]。在使用MPI并行時(shí),隨著模式進(jìn)程數(shù)的增加,每個(gè)分區(qū)之間的數(shù)據(jù)交換量成倍增加,而使用MPI和Open MP混合并行方法,可以根據(jù)實(shí)際需要分別定義MPI進(jìn)程數(shù)和每個(gè)MPI進(jìn)程使用的Open MP線程數(shù)。這種混合并行方法通過減少進(jìn)程數(shù),可以減小進(jìn)程間通信開銷,同時(shí)打開超線程又能充分利用計(jì)算資源,使得并行結(jié)構(gòu)更加合理[15],有效提高計(jì)算效率。對(duì)于多節(jié)點(diǎn)的集群來說,MPI和Open MP的組合提供了一個(gè)有效的并行策略。
MASNUM海浪模式是基于Yuan等[16]建立的LAGFD-WAM區(qū)域海浪模式,后由楊永增等[18]發(fā)展成球坐標(biāo)系下的全球海浪波數(shù)譜模式。它在數(shù)值計(jì)算上采用了復(fù)雜特征線嵌入計(jì)算格式,該方式考慮了波能包沿特征線變化的傳播特征,其物理意義更為合理,并能夠最大限度的放寬積分時(shí)間步長(zhǎng)的限制。在物理空間和波數(shù)空間上,網(wǎng)格點(diǎn)的分布分別采用了與經(jīng)緯度線平行的梯形格點(diǎn)分布和基于極坐標(biāo)的網(wǎng)格。MASNUM海浪模式波數(shù)譜計(jì)算中主要包含傳播函數(shù)(propagate)和源函數(shù)(implsch)兩部分。在源函數(shù)(implsch)中,水平相鄰點(diǎn)之間無數(shù)據(jù)交換,只在波數(shù)空間上進(jìn)行計(jì)算,而在傳播函數(shù)(propagate)中,計(jì)算與相鄰點(diǎn)相關(guān),需進(jìn)行數(shù)據(jù)之間的交換。本研究所使用的MASNUM海浪模式版本是由趙偉等[8]發(fā)展的并行版本,該模式版本是基于Fortran90語言編寫,只使用了MPI并行方法,地理空間采用非規(guī)則類矩形網(wǎng)格劃分,保證了各分區(qū)計(jì)算量達(dá)到近絕對(duì)均衡,為了更方便的進(jìn)行進(jìn)程間數(shù)據(jù)交換,將兩維的地理空間分布轉(zhuǎn)化為一維序列。
實(shí)驗(yàn)測(cè)試環(huán)境見表1。測(cè)試平臺(tái)共有7個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)具有2顆18核心的Intel Xeon E5 2699 v3處理器,一個(gè)節(jié)點(diǎn)內(nèi)具有36個(gè)物理核心和72個(gè)邏輯核心,節(jié)點(diǎn)間通過InfiniBand QDR進(jìn)行互聯(lián)。本研究中MASNUM海浪模式的空間分辨率為0.2°×0.2°(1 800×701網(wǎng)格數(shù)),波空間中的波數(shù)和波向分別為25和12。為了保證模式計(jì)算時(shí)間不少于5 min,在單節(jié)點(diǎn)內(nèi)測(cè)試時(shí),模式積分步數(shù)為240個(gè)時(shí)間步長(zhǎng);在擴(kuò)展性測(cè)試時(shí),模式積分步數(shù)為1 680個(gè)時(shí)間步長(zhǎng)。需要說明的一點(diǎn),為了減小I/O對(duì)擴(kuò)展性的影響,本研究中的測(cè)試是針對(duì)模式計(jì)算性能的無I/O測(cè)試,文中加速性能分析時(shí)的測(cè)試時(shí)間為整個(gè)模式運(yùn)行的墻鐘時(shí)間。
表1 測(cè)試環(huán)境Table 1 Testing environment
3.1.1 負(fù)載均衡分析
首先,使用ITAC進(jìn)行了MASNUM海浪模式MPI并行的負(fù)載均衡分析。從結(jié)果來看,本研究中使用的MASNUM海浪模式版本在空間上采用非規(guī)則類矩形網(wǎng)格剖分方法,使得該模式在每個(gè)進(jìn)程分配的計(jì)算任務(wù)幾乎相同,基本達(dá)到了負(fù)載平衡(圖2),這也與趙偉等[8]的結(jié)論相一致。因此,下面的優(yōu)化將主要針對(duì)Intel VTune檢測(cè)出的熱點(diǎn)函數(shù)進(jìn)行優(yōu)化,提高其計(jì)算效率,減少其計(jì)算時(shí)間。
圖2 MASNUM海浪模式負(fù)載均衡性(單節(jié)點(diǎn)36個(gè)進(jìn)程)Fig.2 Load balance of MASNUM wave model(36 processes on a single node)
3.1.2 熱點(diǎn)函數(shù)分析
其次,采用Intel VTune進(jìn)行了MASNUM海浪模式熱點(diǎn)函數(shù)的分析。根據(jù)Intel VTune統(tǒng)計(jì)得到的模式中每個(gè)函數(shù)的計(jì)算時(shí)間(圖3),可以很容易地找到耗時(shí)最長(zhǎng)的熱點(diǎn)函數(shù)為海浪模式的源函數(shù)部分(implsch),因此本研究將重點(diǎn)對(duì)此函數(shù)進(jìn)行優(yōu)化。
為了做到優(yōu)化的準(zhǔn)確高效,需要首先分析熱點(diǎn)函數(shù)的特征。在本研究中,熱點(diǎn)函數(shù)implsch中,多個(gè)表達(dá)式在除法運(yùn)算上耗時(shí)較長(zhǎng);在循環(huán)內(nèi)存在重復(fù)計(jì)算;循環(huán)未全部成功自動(dòng)向量化;在并行方面,模式不包括Open MP并行,這可能會(huì)影響模式在集群上的擴(kuò)展性。因此,在制定單節(jié)點(diǎn)代碼現(xiàn)代化優(yōu)化策略時(shí),主要包括選擇合適的編譯器選項(xiàng)、減少重復(fù)性計(jì)算、改進(jìn)代碼結(jié)構(gòu)提高向量化比例和效率以及Open MP并行化。
圖3 單節(jié)點(diǎn)測(cè)試實(shí)驗(yàn)中MASNUM模式優(yōu)化前(紅)、后(藍(lán))函數(shù)的運(yùn)算時(shí)間Fig.3 Comparison of computation time consumed by different functions before(red)and after(blue)the MASNUM model is optimized on a single node
3.2.1 編譯器選項(xiàng)優(yōu)化
本研究所使用的處理器最高支持AVX 2指令集,因此為了最大限度地發(fā)揮處理器硬件的優(yōu)勢(shì),首先選取了“-xCORE-AVX2”作為編譯優(yōu)化選項(xiàng);同時(shí)為了優(yōu)化熱點(diǎn)函數(shù)內(nèi)的浮點(diǎn)數(shù)除法運(yùn)算,增添了編譯優(yōu)化選項(xiàng)“-noprec-div”進(jìn)行優(yōu)化。在添加此編譯器選項(xiàng)后,相對(duì)于原始性能的加速比可以達(dá)到1.59。此外,比較了使用-O3和-O2優(yōu)化選項(xiàng)后模式的計(jì)算速度,發(fā)現(xiàn)二者基本一致。因此最終選用了編譯器默認(rèn)的-O2優(yōu)化選項(xiàng)。
3.2.2 串行和標(biāo)量?jī)?yōu)化
以下是熱點(diǎn)函數(shù)中重復(fù)性計(jì)算優(yōu)化的例子:
在此循環(huán)(圖4a黃色)中,costh和sinth不隨著idx的變化而變化。因此對(duì)它們的計(jì)算可以從循環(huán)中移出,計(jì)算的結(jié)果被保存在兩個(gè)新的數(shù)組precos和presin中。然后再將這兩個(gè)數(shù)組的結(jié)果傳回到循環(huán)中進(jìn)行計(jì)算(圖4b黃色)。
串行和標(biāo)量?jī)?yōu)化后,減少重復(fù)計(jì)算使得模式計(jì)算效率比以前提高了6%。當(dāng)我們檢查由Intel Vtune生成的函數(shù)時(shí)間分布(圖3)時(shí),發(fā)現(xiàn)三角函數(shù)sin和cos的時(shí)間成本降低了93%。
圖4 重復(fù)性計(jì)算優(yōu)化前后對(duì)比Fig.4 Comparison of codes before and after the repetitive computation is reduced
3.2.3 向量化
向量化在同一時(shí)間可以將單指令應(yīng)用在多個(gè)數(shù)據(jù)上,它對(duì)提高代碼計(jì)算效率起著重要的作用。由于熱點(diǎn)函數(shù)的物理過程是非常復(fù)雜的,因此我們不能完全消除方程間的依賴關(guān)系。圖5a是循環(huán)沒有向量化成功的例子,其原因是兩個(gè)紅色表達(dá)式之間存在可能依賴關(guān)系。
圖5 向量化優(yōu)化前(a)后(b,c)對(duì)比Fig.5 Comparison of codes before(a)and after(b,c)optimization of vectorization
在k方向的循環(huán),方程之間沒有依賴性,然而,向量化只能對(duì)最內(nèi)層循環(huán)起作用。為了使向量化成功,我們交換了mr,j,k三重循環(huán)的循環(huán)順序(圖5a和5b黃色)。此外,如果內(nèi)存訪問不連續(xù)時(shí),數(shù)據(jù)的讀取耗時(shí)較長(zhǎng),因此向量化一般情況無法實(shí)現(xiàn)或者效果不好。在FORTRAN語言中,數(shù)組元素的讀取順序是列優(yōu)先。由于數(shù)組wp的訪問已經(jīng)是連續(xù)的,因此可以進(jìn)行有效的向量化。
通過查看向量化報(bào)告,我們發(fā)現(xiàn)在不同的行,se變量互相存在依賴性,因?yàn)橥ㄟ^計(jì)算得出的j11和j12可能是同一個(gè)值。一種解決方案是將具有依賴性的部分從循環(huán)中移出。我們通過將內(nèi)循環(huán)拆分成兩部分后(圖5b和5c紅色),發(fā)現(xiàn)不存在依賴性的部分可以成功地向量化,從優(yōu)化報(bào)告中也可以看出這一點(diǎn)。
將熱點(diǎn)函數(shù)中可以向量化的部分成功向量化后,模式顯示加速比為1.07倍。如果向量化指令變得更寬,比如最新的Intel Xeon Phi支持512位SIMD,向量化后模式性能提升的效果可能會(huì)更明顯。
3.2.4 Open MP并行
MASNUM海浪模式中熱點(diǎn)函數(shù)的最外層循環(huán)是空間維度的循環(huán),本研究中使用的空間維度已由二維變成一維,使其外層循環(huán)次數(shù)可以達(dá)到25 662,因此Open MP對(duì)其性能提高應(yīng)是非常有效的。圖6為MASNUM海浪模式MPI和Open MP的擴(kuò)展性。從中可以看出,在單節(jié)點(diǎn)內(nèi)MPI的擴(kuò)展性非常好,加速比從2到36個(gè)進(jìn)程幾乎呈線性變化(圖6紅線)。Open MP的擴(kuò)展性,當(dāng)線程數(shù)小于18時(shí)也較好,之后存在一定的下降(圖6藍(lán)線)。通過測(cè)試發(fā)現(xiàn),當(dāng)進(jìn)程數(shù)乘以線程數(shù)為72,即用滿單節(jié)點(diǎn)內(nèi)的邏輯核時(shí),計(jì)算效率最高。使用36個(gè)進(jìn)程并打開Open MP超線程,使得海浪模式的性能相對(duì)純MPI 36個(gè)進(jìn)程的性能可提升8%。
由于我們只在熱點(diǎn)函數(shù)中增加了Open MP并行,因此無法給出該模式混合并行的最佳性能。然而,僅在熱點(diǎn)函數(shù)中增加Open MP并行也使得模式性能得到了明顯的改善,這說明了Open MP是簡(jiǎn)單且非常有效的并行方式。
圖6 單節(jié)點(diǎn)內(nèi)MPI擴(kuò)展性和一個(gè)進(jìn)程內(nèi)Open MP的擴(kuò)展性Fig.6 MPI scalability on single node and Open MP scalability in one process
圖7顯示了模式在單節(jié)點(diǎn)每一步優(yōu)化后的性能改進(jìn),除Open MP優(yōu)化后使用36個(gè)進(jìn)程2個(gè)線程之外,其余過程均只使用36個(gè)MPI進(jìn)程。在針對(duì)熱點(diǎn)函數(shù)implsch進(jìn)行了4個(gè)階段的優(yōu)化后,加速比可以達(dá)到1.95,大大降低了整體運(yùn)算時(shí)間。其中,熱點(diǎn)函數(shù)implsch的計(jì)算時(shí)間由219 s減少到87.86 s(圖3),加速比可達(dá)到2.49倍。需要說明的是,圖7中的加速比性能分析是基于整個(gè)模式運(yùn)行的時(shí)間進(jìn)行比較的,因此加速比性能(1.95倍)相對(duì)熱點(diǎn)函數(shù)加速性能(2.49倍)稍低。這說明Intel Vtune Amplifier對(duì)熱點(diǎn)函數(shù)的分析是準(zhǔn)確的,同時(shí)我們使用的優(yōu)化策略也是非常有效的。經(jīng)過優(yōu)化后,模式包含3種不同級(jí)別的并行化方式:向量化,Open MP和MPI,這也是現(xiàn)代化代碼的共同特點(diǎn)。
圖7 模式在單節(jié)點(diǎn)內(nèi)的優(yōu)化性能Fig.7 Performance of the optimized model on single node
圖8給出了海浪模式優(yōu)化前后在多個(gè)節(jié)點(diǎn)上的加速比,與單節(jié)點(diǎn)一致,除Open MP優(yōu)化后每個(gè)節(jié)點(diǎn)使用36個(gè)進(jìn)程2個(gè)線程之外,其余過程均只使用36個(gè)MPI進(jìn)程。從圖中可以看出,模式加速比隨著核心數(shù)目的增加,呈線性增長(zhǎng)趨勢(shì)。252個(gè)進(jìn)程相對(duì)于6個(gè)進(jìn)程的理論加速比為42,在經(jīng)過原始性能優(yōu)化、編譯器選項(xiàng)優(yōu)化、串行和常量?jī)?yōu)化、向量化優(yōu)化以及Open MP優(yōu)化后,252個(gè)進(jìn)程相對(duì)于6個(gè)進(jìn)程實(shí)際加速比分別可以達(dá)到31.9,29.3,29.3,28.2和29.8。在對(duì)模式進(jìn)行了優(yōu)化后,加速比略有下降,原因可能是由于所使用的進(jìn)程數(shù)并未減少,進(jìn)程間數(shù)據(jù)交換的耗時(shí)是固定的,因此計(jì)算時(shí)間所占的比例相對(duì)于各自原始代碼偏少。從而代碼優(yōu)化的越好,其計(jì)算時(shí)間所占的比例越少,而隨著進(jìn)程數(shù)的增加,數(shù)據(jù)交換所占的時(shí)間越多,使得模式的加速比相對(duì)于原始性能略有降低。
圖8 模式優(yōu)化前后在多節(jié)點(diǎn)上的擴(kuò)展性Fig.8 Scalability of the numerical model before and after optimization on multi nodes
增加Open MP并行后,通過測(cè)試,發(fā)現(xiàn)當(dāng)每個(gè)節(jié)點(diǎn)內(nèi)MPI進(jìn)程數(shù)為36,Open MP線程數(shù)為2時(shí),模式性能達(dá)到最優(yōu)。通過模式原始性能可以看出,由于測(cè)試規(guī)模較小,模式的擴(kuò)展性并未遇到瓶頸,因此,超線程對(duì)擴(kuò)展性的提高作用未能發(fā)揮出來。又由于每個(gè)節(jié)點(diǎn)內(nèi)MPI的擴(kuò)展性好于Open MP(圖6),所以當(dāng)MPI的進(jìn)程數(shù)達(dá)到36時(shí)模式整體性能最好。當(dāng)測(cè)試規(guī)模達(dá)到十萬甚至百萬核心時(shí),模式性能會(huì)存在一定的下降[6],此時(shí)利用MPI和Open MP混合并行方式,通過減少進(jìn)程數(shù),增加線程數(shù),將有利于提高模式的擴(kuò)展性,這將在今后的工作中進(jìn)行測(cè)試和分析。
在本文中,首先提出了海洋數(shù)值模式代碼現(xiàn)代化優(yōu)化的策略和方案,然后以MASNUM海浪模式為例,對(duì)該模式進(jìn)行了代碼現(xiàn)代化優(yōu)化。結(jié)果表明,通過對(duì)熱點(diǎn)函數(shù)源函數(shù)部分(implsch)不同層面的優(yōu)化,能夠大幅提高M(jìn)ASNUM海浪模式的計(jì)算效率。編譯器選項(xiàng)可使得模式計(jì)算速度提高近1.59倍;串行和標(biāo)量?jī)?yōu)化,如減少重復(fù)計(jì)算,使得計(jì)算性能提高了近6%;深入的向量化優(yōu)化,使其滿足Intel編譯器自動(dòng)向量化的規(guī)則,模式的計(jì)算速度可提高1.07倍;基于Open MP并行的改進(jìn),使得模式性能提高約8%。經(jīng)過以上4個(gè)步驟的優(yōu)化,相對(duì)于原模式,在單節(jié)點(diǎn)內(nèi)可以提高計(jì)算性能提高1.95倍,節(jié)省了近50%的計(jì)算資源,同時(shí)模式在多個(gè)節(jié)點(diǎn)內(nèi)的擴(kuò)展性也呈線性。值得注意的是,隨著對(duì)源函數(shù)優(yōu)化的深入和節(jié)點(diǎn)數(shù)的增多,模式的熱點(diǎn)函數(shù)也許會(huì)發(fā)生變化,在進(jìn)一步大規(guī)模并行時(shí)需要按照優(yōu)化步驟重新進(jìn)行分析和優(yōu)化。同時(shí),研究結(jié)果也表明本研究提出的代碼現(xiàn)代化方案是行之有效的,這對(duì)其它海洋數(shù)值模式的計(jì)算性能優(yōu)化具有非常好的借鑒作用。
在MASNUM海浪模式代碼現(xiàn)代化優(yōu)化實(shí)驗(yàn)中,由于測(cè)試平臺(tái)的限制,只進(jìn)行了MPI/Open MP混合并行方案的并行優(yōu)化。需要說明的是本研究提出的代碼現(xiàn)代化方案應(yīng)該也適用于當(dāng)前的異構(gòu)集群,如GPU集群或眾核集群等。從文中分析可以看到,源函數(shù)是計(jì)算量最大的熱點(diǎn)函數(shù),而其在計(jì)算中無相鄰數(shù)據(jù)交換的特點(diǎn)非常適合GPU或者M(jìn)IC等協(xié)處理器。因此,下一步還將基于Intel Xeon Phi的架構(gòu),將MASNUM海浪模式的熱點(diǎn)函數(shù)移植到協(xié)處理器上提高計(jì)算效率,進(jìn)一步檢驗(yàn)本文提出的代碼現(xiàn)代化優(yōu)化方案。
此外,當(dāng)前針對(duì)各種計(jì)算程序所做的優(yōu)化大多都是圍繞內(nèi)存訪問效率來進(jìn)行的,本文提出的代碼現(xiàn)代化優(yōu)化方案是一種相對(duì)簡(jiǎn)單、易行的優(yōu)化策略,較為容易實(shí)現(xiàn),總體的性價(jià)比較高。也正是由于其相對(duì)簡(jiǎn)單易行,因此經(jīng)過優(yōu)化后內(nèi)存訪問效率還有可提高的空間,如修改模式計(jì)算流程和計(jì)算負(fù)載均衡控制,使其可以充分利用進(jìn)程與超線程間的關(guān)系,但這些修改會(huì)較為復(fù)雜,對(duì)于普通模式研發(fā)人員來說,會(huì)較難實(shí)現(xiàn)。因此,本文提出的優(yōu)化方案和實(shí)驗(yàn)未涉及這些深入的研究。
[1] MANABE S,BRYAN K.Climate Calculation with a combined ocean-atmosphere model[J].Journal of Atmospheric Sciences,1969,26(4):786-789.
[2] LU J,LIU X H,TENG Y,et al.Theoretical basics of a systematic ecology-sediment-environment dynamical numerical model for coastal areas[J].Advance in Marine Science,2015,33(4):471-483.蘆靜,劉學(xué)海,滕涌,等.近海系統(tǒng)化生態(tài)-沉積-環(huán)境動(dòng)力學(xué)數(shù)值模式——理論基礎(chǔ)[J].海洋科學(xué)進(jìn)展,2015,33(4):471-483.
[3] GAO X M,WEI Z X,LV X Q,et al.Accuracy assessment of global ocean tide models in the South China Sea[J].Advance in Marine Science,2014,32(1):1-14.高秀敏,魏澤勛,呂咸青,等.全球大洋潮汐模式在南海的準(zhǔn)確度評(píng)估[J].海洋科學(xué)進(jìn)展,2014,32(1):1-14.
[4] CUBASCH U,WUEBBLES D,CHEN D,et al.Introduction.In:climate change 2013:in the physical science basis,working group I contribution to the fifth assessment report of the intergovernmental panel on climate change,WMO/UNEP[M].United Kingdom and New York:Cambridge University Press,2013.
[5] PEARCE M.What is code modernization?[EB/OL].(2015-07)[2016-09-01]https:∥software.intel.com/en-us/articles/what-is-codemodernization.
[6] WANG G S,QIAO F L,YANG Y Z.Study on parallel algorithm for m PI-based LAGFD-WAM numerical wave model[J].Advance in Marine Science,2007,25(4):401-407.王關(guān)鎖,喬方利,楊永增.基于MPI的LAGFD-WAM海浪數(shù)值模式并行算法研究[J].海洋科學(xué)進(jìn)展,2007,25(4):401-407.
[7] ZHANG Z Y,ZHOU Y F,LIU L,et al.Performance characterization and efficient parallelization of MASNUM Wave Model[J].Journal of Computer Research and Development,2015,52(4):851-860.張志遠(yuǎn),周宇峰,劉利,等.MASNUM海浪模式的性能特點(diǎn)分析與并行優(yōu)化[J].計(jì)算機(jī)研究與發(fā)展,2015,52(4):851-860.
[8] ZHAO W,SONG Z Y,QIAO F L,et al.High efficient parallel numerical surface wave model based on an irregular quasi-rectangular domain decomposition scheme[J].Science China:Earth Sciences,2014,44(5):1049-1058.趙偉,宋振亞,喬方利,等.基于非規(guī)則類矩形剖分的高效并行海浪數(shù)值模式[J].中國(guó)科學(xué):地球科學(xué),2014,44(5):1049-1058.
[9] SMITH R,DAKOWICZ J,MALONE R.Parallel ocean general circulation modeling[J].Physica D-nonlinear Phenomena,1992,60:38-61.
[10] STEVENS B,GIORGETTA M,ESCH M,et al.Atmospheric component of the MPI-M Earth System Model:ECHAM6[J].Journal of Advances in Modeling Earth Systems,2013,5(2):146-172.
[11] SANNINO G,ARTALE V,LANUCARA P.A hybrid Open MP-MPI parallelization of the Princeton Ocean Model[EB/OL].[2016-09-01]http:∥www.utmea.enea.it/staff/sannino/Papers/ParCo/ParCoPOM.pdf.
[12] COLLINS W D,RASCH P J,BOVILLE B A,et al.Description of the NCAR community atmosphere model(CAM 3.0)[J].National Center for Atmospheric Research Ncar Koha Opencat,2004:tn-464+str(TN-485+STR).
[13] EPICOCO I,MOCAVERO S,ALOISIO G.The NEMO oceanic model:computational performance analysis and optimization[C]∥IEEE International Conference on High PERFORMANCE Computing&Communication,Canada:HPCC,2011:382-388.
[14] ZHANG X,JI Z Z,WANG B.Some study on application of Open MP in mesoscale meteorological model-MM5[J].Climatic and Environmental Research,2001,6(1):84-90.張昕,季仲貞,王斌.Open MP在MM5中尺度模式中的應(yīng)用試驗(yàn)[J].氣候與環(huán)境研究,2001,6(1):84-90.
[15] SU M F,EL-KADY I,BADER D A,et al.A Novel FDTD Application Featuring Open MP-MPI hybrid parallelization[EB/OL].[2016-09-01]http:∥www.cc.gatech.edu/fac/bader/papers/FDTD-ICPP2004.pdf.
[16] YUAN Y,HUA F,PAN Z,et al.LAGFD-WAM numerical wave model I.Basic physical model[J].Acta Oceanologica Sinica,1991,10(4):483-488.
[17] YANG Y Z,QIAO F L,ZHAO W,et al.MASNUM ocean wave numerical model in spherical coordinates and its application[J].Haiyang Xuebao,2005(2):1-7.楊永增,喬方利,趙偉,等.球坐標(biāo)系下MASNUM海浪數(shù)值模式的建立及其應(yīng)用[J].海洋學(xué)報(bào),2005(2):1-7.
Code Modernization Optimization of MASNUM Wave Model
YANG Xiao-dan1,2,3,SONG Zhen-ya2,3,ZHOU Shan4,LIU Hai-xing2,3,YIN Xun-qiang2,3
(1.College of Oceanic and Atmospheric Sciences,Ocean University of China,Qingdao 266010,China;2.Laboratory for Regional Oceanography and Numerical Modeling,Qingdao National Laboratory for Marine Science and Technology,Qingdao 266237,China;3.The First Institute of Oceanography,SOA,Qingdao 266061,China;4.Asia-Pacific Research&Development Ltd,Intel,Shanghai 200241,China)
Numerical model has become one of key tools for ocean research and prediction,and the demand for increasing the computational efficiency is now necessary and urgent.In order to make full use of the modern computer architecture and improve ocean model's computational efficiency,a code optimization scheme,which is demonstrated by using MASNUM wave model as an example,was proposed in this paper.Firstly,Intel Vtune Amplifier XE and Intel Trace Analyzer Collector were used to evaluate the performance and load balancing of the MASNUM wave model.Then four steps of optimization,which are compiler options,serial and scalar optimization,vectorization,and MPI/Open MP parallelization,are designed for hotspot function located by Intel Vtune Amplifier XE.The result shows that after optimization,the computational speed can be improved up to 1.95 times in a single node,and strong-scalability of the model is almost linear when computation is extended to multi nodes,suggesting that our code optimization is very effective.
Intel analysis tools;code optimization;oceanic numerical model;surface wave model;high performance computation
October 17,2016
P73
A
1671-6647(2017)04-0473-10
10.3969/j.issn.1671-6647.2017.04.004
2016-10-17
國(guó)家重點(diǎn)研發(fā)計(jì)劃——大規(guī)模多模式多過程地球系統(tǒng)模式耦合平臺(tái)研發(fā)(2016YFA0602200);中央級(jí)公益性科研院所基本科研業(yè)務(wù)費(fèi)專項(xiàng)——束星北青年學(xué)者基金(2016S03);青島海洋科學(xué)與技術(shù)國(guó)家實(shí)驗(yàn)室鰲山人才計(jì)劃——優(yōu)秀青年學(xué)者專項(xiàng);國(guó)家自然科學(xué)基金委員會(huì)-山東省人民政府聯(lián)合資助海洋科學(xué)研究中心項(xiàng)目——海洋環(huán)境動(dòng)力學(xué)和數(shù)值模擬(U1406404);全球變化與海氣相互作用專項(xiàng)——海洋動(dòng)力系統(tǒng)可預(yù)報(bào)性研究(GASI-IPOVAI-06)
楊曉丹(1988-),女,山東聊城人,博士研究生,主要從事海-氣相互作用方面研究.E-mail:yangxiaodan@fio.org.cn
*通訊作者:宋振亞(1982-),男,山東聊城人,副研究員,博士,主要從事海氣耦合方面研究.E-mail:songroy@fio.org.cn
(李 燕 編輯)