楊 寧,韓林生,李 彥,路 寬,宋雨澤
(國家海洋技術中心,天津 300112)
自1980年以來,在理論科學和實驗科學之后,國際上出現了“第三類科學”,即計算科學。隨著所處理問題的復雜程度不斷攀升以及計算模型從一維向多維發展等因素都導致了計算的數量級呈幾何級數增長,而計算機單機技術的局限性和科學需求的無限性之間的矛盾直接催生了計算機并行處理技術與高性能計算集群的產生。高性能計算集群的應用極大地推動了諸如海洋數值模式這類計算量大、精度要求高的模擬計算的快速發展,對與計算科學相關的交叉學科的發展起到了極大的促進作用[1]。
隨著我國海洋科技的快速發展,對建設功能齊全、服務于海洋科學技術及軍事海洋學研究的海上試驗場的需求顯得越發突出,通過對海上試驗場的設計和原型建設,初步形成科學合理、功能齊全、體系完備、服務公益、資源共享、軍民兼用的試驗場區。海上試驗場數值模擬與仿真系統(以下簡稱仿真系統)作為海上試驗場設計和原型建設的重要組成部分,目標在于對試驗場區的海洋氣象要素(海面風、海面溫度、海面濕度和海面氣壓)和海洋水動力環境(海水溫度、鹽度、海流和海浪)進行連續周期性的數值模擬,將場區實測要素數據與數值模擬數據相結合,并依托數據可視化技術實現場區模擬數據的動態可視化分析,使得海上試驗場建立在一個可知的、可測的、可靠的透明海洋環境場區。高性能計算集群系統專門用于大氣數值模式和海洋數值模式的周期性運算,部署有大氣數值模擬子模塊和海洋數值模擬子模塊,集群系統目前已經投入海上試驗場仿真系統的準業務化運行中使用。

圖1 仿真系統硬件拓撲結構
集群是一組相互獨立的服務器在網絡中表現為單一的系統,并以單一系統的模式加以管理,而所謂的高性能計算集群就是采用集群技術來實現高性能計算[2]。簡單的說,集群實際上就是一組計算機,他們作為一個整體向用戶提供一組網絡資源。這些單個計算機系統就是集群的節點。集群能在同一時間內執行多條指令或處理多個數據,它是并行計算的載體。
(1)良好的可擴展性:最初提高計算機性能主要依靠提升CPU的主頻和總線帶寬,但是基于這種方法對系統性能的提升十分有限。之后嘗試通過增加CPU個數和內存容量來提升性能,于是出現了向量機,對稱多處理機等,但是這種手段的瓶頸在于CPU訪問內存的帶寬并不能隨著CPU個數的增加而有效增長。與此相反,集群系統的性能隨著CPU個數的增加幾乎呈現線性變化;
(2)高可靠性:當集群中的一個節點失效,那么在該節點上運行的任務會轉移給其他節點,從而有效防止單點失效;
(3)高性能:平衡負載允許集群系統同時接入更多的用戶;
(4)高性價比:集群技術是使用特定的連接方式將價格相對較低并且符合工業標準的硬件設備結合起來,同時能夠提供高性能的任務處理能力[3]。
高性能計算集群系統主要由兩類設備組成,分別是節點與交換網絡。
1.3.1 節點
本文所采用集群系統的邏輯拓撲結構主要由用戶節點、控制節點、管理節點、存儲節點和計算節點組成。
(1)用戶節點:用戶節點是外部系統或者用戶訪問集群系統強大計算或存儲能力的唯一入口。
(2)控制節點:控制節點在集群系統運轉中主要承擔兩部分任務。為計算節點提供基本的網絡服務,如DHCP、DNS和NFS;調度計算節點上的作業,通常集群的作業調度程序(如PBS)應該運行在該節點上。
(3)管理節點:管理節點是集群系統各種管理措施的控制節點,監控集群中各個節點和網絡的運行狀況。一般集群系統的管理軟件也運行在這個節點上。
(4)存儲節點:存儲節點就是集群系統的數據存儲器和數據服務器。
(5)計算節點:計算節點是整個集群系統的計算核心,它的功能就是執行計算。
在小型集群系統中,往往由一臺計算機同時兼具用戶節點、控制節點、管理節點和存儲節點的功能,那么這臺計算機就被稱為主節點。在這種情況下,集群系統是由一個主節點和多個計算節點組成。
1.3.2 交換網絡
(1)管理交換網:管理交換網絡主要負責對整個系統進行管理和控制,通過各個節點之間交換管理信息報文通信,使主節點可以及時地了解到其他節點的狀態,保證節點之間的協同運行,并且進行相關任務的分配,作業的調度,以及對各個節點進行控制。在本設計的集群系統中,選取千兆以太網來組建管理交換網,從而滿足主節點對各個節點的控制,以及各節點之間的管理信息和狀態信息的交互。
(2)計算交換網:計算交換網絡主要負責所有節點計算所需數據的交換,它能夠為主節點與計算節點以及計算節點之間的數據交換提供數據通路[4]。各并行分布任務之間通信量大,采用高速網絡,應用性能將會明顯提高,因此在本設計中,集群系統采用Infiniband網絡搭建計算交換網。Infiniband是當前國際上先進、開放的互連標準,具有低延遲和高帶寬的特點,能夠提供40 Gbps的帶寬和1 us級別的延遲,從而滿足各節點之間大量數據信息的交互。
本文所依托的高性能計算集群系統由1個管理節點(包含控制節點和用戶節點),1個存儲節點和24個計算節點組成。管理節點的中央處理器主要由2塊2.4 GHz Intel Xeon X5620四核64位CPU構成;存儲節點的中央處理器主要由2塊2.4 GHz Intel Xeon X5620六核64位CPU構成,具有6塊2 TB的磁盤存儲空間;計算節點的中央處理器主要由2塊2.4 GHz Intel Xeon X5620四核64位CPU構成。集群系統的網絡由Infiniband網絡和1 Gb以太網組成。

圖2 集群系統邏輯拓撲結構
Linpack是目前國際上最流行的用于測試高性能計算機系統浮點計算性能的方法,Linpack測試主要包括三類:Linpack100、Linpack1000和HPL。 HPL即High Performance Linpack,它是基于對高性能計算機采用高斯消元法求解稠密線性代數方程組的測試。HPL是針對現代并行計算機提出的測試方法,能夠在對測試程序不做修改的基礎上,調整作業的規模(矩陣大小)、CPU數目和優化策略等方法執行該測試程序,從而獲得最佳的浮點性能,具有通用性好,效率高的特點,被認為是目前最好的Linpack性能測試程序。現今國際上每半年公布一次的世界最快500臺計算機排名的重要依據就是HPL性能測試。
浮點計算峰值或者計算峰值是評價計算機性能的一個重要指標,是指計算機每秒能完成浮點計算的最大次數,常見的兩個指標包括理論浮點峰值和實測浮點峰值[5]。
并行效率=實測浮點峰值/CPU理論浮點峰值
(1)理論浮點峰值=系統中CPU個數×CPU主頻×每個時鐘周期執行浮點運算的次數。
(2)實測浮點峰值是指Linpack數值,即HPL程序的測試結果。
本集群所有CPU理論峰值=CPU總核數×CPU主頻×4=24×(2×4×2.4)×4=1 843.2 Gflops,而我們通過HPL測試,得出實測浮點峰值為1 620 Gflops,因此可以得出高性能計算集群的并行效率為87.89%(主流中小型高性能計算集群的并行效率約為80%),表明集群的并行性能優秀,可以滿足大部分海洋數值業務化運行要求。
高性能并行計算集群的發展,滿足了大氣和海洋數值模式逐漸向更高時空分辨率、更細微物理過程方向發展的需求,促進了數值模式更準確、更精細模擬的實現。本文即通過一個有限體積近岸海洋數值模型FVCOM(Finite Volume Coastal Ocean Model),對高性能計算機集群的并行計算效率進行了測試。
FVCOM海洋模型是采用無結構網格、有限體積的三維原始方程海洋模式。水平方向上采用是三角網格,而在垂向方向上采用隨地形變化的σ 坐標。有限體積的方法不但具備有限元方法幾何拓撲結構上的靈活性,而且包含有限差分方法在數值離散上的簡單的特點,更容易擬合復雜的陸地邊界和進行局部網格加密;模式還包含了干/濕網格處理模塊、地下水輸入模塊、拉格朗日示蹤模塊、物質輸運擴散模塊、生態模塊等,可以滿足多種用途的應用。該模式已在我國許多海域得到成功應用,并進行了業務化推廣。
FVCOM的并行運算通過SPMD(Single Processor Multiple Data)方法實現[6]。首先通過METIS庫對模式區域按照并行處理器的數量進行分塊,并保證各區塊的網格單元數目基本一致且各區塊的邊界總長度盡量最小,以達到平衡各處理器計算負載、減小MPI(Message Passing Interface)通訊數據量的目的;然后在各塊區域分別進行積分計算,并保持相互之間的數據信息交換,以保證總體質量守恒及邊界通量的正常;最后將各區塊的計算結果重新整合,實現整體的輸出和讀寫。
加速比是同一個任務在單處理器系統和并行處理器系統中運行消耗的時間比率,常用來衡量并行系統或程序并行化的性能和效果。負載不平衡和通信開支是影響加速比的主要因素[7]。負載不平衡產生的直接后果就是導致各個計算節點上CPU使用效率的不平衡,從而降低集群的并行效率。并行方法按計算顆粒度可以分為粗顆粒并行處理和細顆粒并行處理,粗顆粒并行處理主要是針對多塊網格的處理;而細顆粒并行處理是面向在一塊網格計算程序的內部進行并行化處理。無論是粗顆粒并行處理還是細顆粒并行處理,都需要交換多塊網格虛擬層的物理信息,因此不同計算節點之間的通信開支就成為了提高集群并行效率的瓶頸[8]。
本文選取的FVCOM模式算例,共43 646個三角網格,22 947個節點,網格最高分辨率100 m,垂向7個σ 分層;模式的時間步長設計為外模6 s,內模60 s,模式的計算時間設定為3 d。
根據加速比計算方法,可以計算出在最優加速比與并行效率最高的情況下的計算節點數。

式中:T 是算例計算所需的時間;C1是計算量的大小;C2是計算機之間的通信因素;C3是網絡并行計算的初始化延時;Nopt是參與并行計算的最優節點數。由于運算開始前,已經進行了相關初始化工作,因此此處設定C3為0。將FVCOM算例分配在4個節點所得計算時間為882 s,分配在8個節點上得出計算時間為510 s,然后將882 s和510 s分別帶入公式(1)可得C1=3 344 s,C2=11.5 s,最終通過公式(2)得到Nopt=17。根據加速比計算方法的理論估算,此FVCOM的算例分配在17個節點并行運算時效率最高。
將模式分別在集群的主節點(即管理節點)、不同數量的計算節點上進行計算,記錄其運行所需時間,并計算了加速比,其加速性能曲線如圖3所示。結果顯示,在當前算例的計算量下,并行運算的總時間在從1個節點增加到12個節點的過程中迅速減少,運算效率提升明顯,然后隨著計算節點數增加運算效率的提升能力有所下降,并在16節點時實現了并行運算的最大效率,之后隨著節點數的增加,運行時間反而增加,運算效率降低。這主要是由于隨著節點數的增加,雖然各區塊的計算時間縮短,但各區塊間MPI通訊阻塞所占用時間的比例卻明顯增加,且成為影響并行運算效率的主要因素[9]。
集群系統實測加速比性能的拐點出現在16節點,這與理論估算的將在17節點上達到最大加速比略有差異,可能是由于在集群系統上搭載的軟件平臺、運行的作業調度機制、外部的工作環境等因素的聯合作用下,影響了并行計算的效率,導致處理器的計算負載以及各區間MPI通訊阻塞所消耗的時間與理論估算值略有差異的原因。

圖3 不同計算節點下的加速比
根據計算出的集群理論浮點峰值,以及HPL所測得的實測浮點峰值,可以估算本集群的并行效率為87.89%,該集群并行效率高于國內主流高性能計算集群的并行運算水平,并行性能優秀,可以滿足大氣海洋數值模式等業務化運行的需求。
通過選用海洋數值模式FVCOM一個算例的應用,對集群系統進行了加速比測試,加速比并沒有像理論那樣隨著計算節點數的增加而成線性增長,超過16節點后反而出現了節點越多運算時間越長的情況。雖然隨著計算節點數的增加各區塊的計算時間會縮短,但是區塊之間MPI通訊阻塞消耗的時間在總時間中所占的比例卻明顯增加。相比計算縮短的時間,MPI阻塞消耗了更多的時間,從而影響了并行運算的效率,使集群加速比在16節點后出現拐點,加速性能呈下降趨勢。
集群系統的加速比測試結果表明,在數值模式的并行運算中,并不是使用的計算節點越多運行速度越快,合理的使用計算節點不但可以提高運行效率,還可以節省計算資源。本設計中的集群系統通過合理化配置計算資源,選取適當的交換網絡,可以同時高速并行運算部署在該系統上的大氣和海洋數值模式,滿足大氣和海洋數值模式連續周期性運算的要求。經過一段時間的示范運行,集群系統運行穩定、計算性能優秀,完全能夠滿足仿真系統業務化運行的要求。
[1]陳顯堯,宋振亞,王永剛,等.并行計算在海洋環流數值模式中的應用[C]//2005高性能計算應用大會論文集,2005:264-269.
[2]田俊剛.高性能集群系統分析、設計與應用[M].西安:西北工業大學,2004.
[3]張磊,姜弘道,潘海琳.計算機集群的搭建、測試與應用[J].水利水電科技進展,2006:26(2):65-69.
[4]謝向輝,彭龍根,等.基于Infini Band的高性能計算機技術研究[J].計算機研究與發展,2005,42(6):905-912.
[5]余江洪,肖燕成,等.基于Linpack的高性能計算機集群的并行性能測試[J].船電技術,2009,29(1):56-60.
[6]Chen Changsheng,Robert C Beardsley,Geoffrey Cowles.An Unstructured Grid,Finite-Volume Coastal Ocean Model,FVCOM User Manual.SMAST/UMASSD,02:16-17.
[7]Guo QP,Paker Y.Concurrent Communication and Granularity Assessment for a Transputer-based Multiprocessor system[J].Journal of Computer Systems Science&Engineering,1990,5(1):18-20.
[8]溫小飛,朱宗柏.高性能計算機集群的性能評價[J].武漢理工大學學報(信息與管理工程版),2005,27(4):19-22.
[9]宋倩,胡松.海洋模式FVCOM2.6并行計算性能TAU分析[J].計算機工程與科學,2011,33(12):87-93.