亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2022-12-27 11:32:52楊玉紅李永生尹天翔
        廣東氣象 2022年6期
        關(guān)鍵詞:解碼復(fù)雜度進(jìn)程

        楊玉紅,李永生,尹天翔

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

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

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

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

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

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

        表1 南海臺(tái)風(fēng)集合預(yù)報(bào)產(chǎn)品與歐洲集合預(yù)報(bào)產(chǎn)品參數(shù)對(duì)比

        1.1 基于簡(jiǎn)短目錄的數(shù)值預(yù)報(bào)解碼方法

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

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

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

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

        1.2 算法復(fù)雜度

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

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

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

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

        1.3 數(shù)值預(yù)報(bào)算法的復(fù)雜度

        根據(jù)算法復(fù)雜度公式,將歐洲集合預(yù)報(bào)產(chǎn)品的各個(gè)參數(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

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

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

        2 并行集合預(yù)報(bào)解碼算法

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

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

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

        2.1 多進(jìn)程處理

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

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

        2.2 多進(jìn)程設(shè)計(jì)在南海臺(tái)風(fēng)集合預(yù)報(bào)產(chǎn)品的應(yīng)用

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

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

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

        算法方案?jìng)未a如下:

        #定義【父進(jìn)程】數(shù)值預(yù)報(bào)解碼算法(算法參數(shù)為要素名稱)

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

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

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

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

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

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

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

        表4 南海臺(tái)風(fēng)集合預(yù)報(bào)產(chǎn)品解碼程序運(yùn)行時(shí)間與系統(tǒng)資源使用情況

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

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

        3 結(jié)論

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

        1)使用多進(jìn)程計(jì)算在高精度集合預(yù)報(bào)產(chǎn)品解碼過程中確實(shí)可以提高解碼效率。

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

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

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

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

        猜你喜歡
        解碼復(fù)雜度進(jìn)程
        《解碼萬噸站》
        解碼eUCP2.0
        債券市場(chǎng)對(duì)外開放的進(jìn)程與展望
        一種低復(fù)雜度的慣性/GNSS矢量深組合方法
        NAD C368解碼/放大器一體機(jī)
        Quad(國(guó)都)Vena解碼/放大器一體機(jī)
        求圖上廣探樹的時(shí)間復(fù)雜度
        某雷達(dá)導(dǎo)51 頭中心控制軟件圈復(fù)雜度分析與改進(jìn)
        出口技術(shù)復(fù)雜度研究回顧與評(píng)述
        社會(huì)進(jìn)程中的新聞學(xué)探尋
        爽妇网国产精品| 乱人伦中文视频在线| 国产精品亚洲一区二区在线观看| 久久精品波多野结衣中文字幕| 国产精品亚洲美女av网站| 美女脱了内裤洗澡视频| 亚洲乱色伦图片区小说| 99久久久无码国产aaa精品| 亚洲av永久无码精品成人| 日韩美女av一区二区三区四区| 男女猛烈拍拍拍无挡视频| 国产免费又色又爽又黄软件| 午夜无码片在线观看影院y| 国产精品久久久黄色片| 国产精品久久久久久福利| 亚洲色偷偷综合亚洲av伊人| 日韩人妻无码精品二专区| av网站免费在线浏览| 欧美成人猛交69| 国产又爽又黄的激情精品视频| 日本中文字幕一区二区视频| 久久黄色国产精品一区视频| 人妻久久久一区二区三区| 亚洲高清无码第一| 日本在线观看一区二区视频| 风韵丰满熟妇啪啪区老老熟妇| 久久精品99久久香蕉国产色戒 | 一区二区三区日本高清| 国内女人喷潮完整视频| 国产精品视频牛仔裤一区| 亚洲精品中文字幕乱码人妻| 国产香蕉视频在线播放| a级毛片在线观看| 麻豆国产AV网站| 成人自拍一二在线观看| 小鲜肉自慰网站| 无遮挡中文毛片免费观看| 亚洲av资源网站手机在线| 亚洲av无码国产综合专区| 欧美日本日韩aⅴ在线视频| 国产蜜臀精品一区二区三区|