顧文靜 李 娟 張新諾
(國家氣象信息中心高性能計算室 北京 100081)
隨著氣象業(yè)務的快速發(fā)展,中國氣象局業(yè)務模式已經蘊含了天氣、氣候、人工影響天氣和公共服務模式等四個主要部分。其中天氣模式包含GRAPES集合預報、GRAPES全球預報、臺風和海浪預報,以及核應急模式和睿圖-STv2.0系統(tǒng)等;氣候模式包含月動力延伸預測、季節(jié)氣候預測、大氣污染潛勢氣候預測、東亞重要環(huán)流型預測和厄爾尼諾/拉尼娜監(jiān)測診斷預測等;人工影響天氣模式包含CPEFS和GRAPES_CAMS;公共服務模式包含全國風能太陽能預報、近海海上預報和RMAPS_Wind系統(tǒng)等。
2018年4月,中國氣象局派-曙光高性能計算機系統(tǒng)正式提供給用戶使用,派-曙光高性能高性能計算機系統(tǒng)分為兩個子系統(tǒng)(業(yè)務和科研),每個子系統(tǒng)計算性能4 004.25 TFLOPS,存儲物理容量23 088 TB。2019年8月,氣象業(yè)務模式基本完成移植工作,派-曙光系統(tǒng)資源使用量隨之增長,業(yè)務子系統(tǒng)CPU使用率超過60%,科研子系統(tǒng)CPU使用率高達80%,存儲資源使用率近70%。如此規(guī)模的高性能計算機系統(tǒng)上線僅一年,資源使用量約三分之二,業(yè)務應用的運行特征分析變得至關重要。建立應用軟件的運行特征是對業(yè)務模式分析的最有效手段。
GRAPES_GFS系統(tǒng)的核心部分是模式動力框架和物理過程,是一類非常具有典型性的科學計算類應用;整個過程不僅涉及密集的計算,同時伴隨大量的網絡操作,應用運行特征復雜。GRAPES_GFS是目前發(fā)展較為完善的業(yè)務模式,本文將以該模式作為分析對象,從資源使用情況和運行特征進行分析并提出優(yōu)化建議。
隨著時間的變化,在特定的負載環(huán)境和特定的測試方法下,對業(yè)務模式運行時硬件各類資源的消耗情況即為該應用運行特征。采用一種應用運行特征的快速分析架構,從系統(tǒng)級、應用級和微架構級綜合出發(fā),應用Paramon和Paratune軟件采集真實、準確的性能指標數(shù)據(jù),憑借這些指標數(shù)據(jù)完整呈現(xiàn)應用程序的基本運行特征[1]。
系統(tǒng)級的指標考慮CPU、內存和磁盤網絡共計9種特征指標。其中:CPU%為CPU總利用率,衡量CPU資源的使用情況,CPU SYS %為CPU系統(tǒng)開銷利用率,衡量CPU資源中系統(tǒng)開銷的比例,二者反映出當前應用在CPU資源上的運行特征,Memory%為內存利用率,對應用程序的性能影響很大,MemBW(GB/s)為內存帶寬,連接CPU與內存之間的橋梁,決定了內存數(shù)據(jù)訪問的速度,SWAP%為交換分區(qū)利用率,在物理內存用盡后,將磁盤空間虛擬成內存來使用,應用程序在用盡內存后,使用SWAP分區(qū)后,應用程序的性能一定會降低,三者可以反映出當前應用在內存資源上的運行特征,Disk Read(MB/s)為磁盤讀速率(磁盤讀帶寬),Disk Write (MB/s)為磁盤寫速率(磁盤寫帶寬),IB Send (MB/s)為IB網發(fā)送速率,IB Recv (MB/s)為IB網接收速率,派-曙光系統(tǒng)InfiniBand網絡雙向100 GB/s,四者衡量應用在磁盤和網絡上的運行特征標準為速率,即磁盤讀寫速率以及網絡收發(fā)速率[1]。
微架構級指標考慮浮點計算、向量化比例、指令執(zhí)行效率等5類特征指數(shù)。其中GFLOPS的峰值與節(jié)點CPU主頻和核數(shù)有關,派-曙光系統(tǒng)每個計算節(jié)點包含2個Intel Xeon Gold 6142處理器,每個處理器主頻2.6 GHz,浮點運算2 662.4 GFLOPS。VEC%和AVX%為向量化比例,實現(xiàn)單指令流多數(shù)據(jù)流SIMD,向量化是CPU峰值計算的倍數(shù)因子,對應用程序性能影響很大,向量化指令需要根據(jù)應用的邏輯,取值范圍為0%~100%。CPI(Cycles Per Instruction)表示每條指令平均時鐘周期數(shù)。GIPS為單位時間內的指令總數(shù),統(tǒng)計每秒鐘執(zhí)行的指令總數(shù)。CPI越小或GIPS越高,表示指令執(zhí)行效率越高。LLCM%為Cache Miss的百分比,在Cache 內存和物理盤中Cache是CPU讀寫速度最快的,Cache miss表示CPU在Cache中找不到需要讀取的頁。Cache miss會導致CPU花費更多的時間在查找和讀取以及內存替換上,降低了CPU的性能[1]。
全球區(qū)域一體化同化預報系統(tǒng)GRAPES(Global/Regional Assimilation and Prediction System)是在科學技術部和中國氣象局支持下我國自主研發(fā)的數(shù)值預報系統(tǒng),該系統(tǒng)是氣象與氣候研究的基礎和核心。在“十一五”科技支撐計劃的支持下建立了GRAPES全球同化預報系統(tǒng)試驗版,2007年面向業(yè)務應用,開始系統(tǒng)的建設和優(yōu)化全球數(shù)值預報系統(tǒng)GRAPES_GFS(GEAPES Global Forecast System)[2]。
隨著多核計算技術的發(fā)展,基于多核處理器的集群系統(tǒng)逐漸成為主流架構,為了滿足GRAPES計算和時效需求,研發(fā)部門對GRAPES全球模式進行MPI與OpenMP混合并行方案設計和優(yōu)化。2018年至2019年GRAPES_GFS由IBM系統(tǒng)遷移到派-曙光系統(tǒng)上,同化方面實現(xiàn)了從三維變分(3DVar)到四維變分(4DVar)的改進,四維變分(4DVar)實現(xiàn)了高低分辨率內外循環(huán)、多重外循環(huán)和高低分辨率之間的插值精度,優(yōu)化線性化物理過程使之發(fā)揮作用,有效使用衛(wèi)星等多時次連續(xù)觀測資料,優(yōu)化計算效率,保障業(yè)務運行的時效[2]。
目前,GRAPES_GFS_V2.4正式業(yè)務運行,每天運行四個時次,分別是世界標準時00時次(03:40UTC)、06時次(09:40UTC)、12時次(15:40UTC)和18時次(21:40UTC),業(yè)務系統(tǒng)包含數(shù)據(jù)檢索及處理、臺風渦旋初始化、同化處理、模式積分、數(shù)據(jù)后處理和數(shù)據(jù)備份等模塊,其中同化內外循環(huán)(4DVar)和模式積分(fcst)是GRAPES_GFS主要的并行應用模塊,本文以此為研究對象進行并行應用特征分析。
(1) 算例描述和運行環(huán)境。當GRAPES_GFS模式在曙光高性能計算機系統(tǒng)上運行時,收集整個過程的應用運行數(shù)據(jù),然后對性能指標數(shù)據(jù)進行分析。
4DVar使用0.25°/1.0°(外循環(huán)/內循環(huán))分辨率算例。模式積分(fcst)使用0.25°算例。00時次和12時次預報240小時,06時次和18時次預報120小時,前120小時3小時輸出一次模式面變量modvar,后120小時6小時輸出一次modvar。4DVar模塊使用1 024進程,fcst模塊使用4 096進程。
運行環(huán)境是中國氣象局派-曙光高性能計算系統(tǒng)。操作系統(tǒng)是Red Hat Enterprise Linux Server release 7.4,配置2路32核Intel Xeon Gold處理器,浮點運算能力為2 662.4 GFLOPS、12通路DDR4 2666的內存(192 GB/384 GB)和雙向100 GB/s 的InfiniBand 網絡。
(2) 運行特征指標分析。對GRAPES_GFS同化內外循環(huán)(4DVar)模塊和模式積分(fcst)的各類指標情況匯總如表1和表2所示。
表1 GRAPES_GFS系統(tǒng)級性能指標表
表2 GRAPES_GFS微架構性能指標表
CPU使用效率接近100%,系統(tǒng)開銷比例較小,因此CPU絕大部分時間在處理用戶程序,說明GRAPES_GFS是計算密集型的應用程序;LLCM%在60%左右,一定程度上影響了CPU性能。
Gflops%和VEC%值偏低,說明浮點計算運算效率偏低,沒有充分利用CPU浮點計算部件。AVX%峰值基本為0%,派-曙光系統(tǒng)支持AVX指令,可以通過向量化提高程序性能。CPI方面,4DVar優(yōu)于fcst模塊,但指令執(zhí)行效率仍有待提升。
整個計算過程持續(xù)有網絡數(shù)據(jù)的收發(fā),數(shù)據(jù)收發(fā)是通過派-曙光系統(tǒng)InfiniBand網絡完成的,通信傳輸率方面,二者均達到500 MB/s以上,但相較派-曙光系統(tǒng)100 GB/s網絡帶寬,仍有可優(yōu)化空間。
內存使用量僅為峰值的1/3~1/2,說明當前計算規(guī)模下,每個進程的邏輯計算較少。4DVar模塊使用虛擬內存(SWAP%),會影響應用性能。
(3) F/M和F/C分析。除直接獲取的特征數(shù)據(jù)外,也可以通過計算獲得一些指標數(shù)據(jù),如F/M、F/C等。F/M,即GFLOPS與Memory BandWidth的比值,每字節(jié)內存讀寫操作對應的浮點計算能力,可以精確定位應用是否為內存帶寬敏感型應用;F/C,即GFLOPS與網絡通信的比值,每字節(jié)網絡操作對應的浮點計算操作,可以精確定位應用是否為網絡帶寬敏感型應用。其他比值操作類似。
通過這些性能指標提供的數(shù)據(jù),詳細了解應用程序在運行過程中對各類節(jié)點上處理器、內存、網絡和存儲的依賴情況,快速地建立應用的運行特征[3-4]。
通過收集到的定量數(shù)據(jù)可知,4DVar和fcst模塊的F/M和F/C數(shù)值如表3所示,F(xiàn)/M、F/C的結果越小表示對CPU之外的系統(tǒng)資源的依賴越明顯。
表3 F/M和F/C數(shù)值表
(4) 運行特征圖分析。GRAPES_GFS模式4DVar和fcst模塊運行特征如圖1和圖2所示?;胤鸥鱾€指標的任意歷史時段的瞬時信息,CPU、內存利用率在運行過程中平穩(wěn),各進程間運行特征相似,運行過程階段性強。各進程間運行特征有細微差別,說明負載比較均衡。
圖1 4DVar運行特征
圖2 fcst運行特征
應用Intel itac工具收集GRAPES_GFS運行中邏輯處理函數(shù)和通信函數(shù)信息,并用Intel VTune分析各通信函數(shù)中計算執(zhí)行效率較低和CPU等待時間(Spin Time)較長的邏輯熱點。Spin Time是CPU busy的等待時間,當同步API導致CPU輪詢,而軟件線程正在等待時,通常會發(fā)生這種情況。由于實驗資源有限,本文僅以GRAPES_GFS的fcst模塊為分析對象,計算規(guī)模選擇512進程,函數(shù)各進程數(shù)據(jù)分析如下。
(1) 通信函數(shù)分析。根據(jù) itac采集數(shù)據(jù),fcst模塊邏輯處理時間占比為58%,MPI通信時間占比42%。MPI通信中以MPI_Sendrecv、MPI_Allreduce操作居多(見圖3),涉及全局范圍的同步操作。
圖3 各熱點函數(shù)耗時比例
對通信函數(shù)各進程耗時的統(tǒng)計結果如圖4所示。① MPI通信函數(shù)MPI_Sendrecv、MPI_Allreduce占比最高。② MPI_Sendrecv函數(shù)0-18進程段的計算耗時明顯偏低,其他進程段通信函數(shù)耗時呈現(xiàn)波浪狀周期性變化,波動約15%,負載均衡需要微調。③ 其他通信函數(shù)各進程周期性波動較小。
圖4 fcst各進程間通信函數(shù)耗時變化
(2) 邏輯熱點分析。根據(jù)VTune采集數(shù)據(jù),MPI_Sendrecv通信函數(shù)中Spin Time最長的邏輯熱點主要集中在module_model_parallel_mp_glob_Updatehalo,占比達24.6%。分析結果如圖5所示,其中多個數(shù)組元素更新操作,操作熱點分散,條件判斷操作居多,計算過程中基本為內存訪問,訪存方式為連續(xù)和跨步訪存,導致Spin Time時間較多,對應用程序性能和可伸縮性產生負面影響。
圖5 熱點函數(shù)分析
MPI_Allreduce函數(shù)的計算效率較低的程序邏輯熱點主要集中在module_gcr_mp_psolve_gcr_main,psolve_gcr_main調用的matrixpro函數(shù)源碼如下,該函數(shù)循環(huán)邏輯復雜,編譯器未能進行向量化。
DO j=jbegin,jend
DO k=kts,kte
DO i=ibegin,iend
c(i,k,j) = &+
a(1,i,k,j)*b(i,k,j) &+
a(2,i,k,j)*b(i-1,k,j) &+
a(3,i,k,j)*b(i+1,k,j) &+
a(4,i,k,j)*b(i,k,j-1) &+
a(5,i,k,j)*b(i,k,j+1) &+
a(6,i,k,j)*b(i+1,k,j+1) &+
a(7,i,k,j)*b(i+1,k,j-1) &+
a(8,i,k,j)*b(i-1,k,j-1) &+
a(9,i,k,j)*b(i-1,k,j+1) &+
a(10,i,k,j)*b(i,k-1,j) &+
a(11,i,k,j)*b(i-1,k-1,j) &+
a(12,i,k,j)*b(i+1,k-1,j) &+
a(13,i,k,j)*b(i,k-1,j-1) &+
a(14,i,k,j)*b(i,k-1,j+1) &+
a(15,i,k,j)*b(i,k+1,j) &+
a(16,i,k,j)*b(i-1,k+1,j) &+
a(17,i,k,j)*b(i,k+1,j-1) &+
a(18,i,k,j)*b(i,k+1,j-1) &+
a(19,i,k,j)*b(i,k+1,j+1)+
END DO
END DO
END DO
不同進程下運行狀況比較可以測試應用的可擴展性,根據(jù)各項特征指標變化趨勢選擇最適合計算的規(guī)模,提供模式業(yè)務化運行。
(1) 4DVar模塊。同化分高低分辨率的內外循環(huán),目前低分辨率的格點數(shù)少,分辨率使用0.1°算例,因此計算規(guī)模選擇512、1 024和2 048進程測試。性能指標如表4所示,隨著計算規(guī)模的增加,CPU和內存利用率逐漸減少,在進程規(guī)模較大時,內存使用率偏低,每個進程的邏輯計算減少,說明在同等計算規(guī)模下,可以適當?shù)丶哟笏憷?guī)模,進行更大問題的計算;通信方面,計算期間無密集通信時間顯著增加(圖6),網絡通信速率(IB Send和IB Recv)在1 024進程時達最大值。微架構方面,各規(guī)模差異不大。各項指標均衡考量,1 024進程的規(guī)模比較適合4DVar模塊。
表4 不同進程4DVar模塊性能指標表
圖6 4DVar不同規(guī)模應用運行特征示例圖
(2) fcst模塊。fcst模塊使用0.25°算例,分辨率較高,故選擇1 024、2 048、4 096和8 192四種規(guī)模進行比較測試,結果顯示fcst模塊相對4DVar模塊具有較好的可擴展性。性能指標如表5所示,隨著計算規(guī)模的增加,CPU和內存利用率較為平穩(wěn);通信方面,運行特征圖(圖7)顯示,隨著進程數(shù)的增多,粒度變小,計算期間密集通信程度減弱,相較4DVar模塊,無密集通信網絡時間減少不明顯;通信速率(IB Send和IB Recv)隨進程增加呈增長趨勢,到4 096進程后銳減;內存使用率均偏低,未飽和,且與計算規(guī)模關聯(lián)較小;微架構級指標方面,8 192規(guī)模浮點計算能力降低,向量化比例和代碼執(zhí)行效率增加,Cache miss對CPU性能影響降低。綜合各項指標,4 096進程的規(guī)模優(yōu)勢明顯。
表5 不同進程fcst模塊性能指標表
圖7 fcst不同規(guī)模應用運行特征示例圖
通過對應用特征和函數(shù)級分析,GRAPES_GFS模式CPU%比例較高,屬于計算密集性應用。Cache miss比例高,一定程度上影響CPU性能。F/M、F/C值偏小,內存帶寬和網絡通信依賴明顯。浮點計算運算效率和向量化比例偏低,指令執(zhí)行效率不高。MPI通信負載比較均衡。MPI_Sendrecv、MPI_Allreduce等函數(shù)耗時較多。
代碼優(yōu)化是自上而下的,從系統(tǒng)到應用再到處理器,可以通過串行和標量、并行化、內存訪問,以及向量化幾個方面優(yōu)化。
進行向量化優(yōu)化。從應用特征的向量化指標值(VEC,AVX)可以看出應用程序在該算例執(zhí)行過程中的向量化比率低,導致集群系統(tǒng)的浮點運算效率低。因此需要通過對代碼的核心計算部分,深入分析數(shù)據(jù)操作的依賴關系,進行向量化優(yōu)化,對于有規(guī)律的離散訪存,通過數(shù)組轉置方法將離散訪存轉換為連續(xù)訪存[5-7],以提高應用程序整體的運行性能。
降低Cache miss對性能的影響。在處理數(shù)據(jù)前,盡量使用連續(xù)數(shù)據(jù)。修改數(shù)據(jù)結構或通過內存拷貝,將非連續(xù)數(shù)據(jù)變成連續(xù)數(shù)據(jù)存儲。根據(jù)算法模型,調整數(shù)據(jù)結構,以降低Cache miss對性能的影響。
減少CPU等待時間。從VTune分析數(shù)據(jù)看出,MPI_Sendrecv通信函數(shù)中Spin Time最長的邏輯熱點的計算過程中基本為內存訪問,訪存方式為連續(xù)和跨步訪存,導致Spin Time時間較多[8]??烧{整通信策略和拓撲結構,降低通信時間。對于小的循環(huán),可以展開,或者使用臨時空間記錄重復使用的數(shù)據(jù)。
消除負載不均衡。從函數(shù)級分析可以看出,在整個運行過程中,應用代碼耗時在不同進程間的占比有波動,說明GRAPES對該算例處理過程中有潛在的負載不均衡因素,需要結合代碼以及算例的處理邏輯,進行深入的分析,通過負載均衡的改善,提高程序性能。
基于本文的應用運行特征分析方法,實現(xiàn)了對GRAPES_GFS模式主要并行模塊的快速分析,通過分析結果,精確定位了應用的類型,完整地建立了應用的運行特征,定位應用運行瓶頸,找到應用優(yōu)化的方向。本文方法不僅可以針對氣象類應用,同樣適合其他行業(yè)的應用運行特征建立、應用優(yōu)化,甚至機群方案設計。