• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種提升數(shù)值預報產(chǎn)品生成效率的多進程算法

    2022-12-27 11:32:52楊玉紅李永生尹天翔
    廣東氣象 2022年6期
    關鍵詞:解碼復雜度進程

    楊玉紅,李永生,尹天翔

    (廣東省氣象探測數(shù)據(jù)中心,廣東 廣州 510640)

    近年來,隨著大數(shù)據(jù)等信息技術的飛速發(fā)展,各行各業(yè)信息化建設呈現(xiàn)出日新月異的發(fā)展景象,氣象行業(yè)更是如此[1-2]。信息化帶來海量數(shù)據(jù),既是一種機遇,也是一種挑戰(zhàn)[3-4]。一方面,實時數(shù)據(jù)時空分辨率精細化導致數(shù)據(jù)量劇增;另一方面應用對數(shù)據(jù)的時效性和完整性要求更高。如何完成海量數(shù)據(jù)的高速處理,是應用面臨的巨大挑戰(zhàn)[5-6]。

    數(shù)值預報產(chǎn)品作為“大數(shù)據(jù)”的典型,其處理方法和處理速度一直是眾人關注的焦點[7]。近年來,隨著空間分辨率越來越高、預報時間間隔越來越短,高精度集合預報產(chǎn)品越來越廣泛被業(yè)務應用,因其巨大的數(shù)據(jù)量與時效性要求,對實時處理技術提出近乎嚴苛的要求,處理效率直接影響產(chǎn)品能否在業(yè)務中被使用。本研究對南海臺風集合預報產(chǎn)品的并行算法進行研究,引入了python多進程處理模塊,探究多進程處理在數(shù)值預報領域的作用效果。

    1 傳統(tǒng)串行數(shù)據(jù)預報產(chǎn)品解碼算法

    數(shù)值預報文件的存儲格式有很多種,比如二進制格式、文本格式、GRIB1格式、GRIB2格式[8]、NETCDF格式[9-10]等。為了便于管理與應用,廣東省氣象探測數(shù)據(jù)中心建立了“廣東省氣象格點資料服務平臺”,服務內(nèi)容之一就是將多途徑收集的各種數(shù)值預報資料統(tǒng)一加工,生成便于存儲和訪問的“自有”NETCDF格式產(chǎn)品庫。該產(chǎn)品庫數(shù)據(jù)組織形式統(tǒng)一、產(chǎn)品周期統(tǒng)一,給后期無論是接口服務,還是繪圖服務都提供了極大的便利。

    但是,隨著高精度集合預報產(chǎn)品的出現(xiàn),服務平臺原有的解碼效率又成為業(yè)務關注的焦點。以廣州熱帶海洋氣象研究所研發(fā)的南海臺風集合預報產(chǎn)品為例,其特點是分辨率高、格點數(shù)多、集合成員數(shù)目多、數(shù)據(jù)量龐大;與歐洲集合預報產(chǎn)品相比,南海臺風集合預報產(chǎn)品的GRIB數(shù)據(jù)量增加了5倍,轉(zhuǎn)換為NetCDF格式后,數(shù)據(jù)量更是增加至10倍以上(表1)。

    表1 南海臺風集合預報產(chǎn)品與歐洲集合預報產(chǎn)品參數(shù)對比

    1.1 基于簡短目錄的數(shù)值預報解碼方法

    基于簡短目錄的數(shù)值預報產(chǎn)品解碼方法,是搭建氣象格點資料服務平臺以來的一種能有效提高生成產(chǎn)品效率的方法[11]。

    簡短目錄是GRIB文件的頭信息,記錄了GRIB文件的記錄編號、二進制位置、時間、參數(shù)名稱、層次值等信息。

    算法原理:先將所有GRIB文件全部轉(zhuǎn)換為二進制文件,同時輸出該文件的簡短目錄列表;然后將簡短目錄列表根據(jù)要素名稱進行分類后得到新的簡短目錄列表;最后,對新簡短目錄列表進行遍歷,根據(jù)新簡短目錄列表要素位置信息定位二進制數(shù)據(jù)文件,將不同要素的數(shù)據(jù)寫入不同的NetCDF文件中。

    基于簡短目錄的數(shù)值預報產(chǎn)品解碼方法特點,將數(shù)值預報產(chǎn)品不同要素進行分類的階段使用了簡短目錄進行操作,而不是直接操作原始數(shù)據(jù),操作數(shù)據(jù)量大大減少,節(jié)省了解碼時間。

    1.2 算法復雜度

    由于GRIB與NetCDF是兩種不同的編碼,必須遍歷一次所有的數(shù)據(jù)并重組,因此從“漸近時間復雜性”的角度無法對算法進行優(yōu)化。

    與時間復雜度類似,空間復雜度是指算法在計算機內(nèi)執(zhí)行時所需存儲空間的度量。記作:S(n)=O(f(n)),一般所討論的是除正常占用內(nèi)存開銷外的輔助存儲單元規(guī)模。簡短目錄列表解碼方法中,每次只需讀取DataUnit大小數(shù)據(jù),因此,S(n)=DataUnit。

    由于該算法讀寫頻繁,因此IO對算法的影響不可忽視:

    其中,DecodeData為轉(zhuǎn)換后二進制文件;GribFile表示原始GRIB文件;VarType為按要素分類后的新簡短目錄列表;DataUnit為經(jīng)度乘以緯度范圍的格點場數(shù)據(jù)量。

    1.3 數(shù)值預報算法的復雜度

    根據(jù)算法復雜度公式,將歐洲集合預報產(chǎn)品的各個參數(shù)代入式(1)(R代表讀操作、W代表寫操作,將表1中各參數(shù)代入1.2節(jié)式(1)):

    高空要素:S(n)=(181×111×4 Byte)=78.48 K

    地面要素:S(n)=(281×161×4 Byte)=176.72 K

    IO(n)=63×(R+R+W+W)+63×51×(7×11+21)R=315 000R+126W

    將南海臺風集合預報產(chǎn)品的各個參數(shù)代入公式:

    S(n)=981×587×4 Byte=2.20 M

    IO(n)=3 630×(R+R+W+W)+3 630×31×(6×5+10)R=4 508 460R+7 260W

    由表2可以看出,南海臺風集合預報產(chǎn)品,無論是在空間復雜度還是IO復雜度,較歐洲集合預報產(chǎn)品,都增加了至少10倍,IO寫操作甚至增加至60倍。歐洲集合預報產(chǎn)品從接收第一份GRIB數(shù)據(jù)文件開始,至所有文件轉(zhuǎn)換為NetCDF格式完畢,處理時間總計不超過40 min,解碼速度和效率完全能夠滿足業(yè)務使用需求;而南海臺風集合預報產(chǎn)品,在使用簡短目錄列表方法后,測試得到的運行時間約為3.5 h,是歐洲集合預報處理時間的5倍多。因此,需探求一種新的高效解碼方法來解決高精度數(shù)值預報產(chǎn)品解碼效率的問題。

    表2 兩個數(shù)值產(chǎn)品基于簡短目錄列表算法復雜度分析結(jié)果

    2 并行集合預報解碼算法

    通過簡短目錄列表解碼方法在解碼高精度集合預報產(chǎn)品時,由于無論是空間復雜度還是IO復雜度,都是普通數(shù)值預報產(chǎn)品的數(shù)十倍。經(jīng)測試,解碼一個時次南海臺風集合預報產(chǎn)品的所有要素,時間約為3.5 h。測試環(huán)境如表3所示。

    表3 測試環(huán)境服務器參數(shù)

    南海臺風集合預報產(chǎn)品的GRIB源文件生成時間為t+8 h至t+10 h,若加上解碼時間3.5 h,那么NetCDF預報產(chǎn)品的生成時間將在t+11.5 h至13.5 h,超出了業(yè)務時間容忍度,如無法在早間會商時使用等。因此,探求一種高效的解碼方式,將高精度集合預報產(chǎn)品融入到當前業(yè)務中顯得尤為重要。

    2.1 多進程處理

    由于廣東省氣象局使用的數(shù)值預報產(chǎn)品對不同的要素是單獨處理、單獨存放,按照要素名生成對應的NetCDF文件。鑒于要素相互獨立,各要素間不存在前置處理或其他依存關系,多進程處理不會出現(xiàn)數(shù)據(jù)死鎖、共享資源鎖等影響處理速度的情況,因此可以考慮采用多進程處理方法來提高解碼效率,降低程序運行時間。

    然而,多進程處理方法需要考慮服務器內(nèi)存是否足夠、IO讀寫能力是否足夠,進程數(shù)必須按照服務器的計算能力來調(diào)整,需要通過空間復雜度和IO復雜度的計算來確定適合的最大進程數(shù)。S(n)和IO(n)會隨著N個進程發(fā)生線性增長,變成N·S(n)和N·IO(n),進程總數(shù)會受到限制。

    2.2 多進程設計在南海臺風集合預報產(chǎn)品的應用

    考慮到南海臺風集合預報產(chǎn)品包含16個要素,根據(jù)解碼程序的設計流程,解碼算法在生成NetCDF要素產(chǎn)品時,每個要素單獨處理,文件獨立存放,最終生成16個NetCDF文件。圖1左側(cè)部分為解碼算法的輸入產(chǎn)品,即3 630個GRIB文件產(chǎn)品;右側(cè)部分為算法的輸出產(chǎn)品,即16個NetCDF要素產(chǎn)品。中間部分為解碼程序,以及由解碼程序生成的3個子進程。

    “廣東省氣象格點資料服務平臺”的調(diào)度程序是基于Python語言開發(fā)的,因此選擇使用Multiprocessing包的Pool模塊來完成并行調(diào)度算法無疑是一種最合適的方法。

    Multiprocessing包是Python中的多進程管理包,是跨平臺的多進程模塊,能夠像管理線程一樣管理進程。Pool模塊來自于Multiprocessing包,可以提供指定數(shù)量的進程供用戶調(diào)用,當有新的請求提交到Pool時,如果Pool池還沒有滿,就會創(chuàng)建一個新的進程來執(zhí)行請求。如果Pool池滿,請求就會告知等待,直到Pool池中有進程結(jié)束,才會創(chuàng)建新的進程來執(zhí)行這些請求。

    算法方案偽代碼如下:

    #定義【父進程】數(shù)值預報解碼算法(算法參數(shù)為要素名稱)

    #定義算法參數(shù)列表

    #使用多進程方式調(diào)用算法

    綜合分析可知,原算法父進程需要串行逐個處理與生成16個要素,如今使用并行解碼算法后,父進程根據(jù)進程池設置子進程個數(shù),創(chuàng)建子進程,然后由N個子進程并行完成16個要素的處理與生成工作,解碼時間將縮短為串行解碼方式的1/N,這將會大大提高了解碼效率。

    并行算法的效率跟算法的并行進程數(shù)密不可分,一定程度上,進程數(shù)量越多,算法的效率越高。但在并行高精度集合預報產(chǎn)品解碼算法中,由于算法需要使用空間換時間,為了更好的利用CPU資源,因此占用的內(nèi)存資源數(shù)量非常高,進程數(shù)受到服務器資源總數(shù)的限制。

    計算最大進程數(shù):首先,計算每時次每個要素在讀取過程中需要分配的內(nèi)存空間,計算方法:占用內(nèi)存空間=經(jīng)緯度格點數(shù)×層次數(shù)×預報時效數(shù)×成員數(shù)×4字節(jié)(FLOAT類型)

    通過計算,得出每時次每個要素需要占用內(nèi)存空間約為40 Gb,而“廣東省氣象格點資料服務平臺”中轉(zhuǎn)換服務器的內(nèi)存數(shù)目為128 Gb,因此,每次轉(zhuǎn)換過程中,最多啟動3個轉(zhuǎn)換進程,保證系統(tǒng)資源能夠承載服務正常運行。

    根據(jù)上述結(jié)論,測試南海臺風集合預報產(chǎn)品解碼程序子進程數(shù)量1至數(shù)量4時,程序運行時間與系統(tǒng)內(nèi)存使用情況。得到結(jié)論見表4。

    表4 南海臺風集合預報產(chǎn)品解碼程序運行時間與系統(tǒng)資源使用情況

    同樣,計算得出歐洲集合預報產(chǎn)品每時次每個要素需要占用內(nèi)存空間為14 Gb。因此,每次轉(zhuǎn)換過程中,最多啟動9個轉(zhuǎn)換進程,以保證服務器能夠正常運行。測試歐洲集合預報產(chǎn)品解碼程序子進程數(shù)量為1至9時,程序運行時間與系統(tǒng)內(nèi)存使用情況,所得結(jié)果如表5所示。

    表5 歐洲集合預報產(chǎn)品解碼程序運行時間與系統(tǒng)資源使用情況

    3 結(jié)論

    本研究提出了一種多進程數(shù)值預報產(chǎn)品解碼算法,旨在提高高精度數(shù)值預報產(chǎn)品等數(shù)據(jù)量較大的數(shù)值預報產(chǎn)品的處理效率。本算法結(jié)合數(shù)值預報簡短目錄解碼方法,利用數(shù)值預報產(chǎn)品解碼過程中各要素之前彼此隔離的特點,依據(jù)計算機架構(gòu)的局部性原理引入多進程計算方法,通過空間換時間,以達到提高數(shù)值預報解碼效率的目的。經(jīng)過實驗測試,得到以下結(jié)論:

    1)使用多進程計算在高精度集合預報產(chǎn)品解碼過程中確實可以提高解碼效率。

    2)在內(nèi)存容量和硬盤容量允許的前提下,并行子進程數(shù)目越多,計算效率越高,算法運行所需要的時間越少。

    3)確保系統(tǒng)資源足夠的前提下,設定子進程數(shù)據(jù)盡可能大,會提高算法運行效率。

    4)在保證計算機運算速度和方便實現(xiàn)多進程調(diào)度時,選擇Python或Go這類面向?qū)ο缶幊痰亩喾妒降挠嬎銠C語言,可以最大限度將業(yè)務計算和任務調(diào)度解耦。

    本研究的測試結(jié)果表明,基于Python的多進程數(shù)值預報產(chǎn)品解碼算法是可行的,而且將會大大提高程序的效能,為未來數(shù)值預報產(chǎn)品等大數(shù)據(jù)在業(yè)務中的應用提供了一種新的思路。

    猜你喜歡
    解碼復雜度進程
    《解碼萬噸站》
    解碼eUCP2.0
    中國外匯(2019年19期)2019-11-26 00:57:32
    債券市場對外開放的進程與展望
    中國外匯(2019年20期)2019-11-25 09:54:58
    一種低復雜度的慣性/GNSS矢量深組合方法
    NAD C368解碼/放大器一體機
    Quad(國都)Vena解碼/放大器一體機
    求圖上廣探樹的時間復雜度
    某雷達導51 頭中心控制軟件圈復雜度分析與改進
    出口技術復雜度研究回顧與評述
    社會進程中的新聞學探尋
    民主與科學(2014年3期)2014-02-28 11:23:03
    泰顺县| 正镶白旗| 禹州市| 邵阳市| 汉中市| 房山区| 宁都县| 砀山县| 雅安市| 治多县| 长顺县| 海晏县| 吐鲁番市| 密云县| 曲松县| 宽甸| 韩城市| 改则县| 金川县| 乐安县| 濉溪县| 乾安县| 北票市| 海兴县| 高陵县| 商城县| 乐陵市| 德清县| 开鲁县| 和田市| 谷城县| 丹东市| 八宿县| 临海市| 酉阳| 平果县| 鸡东县| 贵州省| 杭锦旗| 五常市| 茂名市|