国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

大規(guī)模海洋數(shù)據(jù)同化的并行優(yōu)化

2023-05-22 12:00:06蔡迪洪學(xué)海肖俊敏譚光明
計算機(jī)研究與發(fā)展 2023年5期
關(guān)鍵詞:格點進(jìn)程代理

蔡迪 洪學(xué)海 肖俊敏 譚光明

(中國科學(xué)院計算技術(shù)研究所 北京 100190)

海洋數(shù)據(jù)同化是一種從氣候數(shù)值預(yù)測領(lǐng)域發(fā)展而來的,將物理模型與觀測資料相結(jié)合的預(yù)測校正方法[1-3],廣泛運用于大氣[4]、海洋[5]和地表[6]等諸多領(lǐng)域.目前最為常見的數(shù)據(jù)同化方法分別為集合卡爾曼濾波算法(FnKF)[7]、集合最優(yōu)插值算法[8],以及三維、四維變分方法等[9-12].其中集合最優(yōu)插值由集合卡爾曼濾波發(fā)展而來.

隨著航海事業(yè)的不斷發(fā)展,捕魚、軍事、資源開采和生物研究等海洋相關(guān)的活動日益增多.這些日益增多的海洋活動對海洋預(yù)報的準(zhǔn)確性和實時性提出了更高的要求,因此許多準(zhǔn)實時的海洋觀測系統(tǒng)被開發(fā)出來[13].隨著海洋模式的不斷發(fā)展,海洋數(shù)據(jù)同化的分辨率也不斷提高.在其他因素不變的情況下,水平方向的分辨率每提高10 倍,對應(yīng)的計算量和數(shù)據(jù)量將提高100 倍,這大大增加了同化系統(tǒng)對內(nèi)存、I/O 以及計算能力的要求.海量的數(shù)據(jù)讀取和計算任務(wù)對系統(tǒng)的實時性帶來了很大的挑戰(zhàn).我國自主研發(fā)的天河2 號超算平臺憑借其優(yōu)越的I/O 性能以及計算的性能曾多次登頂世界超算的榜首,可以很大程度上滿足同化程序?qū)τ趦?nèi)存、I/O 以及計算性能的需求,因此許多大數(shù)據(jù)學(xué)者都以天河2 號作為研究和開發(fā)平臺[14-24].如何開發(fā)一個高效的并行算法提取出海洋數(shù)據(jù)同化的特性,并與天河的存儲以及執(zhí)行架構(gòu)相結(jié)合,最大程度地提升天河系統(tǒng)的內(nèi)存、I/O 以及計算資源的利用率顯得尤為重要.

本文算法主要針對基于中國科學(xué)院大氣物理研究所(Institute of Atmospheric Physics,Chinese Academy of Sciences,IAP)、大氣科學(xué)和地球流體力學(xué)數(shù)值模擬國家重點實驗室(State Key Laboratory Modelling for Atmospheric Sciences and Geophysical Fluid Dynamics,LASG)發(fā)展的 LASG/IAP 氣候系 統(tǒng)海洋模式(LASG/IAP climate ocean model,LICOM)[25-27],在局部集合最優(yōu)插值的算法框架下,對大規(guī)模高分辨率的海洋數(shù)據(jù)同化程序進(jìn)行并行優(yōu)化.由于本文采用的是高分辨率的海洋觀測數(shù)據(jù),因此同化時存在計算量大、內(nèi)存需求高、I/O 時間長等問題,在文獻(xiàn)[28]中已經(jīng)針對此這個模式下的數(shù)據(jù)同化程序做了一些優(yōu)化工作,取得了不錯的效果,但是其優(yōu)化時沒有深入理解海洋數(shù)據(jù)同化的數(shù)據(jù)特性、計算特性,沒有考慮所使用的超算平臺架構(gòu),以及沒有考慮算法的時間局部性和空間局部性的問題,因此仍存在很大的優(yōu)化空間.本文在文獻(xiàn)[28]的基礎(chǔ)上,用其優(yōu)化后的程序作為本文的對比程序(下文稱之為I/O 代理程序),并進(jìn)一步將海洋數(shù)據(jù)同化的數(shù)據(jù)特性、計算特性與所使用的超算平臺的架構(gòu)特性相結(jié)合,并結(jié)合時間局部性和空間局部性,設(shè)計了一款高效的大規(guī)模海洋數(shù)據(jù)同化并行算法.

1 算法及程序流程

1.1 同化方法

局部集合最優(yōu)插值算法是由集合最優(yōu)插值進(jìn)行可并行性優(yōu)化后發(fā)展而來[29],具有更好的并行性.

本文局部集合最優(yōu)插值的實現(xiàn)過程表示為

其中,φα為分析場數(shù)據(jù),φ為背景場數(shù)據(jù),α為一個在區(qū)間(0,1]上的隨機(jī)因子;A為靜態(tài)樣本數(shù)據(jù),A′為擾動預(yù)測矩陣,由A中心化而來,A′A′T為背景誤差協(xié)方差的估計;H為測量算子,代表真實模型與預(yù)測模型之間的映射;γ為擾動測量誤差向量,γγT為觀測誤差協(xié)方差;d′=d-Hφ為觀測增益,其中d為擾動測量向量.

由于集合擾動誤差和測量誤差無關(guān),所以由式(2)得

結(jié)合式(1)可得

SVD 分解以及式(7)便是本文各個海洋格點的主要計算部分,其中最為耗時的便是SVD 分解過程.在SVD 分解完成之后,將式(7)分為5 個步驟計算:

在局部最優(yōu)插值的算法中,整個同化數(shù)據(jù)區(qū)域按照經(jīng)緯度被劃分成很多個格點,對于每一個格點只要可以獲取到周圍(2×prep_rx)×(2×prep_ry)范圍內(nèi)的數(shù)據(jù)便可以對該節(jié)點進(jìn)行數(shù)據(jù)同化,其中在本文的分辨率下prep_rx=105,prep_ry=19. 這樣良好的并行特性十分便于計算的并行化,但是這也導(dǎo)致了每個格點在數(shù)據(jù)分發(fā)時需要帶邊數(shù)據(jù),在進(jìn)行通信時會產(chǎn)生大量的通信量,增加數(shù)據(jù)通信的時間,大大降低程序的并行效率. 因此為了提升程序的并行效率、提高并行系統(tǒng)的帶寬利用率以及減少通信時間,提升程序的并行效率尤為重要,這些將在下文做詳細(xì)介紹.

1.2 程序流程

文獻(xiàn)[28]的程序的流程圖如圖1 所示. 并本文以此作為對比程序,并在此基礎(chǔ)上進(jìn)行優(yōu)化.

1.3 存在的挑戰(zhàn)

1)負(fù)載均衡的挑戰(zhàn)

Fig.1 Flowchart of LICOM data assimilation pragram based on the I/O agents strategy圖1 基于I/O 代理策略的LICOM 數(shù)據(jù)同化程序流程圖

由圖2 可以看出,I/O 代理程序各個進(jìn)程的計算負(fù)載極不均衡,大量的進(jìn)程沒有計算任務(wù),大部分計算任務(wù)被分配到了少量的進(jìn)程上,且這些進(jìn)程內(nèi)部負(fù)載也十分的不均衡,存在極大的進(jìn)程浪費. 在I/O代理程序中,同化程序以同化數(shù)據(jù)中海洋格點的數(shù)目為負(fù)載均衡的依據(jù),對進(jìn)程進(jìn)行計算任務(wù)的劃分.這樣的劃分方式只是從同化流程的角度理解海洋數(shù)據(jù)同化,沒有深入理解同化算法以及進(jìn)程的計算過程. 因此在這種負(fù)載均衡方式下,雖然各個進(jìn)程表面上看起來負(fù)載均衡,實際上執(zhí)行時存在很大的負(fù)載不均衡性. 雖然每個進(jìn)程獲得的可同化格點的數(shù)目是一樣的,但并不是每個海洋格點都是可以同化的,當(dāng)格點周圍的nobs≤2 時(其中nobs代表同化格點周圍有效的觀測數(shù)據(jù)點的數(shù)量),此部分格點是不可以同化的. 最壞的情況是,一些進(jìn)程獲取的海洋格點全部需要同化,而一些海洋格點獲取的海洋格點完全不需要同化, 這要導(dǎo)致極大的負(fù)載不均衡性,從而造成大量計算節(jié)點的浪費.

2)讀取的挑戰(zhàn)

由圖3 可以看出I/O 代理程序在讀取64.8 GB 的數(shù)據(jù)時較為耗時,并行讀取效率較低. I/O 代理程序讀取時采用代理節(jié)點對數(shù)據(jù)進(jìn)行讀取,之后由代理節(jié)點對計算進(jìn)程進(jìn)行數(shù)據(jù)分發(fā). 這樣的設(shè)計方式僅在上層算法層面對同化程序的讀取進(jìn)行了優(yōu)化,并未考慮到超算集群的文件系統(tǒng)以及通信架構(gòu),因此并未充分挖掘Lustre 并行文件系統(tǒng)的并行讀取能力,并行帶寬利用率較低.

Fig.2 The assimilation time of processes under 1 000 cores for the I/O agents program圖 2 I/O 代理1 000 核下各個進(jìn)程的同化時間

Fig.3 The time for the I/O agents program to read 64.8 GB of data under different numbers of cores圖 3 不同核數(shù)下I/O 代理程序讀取64.8 GB 數(shù)據(jù)的時間

3)通信的挑戰(zhàn)

由圖4 可以看出I/O 代理程序的通信不僅耗時較長且隨著核數(shù)增加顯著增長.正如讀取的挑戰(zhàn)所述,I/O 代理程序并未考慮超算集群的節(jié)點通信架構(gòu),只是簡單地調(diào)用函數(shù)MPI_Scatter進(jìn)行數(shù)據(jù)分發(fā),存在很大的通信負(fù)載不均衡,超算集群通信通道利用率非常低.

Fig.4 Communication time of I/O agents program under different numbers of cores圖 4 不同核數(shù)下I/O 代理程序的通信時間

4)寫回的挑戰(zhàn)

由圖5 可以看出I/O 代理程序的寫回十分的耗時,且隨著核數(shù)增加十分的不穩(wěn)定.I/O 代理程序?qū)懟貢r采用各個進(jìn)程直接寫回對應(yīng)數(shù)據(jù)塊的策略,這樣的策略會導(dǎo)致海量的進(jìn)程同時密集地訪問同一個對象存儲目標(biāo)(object storage target,OST),而OST 并不能同一時間處理這么多I/O 進(jìn)程的請求,造成極大的沖突,特別是核數(shù)達(dá)到千以上時.此外海量的進(jìn)程同時訪問同一塊磁盤也會導(dǎo)致嚴(yán)重的磁頭爭用和海量的尋址.

Fig.5 Write back time of I/O agents program under different cores圖 5 不同核數(shù)下I/O 代理程序的寫回時間

1.4 本文貢獻(xiàn)

本文針對1.3 節(jié)所述的I/O 代理程序存在的4 個挑戰(zhàn),通過分析同化程序整體的算法流程,對算法進(jìn)行重組并結(jié)合超算集群的存儲架構(gòu)、節(jié)點分布特性以及通信特性,提出了基于計算拓?fù)鋱D的2 層負(fù)載均衡策略以及基于Lustre 文件存儲架構(gòu)和超算集群特性的并行優(yōu)化策略,并在此基礎(chǔ)上進(jìn)一步提出了計算、讀取通信、寫回3 層重疊策略.本文的總技術(shù)路線如圖6 所示.

2 負(fù)載均衡優(yōu)化

2.1 基于計算拓?fù)鋱D的負(fù)載均衡優(yōu)化

Fig.6 General technical route圖 6 總體技術(shù)路線

本文對海洋數(shù)據(jù)同化算法和進(jìn)程實際的計算流程進(jìn)行深入的分析,觀察到nobs才是各個進(jìn)程實現(xiàn)負(fù)載均衡的關(guān)鍵.而且實際同化過程中最耗時的部分是SVD 分解過程,其計算復(fù)雜度為nobs3,其中nobs的取值范圍為3~1 000.由此也可以看出基于海洋格點的負(fù)載均衡方法中,有的海洋格點nobs很大,有的海洋格點nobs很小,計算復(fù)雜度最大相差1 0003/27,為370 多萬倍,這樣的負(fù)載均衡方法十分不合理.本文算法針對實際執(zhí)行流程中的這一特性,在實際執(zhí)行同化前加入了一個預(yù)同化步驟,分別計算出每一個海洋格點進(jìn)行數(shù)據(jù)同化的計算復(fù)雜度,在原本海洋格點分布圖的基礎(chǔ)上生成基于計算復(fù)雜度的計算拓?fù)鋱D,并以此作為負(fù)載均衡劃分的依據(jù),在最大程度上實現(xiàn)了各個進(jìn)程的負(fù)載均衡.不僅如此,實現(xiàn)的計算拓?fù)鋱D還可以很大程度上反映出本次數(shù)據(jù)同化計算任務(wù)的分布特性,顯示出整個海洋同化數(shù)據(jù)中的對應(yīng)海洋格點是否需要同化,以此實現(xiàn)了針對海洋同化數(shù)據(jù)計算分布特性的讀取寫回以及通信優(yōu)化,這部分將在2.2 節(jié)進(jìn)行介紹.

2.2 2 層負(fù)載均衡

Fig.7 Two-layer load balancing圖 7 2 層負(fù)載均衡

如圖7 所示,假設(shè)整個海洋同化數(shù)據(jù)的計算量為90,每個節(jié)點(Split 組)內(nèi)5 個核,其中0 號核為該Split 組的Master.生成計算拓?fù)鋱D后,為了方便展示,假設(shè)將整個同化數(shù)據(jù)分為4 組(25,20,30,15)并計算出每個組的計算量.本文先在組的維度按照經(jīng)度進(jìn)行1 層的負(fù)載均衡,以第1 組為例,其計算量為25,本文算法為這個組分配5 個Master,由于地理區(qū)域上的觀測點分布是不均勻的,因此每個Master 負(fù)責(zé)的地理區(qū)域大小可能有大有小,每個Master 負(fù)責(zé)的計算量為5.在每個Split 組內(nèi)部,本文算法再進(jìn)行了1層的負(fù)載均衡,將計算量再次平均劃分給節(jié)點內(nèi)的計算進(jìn)程.這里的Split 組屬于不同的節(jié)點,分別使用節(jié)點間和節(jié)點內(nèi)通信通道,這樣2 層的負(fù)載均衡方式不僅可以最大限度地實現(xiàn)計算進(jìn)程的負(fù)載均衡,而且更為第3 節(jié)的讀取和通信分組做了鋪墊,第3 節(jié)的讀取和通信優(yōu)化策略也充分考慮節(jié)點間和節(jié)點內(nèi)的通信通道問題,并根據(jù)負(fù)載均衡的分組,實現(xiàn)了相應(yīng)的讀取和通信的優(yōu)化策略.通過這樣的分組方式,每個組的Reader 對Master 的數(shù)據(jù)分發(fā),以及Master對Split 組的數(shù)據(jù)分發(fā)分別使用的是節(jié)點間和節(jié)點內(nèi)的通信通道,互不影響,可以極大地提升通信效率.

3 基于Lustre 文件存儲架構(gòu)和超算集群特性的并行優(yōu)化

3.1 基于OST 的讀取優(yōu)化

基于LICOM 模式的數(shù)據(jù)同化本身涉及大量的文件讀取,在同化時間沒有充分優(yōu)化時,讀取時間可以忽略不計,例如在文獻(xiàn)[28]的Fortran 版本中,程序千核的運行時間為8 000 s 左右,而讀取時間占總時間的比重很小,可以忽略不計.但在同化時間充分優(yōu)化后,讀取時間將在程序整體運行時間中占據(jù)很大的比重,特別是在本文負(fù)載均衡優(yōu)化后,千核下程序其他部分的執(zhí)行時間只有幾十秒,而程序讀取64.8 GB的數(shù)據(jù)需要10 多秒,因此讀取時間的優(yōu)化也是提升并行同化程序性能的關(guān)鍵.

在傳統(tǒng)的讀取算法優(yōu)化中,大多數(shù)的優(yōu)化算法都是通過將數(shù)據(jù)重組,保證數(shù)據(jù)的成塊連續(xù)讀取,減少文件的尋址次數(shù)和I/O 的請求次數(shù),從而減少文件的讀取時間.MPI-IO 是一種讀取通信優(yōu)化策略,采用的就是這個思想,許多讀取密集型的算法以此作為讀取的優(yōu)化策略,并在MPI-IO 的基礎(chǔ)上進(jìn)行了優(yōu)化[30-34].

傳統(tǒng)的讀取優(yōu)化大多是在算法層面對I/O 進(jìn)行優(yōu)化,并沒有考慮過讀取進(jìn)程是如何和底層文件存儲系統(tǒng)進(jìn)行交互的,也沒有考慮超算集群的特性.因此這些優(yōu)化算法往往只能一定程度上優(yōu)化程序的讀取時間,如果舊的讀取策略已經(jīng)是成塊連續(xù)讀取的,新優(yōu)化算法的性能提升將十分的有限,而且隨著平臺網(wǎng)絡(luò)環(huán)境的不同有很大的波動.本文提出的讀取優(yōu)化,將超算平臺的文件存儲架構(gòu)和超算集群的特性結(jié)合起來,充分挖掘了Lustre 文件存儲架構(gòu)的I/O帶寬和超算集群的節(jié)點通信通道的分配特點[35-42],程序讀取64.8 GB 文件的讀取時間縮小到1.6 s 左右,I/O 性能顯著提升.

本文程序所使用的天河2 號超算平臺使用的文件系統(tǒng)為Lustre 文件系統(tǒng).文件在存儲時系統(tǒng)按照分片的方式,將文件存儲到不同的OST 中,其中對象存儲服務(wù)器(object storage server,OSS)負(fù)責(zé)處理上層的I/O 讀寫請求以及調(diào)度OST.在忽略O(shè)SS 調(diào)度時間的影響下,如果OST 的數(shù)目為m,且OST 的I/O 帶寬為n(單位為GBps),那么理論上整個超算平臺的帶寬可以達(dá)到mn(單位為GBps).在天河2 號超算平臺上,OST 的數(shù)目為12,OSS 的數(shù)目為2.如果忽略掉OSS的調(diào)度時間,天河系統(tǒng)的整體帶寬可達(dá)12n(單位為GBps).在實測時,I/O 代理程序的吞吐量較低,遠(yuǎn)遠(yuǎn)沒有達(dá)到天河的峰值吞吐量.

首先,如圖8,9 所示,I/O 代理程序的I/O 讀取算法存在大量的讀取進(jìn)程同時訪問少量OST 的情況,并且由于未對文件存儲方式進(jìn)行設(shè)置,默認(rèn)情況下同一個文件可能無序地存在幾個不同的OST,這就導(dǎo)致了雖然讀取的是不同的文件但不同的進(jìn)程可能會訪問相同的OST.這樣的讀取方式使得同一時間

只有少量OST 超負(fù)荷運行,其他OST 則一直空閑,沒有充分利用OST,而且同時對少量OST 進(jìn)行密集訪問會存在大量的I/O 請求沖突,增加了OSS 的調(diào)度難度,大大增加了OSS 的調(diào)度時間.在本文的算法中,對于64.8 GB 也就是12 個文件,每個文件5.4 GB 的數(shù)據(jù),本文通過Lustre 的用戶接口,將每個文件分別存到不同的OST 中.在文件讀取時,本文只指定12個進(jìn)程作為Reader 進(jìn)行文件讀取.對于這12 個進(jìn)程本文也做了特別的設(shè)定,本文將這12 個進(jìn)程分別綁定到不同的天河節(jié)點上.2.2 節(jié)中提到,天河上的節(jié)點在通信時分別使用節(jié)點間和節(jié)點內(nèi)的通信通道.

Fig.8 Reading strategy for the I/O agents pragram圖 8 I/O 代理程序的讀取策略

Fig.9 Reading strategy based on OST圖 9 基于OST 的讀取策略

如圖10 所示,天河上每個節(jié)點有24 個核,每個節(jié)點獨自占用1 個節(jié)點間通信通道,節(jié)點內(nèi)部則走節(jié)點內(nèi)的通信通道.這樣的設(shè)計方式可以充分利用每個節(jié)點的通信通道的帶寬,最大限度地避免對OST 請求的沖突.當(dāng)OSS 數(shù)目足夠多時,每個讀取進(jìn)程和OST 的I/O 請求完全并行,不受其他讀取進(jìn)程的影響,實現(xiàn)完全并行的通信.但是正如前文提到的天河的OSS 只有2 個,因此無法實現(xiàn)理論上I/O 請求完全沒有沖突的情況,但是這種設(shè)計方式也可以最大限度地避免I/O 請求的沖突,并且同一時間充分利用天河可用的OST,實現(xiàn)完全并行讀取.

Fig.10 The layout and communication mode of supercomputing cluster computing node圖 10 超算集群計算節(jié)點布局與通信方式

3.2 3 層通信

1)3 層通信算法

本文的算法在讀取時設(shè)置了12 個Reader 對12個文件進(jìn)行完全并行的讀取,接下來要解決Reader對讀取到的數(shù)據(jù)進(jìn)行分發(fā)的問題.在I/O 代理程序中,讀取進(jìn)程讀取到相應(yīng)的數(shù)據(jù)之后,就直接對所有組內(nèi)的進(jìn)程進(jìn)行數(shù)據(jù)分發(fā).這樣的實現(xiàn)方式雖然簡單,但是效率卻十分的低下.在實際執(zhí)行時1 個讀取進(jìn)程可能要同時將數(shù)據(jù)分發(fā)給海量的進(jìn)程,雖然MPI 在底層優(yōu)化時,采用二分的方法進(jìn)行數(shù)據(jù)分發(fā)的優(yōu)化,但是并沒有關(guān)注圖10 中超算集群上節(jié)點內(nèi)和節(jié)點間的通信通道問題.這樣可能存在一種情況,即在MPI_Scatter優(yōu)化算法中,分發(fā)進(jìn)程集中到1 個或幾個節(jié)點上,同時使用1 個節(jié)點的通信通道向外分發(fā)數(shù)據(jù),這樣就會造成很大的網(wǎng)絡(luò)擁塞,分發(fā)的效率十分的低下.MPI_Scatter只是一種通用性的方法,實際執(zhí)行的效果不佳.

Fig.11 Three layers of communication圖 11 3 層通信

本文根據(jù)圖10 所示的超算集群上節(jié)點間和節(jié)點內(nèi)通信通道的配置特點設(shè)計了3 層通信算法.如圖11所示,首先設(shè)置12 個進(jìn)程作為Reader 與OST 進(jìn)行通信,獲取到相應(yīng)的數(shù)據(jù),其中每個Reader 分別分配到不同的節(jié)點上,獨立使用自己的通信通道與自己對應(yīng)的OST 進(jìn)行交互,與其他Reader 互不影響實現(xiàn)并行的OST 交互.其次在Reader 獲取相應(yīng)的數(shù)據(jù)之后,將計算進(jìn)程按照節(jié)點為單位分為Split 組,其中每個節(jié)點的0 號進(jìn)程為這個Spilt 組的Master.0 號進(jìn)程負(fù)責(zé)節(jié)點間的收發(fā)數(shù)據(jù),獨占當(dāng)前節(jié)點的通信通道.最后為了并行處理,本文將同化數(shù)據(jù)按照緯度ny方向橫向切塊,分成了group個Master 組.每個Master 組都需要12 個文件中對應(yīng)的1 塊數(shù)據(jù)塊,因此本文為每個Master 組配置了12 個Reader,每輪由12 個Reader 去并行讀取12 個文件的對應(yīng)數(shù)據(jù)塊,并行分發(fā)給對應(yīng)的Master.這樣的設(shè)計方式可以將Reader和Master 間的通信集中到節(jié)點間的通信通道上,充分利用各個節(jié)點通信通道的同時,實現(xiàn)和下文節(jié)點內(nèi)通信的隔離.在Master 獲取到相應(yīng)的數(shù)據(jù)后,各個Master 通過節(jié)點內(nèi)的通信通道向自己負(fù)責(zé)的Split 組分發(fā)數(shù)據(jù).這樣設(shè)計方式可以實現(xiàn)節(jié)點間和節(jié)點內(nèi)在不同通信通道的并行通信.

2)基于環(huán)的分發(fā)策略

每個Master 組的12 個Reader 對各自的Master 進(jìn)行分發(fā)數(shù)據(jù)時,如果直接采用數(shù)據(jù)分發(fā)的方式,同一時間12 個Reader 同時對所有Master 發(fā)起通信,可能會出現(xiàn)“hot spot”,導(dǎo)致嚴(yán)重的通信擁塞.因此本文設(shè)計了圖12 所示的基于環(huán)的分發(fā)策略.

Fig.12 Ring-based distribution strategy圖 12 基于環(huán)的分發(fā)策略

本文首先將每個Master 組內(nèi)的Master 再次平均分組,生成Scatter_Master 組,初始情況下每個Reader對應(yīng)1 個Scatter_Master 組,負(fù)責(zé)向這部分的Master分發(fā)數(shù)據(jù).在1 輪分發(fā)完成后,每個Reader 進(jìn)行輪轉(zhuǎn),如圖12 所示,依次循環(huán)直到所有的數(shù)據(jù)分發(fā)完畢.這樣的設(shè)計方式可以實現(xiàn)Reader 間完全并行的數(shù)據(jù)分發(fā),不會產(chǎn)生“hot spot”和Reader 間的通信擁塞,極大地提升了通信的效率.

3.3 預(yù)同化優(yōu)化和寫回優(yōu)化

1)預(yù)同化優(yōu)化

第2 節(jié)提到的基于計算拓?fù)鋱D的負(fù)載均衡策略中需要進(jìn)行一步預(yù)同化的操作,這部分需要先讀取背景場的數(shù)據(jù),然后根據(jù)背景場、觀測場和網(wǎng)格數(shù)據(jù)進(jìn)行預(yù)同化,計算出每個海洋格點的計算復(fù)雜度,以此生成計算拓?fù)鋱D.這個過程涉及一張背景場文件讀取,這個背景場文件的大小為5.4 GB.在1 000 核下,這部分的讀取和通信時間為6 s 左右,且隨著核數(shù)呈線性增長.本文算法在4 000 核下優(yōu)化到最后的整體運行時間為34 s 左右,因此預(yù)同化部分的優(yōu)化也十分的重要.

本文將5.4 GB 的文件分別等分到group(group<12)個OST 中,然后每個Master 組設(shè)置1 個Reader 對自己負(fù)責(zé)的OST 進(jìn)行并行讀取.在讀取完成后仿照3.2 節(jié)提到的3 層通信,將數(shù)據(jù)分發(fā)給不同的組,各個組收到數(shù)據(jù)后進(jìn)行預(yù)同化過程.

2)寫回優(yōu)化

I/O 代理程序中,寫回時間占I/O 代理程序運行時間的27%,其時間為200~300 s 之間,且隨著超算集群用戶數(shù)量和網(wǎng)絡(luò)擁塞情況出現(xiàn)很大的波動.有時寫回時間甚至大于1500 s,不僅十分的耗時且十分的不穩(wěn)定.這主要是由于I/O 代理程序采用各個計算進(jìn)程獨自寫回所同化的數(shù)據(jù),這樣的寫回策略會對OSS 發(fā)起數(shù)百萬次的寫回請求,同一時間OSS 需要處理幾千次的文件寫回請求,這對OSS 的調(diào)度和超算集群的網(wǎng)絡(luò)通信產(chǎn)生非常大的壓力,當(dāng)超算集群用戶增多、通信網(wǎng)絡(luò)變得擁堵時,寫回的性能會受很大的影響.本文根據(jù)Lustre 文件存儲架構(gòu)的特性,將寫回的文件分別根據(jù)Master 組等分到不同的OST 中,然后根據(jù)3 層通信,實現(xiàn)了3 層的gather 操作,將每個計算進(jìn)程計算完成的數(shù)據(jù)經(jīng)由Split→Master→Reader 收集到每個Master 組的Reader 0 中,由每個組的Reader 0 負(fù)責(zé)集中的寫回,將對應(yīng)的數(shù)據(jù)寫回對應(yīng)的OST 中,實現(xiàn)完全并行的寫回.最后的寫回請求的次數(shù)為group次,寫回時間穩(wěn)定在2~3 s 且不隨核數(shù)的增加而增加,十分的穩(wěn)定,不隨超算集群的用戶數(shù)量、網(wǎng)絡(luò)環(huán)境的波動而波動.

4 計算、讀取通信、寫回3 層重疊

4.1 讀取通信與計算重疊

由于在具體的數(shù)據(jù)同化過程中,每個計算進(jìn)程只要獲取到相應(yīng)的數(shù)據(jù),同化過程便可以進(jìn)行,不需要其他的通信操作,各個計算進(jìn)程完全并行.針對這種同化過程,本文實現(xiàn)了對讀取通信和計算的重疊.為了實現(xiàn)讀取通信與計算的重疊,Reader 將需要讀取的數(shù)據(jù)進(jìn)行緯度ny方向的切片,生成overlap片數(shù)據(jù)塊.每次Reader 只讀取1 個小塊的數(shù)據(jù),在讀取到相應(yīng)的數(shù)據(jù)后,再進(jìn)行Reader 到Master、Master 到節(jié)點內(nèi)計算進(jìn)程的通信,各個計算進(jìn)程在獲取到數(shù)據(jù)后便進(jìn)行同化計算.在其他進(jìn)程進(jìn)行同化計算的同時,Reader 再讀取下一小片的數(shù)據(jù),并和Master 進(jìn)行通信,這樣便實現(xiàn)讀取通信和計算的重疊.

由于同化的數(shù)據(jù)都是帶邊的,其中經(jīng)度nx方向的prep_rx=105,緯度ny方向的prep_ry=19,假設(shè)每個計算進(jìn)程所需數(shù)據(jù)塊的nx方向子區(qū)域的長度為sub_nx_len,ny方向的區(qū)域分組的長度為ny_len,那么每個Reader 需要讀 取的數(shù)據(jù)為((nx+2×prep_rx)×(ny_len+2×prep_ry))×sizeof(type),每個計算進(jìn)程所需的通信數(shù)據(jù)大小為(sub_nx_len+2×prep_rx×(ny_len+2×prep_ry))×sizeof(type).因 此,ny方 向上數(shù)據(jù) 切得越細(xì),需要的帶邊數(shù)據(jù)也就越多,所產(chǎn)生的讀取和通信冗余量就越大.

為了解決讀取和通信數(shù)據(jù)冗余的問題,本文采用在讀取時先提前開辟((nx+2×prep_rx)×(ny_len+2×prep _ry))×sizeof(type)的內(nèi)存空間,其大小為不分片時的整體數(shù)據(jù)塊的內(nèi)存大小加上帶邊數(shù)據(jù)的內(nèi)存大小,其中ny_len為區(qū)域分組中數(shù)據(jù)塊在ny方向上的總長度.然后設(shè)置了psi_read_index作為Reader 已經(jīng)讀取的數(shù)據(jù)偏移,在Reader 進(jìn)行讀取時根據(jù)psi_read_index計算下一次需要讀取的數(shù)據(jù)量,即邏輯上需要的數(shù)據(jù)偏移減去psi_read_index代表的已經(jīng)讀入內(nèi)存的數(shù)據(jù)偏移.在實際執(zhí)行時,分片后數(shù)據(jù)讀取所讀入的數(shù)據(jù)量和以不分片方式讀入的數(shù)據(jù)量相等,完全解決了帶邊數(shù)據(jù)導(dǎo)致的讀取數(shù)據(jù)冗余問題,實現(xiàn)了高效的數(shù)據(jù)復(fù)用.

Fig.13 The overlap between reading,communication and computation圖 13 讀取、通信與計算重疊

解決完讀取數(shù)據(jù)冗余的問題,下面介紹通信數(shù)據(jù)冗余問題的解決.本文算法在通信之前,和讀取相似,先提前開辟(sub_nx_len+2×prep_rx×(ny_ len+2×prep_ry))×sizeof(type)的內(nèi)存空間,并設(shè)置psi_index為已經(jīng)通過通信獲取到的同化數(shù)據(jù)的數(shù)據(jù)偏移.在通信時利用psi_index計算需要通信的數(shù)據(jù)量,即將需要通信的數(shù)據(jù)偏移減去已經(jīng)通過通信的獲取到的數(shù)據(jù)偏移.通過這種方式,最終的通信數(shù)據(jù)量和未分片的數(shù)據(jù)量相等,完全解決了帶邊數(shù)據(jù)所導(dǎo)致的通信數(shù)據(jù)冗余問題.

具體的讀取、通信與計算重疊算法和避免讀取、通信冗余策略如圖13、圖14 所示.

4.2 計算、讀取通信、寫回重疊

2.1節(jié)中提到計算拓?fù)鋱D可以反映出本次數(shù)據(jù)同化計算任務(wù)的分布特性.同化數(shù)據(jù)顯示的是全球的海洋氣候信息,所以包含大量的陸地以及大量沒有觀測點的海洋區(qū)域,而且這些區(qū)域多是成塊且連續(xù)的.因此根據(jù)海洋同化數(shù)據(jù)計算量的分布特性,設(shè)計了讀取和通信避免策略.

在生成計算拓?fù)鋱D后,對整個海洋同化數(shù)據(jù)進(jìn)行分類,分為需要同化區(qū)域與不需要同化區(qū)域.對于需要同化區(qū)域則根據(jù)上文的負(fù)載均衡算法進(jìn)行基于負(fù)載均衡的任務(wù)劃分以及同化數(shù)據(jù)讀取、分發(fā)和計算.對于不需要同化的區(qū)域,則可以設(shè)置一些Reader進(jìn)行讀取和寫回,這部分區(qū)域雖然不用計算,但是為了生成全球海洋氣候的分析場,這些數(shù)據(jù)也應(yīng)該寫回到最后的分析場中.

Fig.14 The strategy of avoiding reading and communication redundancy圖 14 避免讀取、通信冗余策略

在本文的實驗中,不需要同化的區(qū)域占總海洋同化數(shù)據(jù)的60%左右.對于負(fù)責(zé)這部分讀取和寫回的Reader 與其他進(jìn)程相互獨立,可以獨立執(zhí)行.因此在生成計算量分布圖后,這部分進(jìn)程可以在其他進(jìn)程進(jìn)行計算和讀取通信的同時,并行地對不需要同化的數(shù)據(jù)進(jìn)行寫回.這樣的數(shù)據(jù)讀取和寫回,可以完全被其他進(jìn)程的同化計算所掩蓋掉,可以減少整體程序大量的數(shù)據(jù)讀取通信和寫回的時間.經(jīng)過上述的優(yōu)化,計算進(jìn)程由于只需要讀取通信需要同化的40%的區(qū)域,因此整體的讀取和通信量大大減少,讀取和通信時間也大大減少.與此同時,雖然有一些海洋區(qū)域不需要進(jìn)行同化,但是如果將其分發(fā)給計算節(jié)點,由于計算節(jié)點需要對海洋格點逐個進(jìn)行遍歷因此仍會存在一些判定處理的時間,在將這部分不需要同化計算的區(qū)域篩選出來后,只將需要同化計算的部分劃分給計算節(jié)點,計算節(jié)點整體的同化計算效率也大大提升,同化計算時間也大大減少.

5 實驗分析

本文采用的實驗平臺分別是天河2 號超算集群和曙光7000 超算集群,這2 個平臺所使用的數(shù)據(jù)集參數(shù)分別如表1 和表2 所示.

5.1 天河上各部分性能對比測試

1)讀取時間測試

本文分別對I/O 代理程序的讀取通信策略和基于Lustre 文件存儲架構(gòu)的、基于3 層通信的讀取通信策略進(jìn)行了對比測試.如圖15 所示,I/O 代理程序的讀取較為耗時,本文程序的讀取時間不僅遠(yuǎn)小于I/O 代理程序的讀取時間,且隨核數(shù)的增加而基本保持在2 s 左右.

Table 1 Parameters of Data Set Used on Tianhe表 1 天河上使用的數(shù)據(jù)集參數(shù)

Table 2 Parameters of Data Set Used on Sugon 7000表 2 曙光7000 上使用的數(shù)據(jù)集參數(shù)

Fig.15 Comparison of reading time between the two algorithms圖 15 2 種算法讀取時間對比

2)通信時間測試

從圖16 可以看出I/O 代理程序的通信時間隨核數(shù)的增加而線性增加,而本文程序的通信時間隨著核數(shù)的增加基本保持不變.

Fig.16 Comparison of communication time between the two algorithms圖 16 2 種算法通信時間對比

3)數(shù)據(jù)同化時間測試

本文負(fù)載均衡優(yōu)化前后的數(shù)據(jù)同化時間對比如圖17 所示.基于計算拓?fù)鋱D的負(fù)載均衡算法充分利用了可用的核數(shù),避免了少部分核被分配大量計算量而大部分核只負(fù)責(zé)少部分甚至沒有分配計量的情況,充分利用了超算集群的計算性能,使得同化時間大大縮短.

Fig.17 Comparison of assimilation time between the two algorithms圖 17 2 種算法同化時間對比

4)寫回時間測試

本文分別對2 種算法的寫回時間做了測試,如表3 所示.I/O 代理程序的寫回時間十分的長,而且在實際測試時表現(xiàn)得十分不穩(wěn)定,本文程序的寫回時間不僅遠(yuǎn)小于I/O 代理程序的寫回時間且隨著核數(shù)的增加基本保持穩(wěn)定.

Table 3 Comparison of Write Back Time Between the Two Algorithms表 3 2 種算法的寫回時間對比

5)預(yù)同化時間測試

本文預(yù)同化過程涉及在千核下5.4 GB 文件的讀取和分發(fā).從圖18 可以看出.在未優(yōu)化前,預(yù)同化時間隨著核數(shù)的增加呈線性增長;優(yōu)化后隨著核數(shù)的增加預(yù)同化時間基本保持穩(wěn)定.

Fig.18 Comparison of pre-assimilation time before and after optimization圖 18 優(yōu)化前后預(yù)同化時間對比

6)整體性能測試

本文將展示整體并行同化程序優(yōu)化前后的運行時間對比.如圖19 所示,分別顯示了I/O 代理程序、本文非計算重疊版本和本文最終優(yōu)化版本的程序整體運行時間對比.從圖中可以看出I/O 代理程序的計算、讀取和寫回時間都比較大.雖然計算時間隨著核數(shù)的增加而明顯減少,但是文件的I/O 讀取通信時間隨著核數(shù)的增加而逐漸增加.同時I/O 代理程序的寫回時間隨著核數(shù)增加也十分不穩(wěn)定.在非計算重疊算法中,可以看出程序的寫回時間和預(yù)同化時間仍占據(jù)一定的比重,且預(yù)同化時間隨著核數(shù)的增加而增加.在本文最終的優(yōu)化版本中除了計算、讀取通信和寫回重疊的運行時間以外,其他部分的運行時間占總時間的比例不大.而且對比前后2 種優(yōu)化算法,可以明顯看出讀取通信以及寫回的時間,在計算時間足夠長時實現(xiàn)了完全的重疊.同時也可以看出由于篩選出了60%不需要同化計算的區(qū)域,讀取和通信的數(shù)據(jù)量大大減少,本文最終優(yōu)化版本的讀取和通信時間大大減少.而且在同化計算中由于省去了60%同化區(qū)域判定處理的時間,整體海洋數(shù)據(jù)同化程序的同化計算時間也大大減少.總體來說經(jīng)過重疊優(yōu)化后本文最終優(yōu)化版本相比于之前優(yōu)化的版本性能得到了很大的提升.在4 000 核下本文程序的整體性能相比I/O 代理程序提升了18 倍.

Fig.19 The overall running time of thousand cores program on Tianhe圖 19 天河上千核程序整體運行時間

5.2 曙光7000 上整體性能對比測試

Fig.20 The overall running time of thousand DCU card program on Sugon圖 20 曙光上千塊DCU 卡程序整體運行時間

在曙光7000 超算集群上本文算法仍然表現(xiàn)優(yōu)異.由于節(jié)點布局與天河不同,本文在節(jié)點分配上做了調(diào)整.曙光7000 是Parastor 文件系統(tǒng),并且未提供用戶處理節(jié)點(類似于Lustre 文件系統(tǒng)的OST)的接口,但節(jié)點(OST)、節(jié)點池(OSS)眾多,更加偏向于隨機(jī)散列的讀取,因此本文在文件讀取和通信優(yōu)化上取消了Reader 這一層,采用Master 直接和OST 進(jìn)行交互,以最大限度地利用Parastor 節(jié)點OST 的獨立通道,提高并行讀取效率.取消Reader 這一層,Master直接和Split 組進(jìn)行交互,也將提升Master 到計算進(jìn)程的通信效率.在圖20 中分別列出了預(yù)同化、讀取、通信、同化計算和寫回時間,其他比重過小的時間這里未做展示.由于曙光7000 超算集群上的數(shù)學(xué)庫還不完善,本文使用的MAGMA 數(shù)學(xué)庫計算效率很低,雖然使用了DCU 卡進(jìn)行加速,但是其計算速度仍慢于天河上的MKL 庫函數(shù),但這并不影響本文算法程序與I/O 代理程序性能的對比.在使用相同庫函數(shù)的情況下本文算法程序性能明顯優(yōu)于I/O 代理程序,在4 000 塊卡下整體性能提升8 倍左右.

6 結(jié)束語

本文主要介紹了基于LICOM 模式的海洋數(shù)據(jù)同化程序的優(yōu)化算法.分別提出了基于計算拓?fù)鋱D的負(fù)載均衡策略,基于Lustre 文件存儲架構(gòu)的讀取、寫回和通信策略,并在此基礎(chǔ)上實現(xiàn)了計算、讀取通信、寫回的3 層重疊.相比于I/O 代理程序,本文程序的各項性能都得到了顯著的提升.在天河上,4 000 核下本文程序整體性能提升18 倍.在曙光7000 上,4 000塊卡下,整體性能提升了8 倍左右.

但是本程序仍有可優(yōu)化的空間,由于隨著核數(shù)的增加計算時間不斷地縮短,而I/O 時間隨著核數(shù)的增加不會減少,因此當(dāng)核數(shù)足夠大時計算的時間會小于I/O 時間,計算時間無法再掩蓋I/O 時間,這樣會限制程序的可拓展性上限.由于曙光7000 的存儲架構(gòu)以及節(jié)點分布特性與天河不同,再加上曙光7000文件系統(tǒng)用戶接口的限制,雖然本文針對其做了相應(yīng)的優(yōu)化,盡可能地將Parastor 文件系統(tǒng)的節(jié)點(OST)利用起來,但是其仍達(dá)不到像天河Lustre 文件系統(tǒng)一樣極限的I/O 帶寬利用率.因此在未來的工作中準(zhǔn)備進(jìn)一步優(yōu)化I/O 時間以提升程序的可拓展性上限,并對曙光7000 的文件存儲架構(gòu)做進(jìn)一步的研究,對曙光7000 上的程序做進(jìn)一步的優(yōu)化.

作者貢獻(xiàn)聲明:蔡迪負(fù)責(zé)論文相關(guān)的實驗設(shè)計、代碼實現(xiàn)、實驗測試以及論文撰寫等工作;洪學(xué)海負(fù)責(zé)前期實驗方案的設(shè)計討論與論文修改;肖俊敏負(fù)責(zé)論文結(jié)構(gòu)的討論和修改;譚光明負(fù)責(zé)實驗補(bǔ)充和設(shè)計討論,并指導(dǎo)論文修改.

猜你喜歡
格點進(jìn)程代理
帶有超二次位勢無限格點上的基態(tài)行波解
一種電離層TEC格點預(yù)測模型
債券市場對外開放的進(jìn)程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
代理圣誕老人
帶可加噪聲的非自治隨機(jī)Boussinesq格點方程的隨機(jī)吸引子
代理手金寶 生意特別好
格點和面積
復(fù)仇代理烏龜君
社會進(jìn)程中的新聞學(xué)探尋
我國高等教育改革進(jìn)程與反思
大理市| 云安县| 定南县| 合肥市| 区。| 镇江市| 平江县| 玛曲县| 敦化市| 老河口市| 临江市| 太和县| 青田县| 竹山县| 开原市| 永和县| 延边| 德江县| 平远县| 郓城县| 和林格尔县| 伊春市| 新和县| 三台县| 兴安盟| 苍溪县| 古交市| 临沭县| 南华县| 绥滨县| 宁南县| 长治市| 伊川县| 清镇市| 吴桥县| 武汉市| 勐海县| 铜梁县| 卢氏县| 丽水市| 图们市|