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

        ?

        水質(zhì)預(yù)報系統(tǒng)的MPI+OpenMP并行優(yōu)化研究

        2015-03-18 05:21:48李春
        關(guān)鍵詞:膠州灣線程進(jìn)程

        李春

        (河北工程大學(xué)信息與電氣工程學(xué)院,河北邯鄲056038)

        隨著海洋各方面數(shù)據(jù)的完善及空間分辨率的提高,在使得預(yù)報更加準(zhǔn)確的同時,預(yù)報系統(tǒng)的計算量也越加龐大。在高性能計算機(jī)上對預(yù)報系統(tǒng)進(jìn)行并行開發(fā)是滿足研究人員對計算效率需求的主要方法。目前 國內(nèi)外已有許多基于 MPI或OpenMP等并行技術(shù)的應(yīng)用和研究,但由于海洋生態(tài)動力學(xué)的復(fù)雜性,基于二者的混合并行技術(shù)應(yīng)用于海洋生態(tài)預(yù)報上的研究還非常少。

        多核心集群系統(tǒng)的分布-共享體系結(jié)構(gòu)使其既適合以MPI為代表的分布式存儲并行計算技術(shù),也適合以O(shè)penMP為代表的共享存儲并行計算技術(shù),又可使用兩種方法結(jié)合的混合并行計算[1-3]。以膠州灣水質(zhì)預(yù)報系統(tǒng)為例,膠州灣水質(zhì)預(yù)報系統(tǒng)是對膠州灣水質(zhì)進(jìn)行監(jiān)測的短期預(yù)報系統(tǒng),其純MPI非阻塞并行程序比聚合通信方式并行版本具有更好的加速比和并行效率,但非阻塞通信對系統(tǒng)內(nèi)存開銷較大[4]。根據(jù)系統(tǒng)的串行程序的特點,在其MPI并行的基礎(chǔ)上,繼續(xù)進(jìn)行OpenMP并行,對其純MPI并行模型進(jìn)行優(yōu)化,形成MPI+OpenMP混合并行編程模型,可以達(dá)到更好的并行效率和加速比。

        1MPI+OpenMP混合編程實現(xiàn)原理

        并行程序的實現(xiàn)需要高性能計算機(jī)和相應(yīng)的并行計算軟件開發(fā)運行環(huán)境。由于多核心處理器具有高性能低功耗的特點,裝備了多核心處理器的集群系統(tǒng)也在保持了較低功耗的同時大大增加了集群的計算核心數(shù)量,其較高的性價比使得多核心集群在高性能領(lǐng)域占據(jù)的比重越來越大。多核心集群節(jié)點內(nèi)的計算核心共享相同的全局內(nèi)存,具有對稱多處理系統(tǒng)的共享存儲特點。同時,集群的不同節(jié)點間具有相互獨立的內(nèi)存,并通過網(wǎng)絡(luò)連接起來,這樣又具有分布式存儲系統(tǒng)的特點,這就構(gòu)成了多核心集群的分布-共享存儲結(jié)構(gòu)。MPI應(yīng)用于分布式存儲并行系統(tǒng),用于開發(fā)基于消息傳遞的并行程序。MPI函數(shù)庫有消息發(fā)送和接收、同步、廣播等在內(nèi)的多種功能,可以在分布的節(jié)點間通過網(wǎng)絡(luò)互傳信息。OpenMP是一種應(yīng)用于共享存儲并行計算機(jī)系統(tǒng)的并行編程規(guī)范,提供在共享存儲計算機(jī)平臺上進(jìn)行編程所需要的并行、同步等功能,是基于線程的并行編程模型。在共享存儲結(jié)構(gòu)中,多個處理器通過總線等方式與物理內(nèi)存相連接,各處理器共享相同的內(nèi)存空間,使得多個OpenMP線程可以訪問相同的一塊內(nèi)存空間,避免了線程之間的數(shù)據(jù)交換。雖然MPI也可移植到共享存儲的體系結(jié)構(gòu)中,但在共享存儲結(jié)構(gòu)中也需將內(nèi)存劃分成與所申請?zhí)幚砥鱾€數(shù)等同的份數(shù),再按照分布存儲進(jìn)行處理[5]。因此在共享存儲并行時一般采用OpenMP,而不是MPI,以減少時間和內(nèi)存的開銷。MPI與OpenMP都支持多種程序設(shè)計語言,如Fortran的多個版本和C、C++等,以及主流編譯器如Intel Compiler等也支持這兩種并行技術(shù)。以上為實現(xiàn)MPI+OpenMP混合并行提供了硬件和軟件支持。

        由于通信、延遲等問題,MPI的并行往往需要大的代碼粒度,通過消息傳遞并行在多核心集群的各節(jié)點之間,但無法有效地利用節(jié)點內(nèi)部的多核心處理器的計算能力。此時,將OpenMP在節(jié)點內(nèi)部進(jìn)行細(xì)粒度并行,既能將多核心處理器的內(nèi)存和計算核心充分利用起來,又可使程序并行更加充分,達(dá)到更好的并行粒度。因此,混合模型能夠有效挖掘計算機(jī)的處理能力,充分利用多核心集群的硬件資源,從而獲得較高的性能。

        2MPI+OpenMP混合模型實現(xiàn)

        2.1 水質(zhì)預(yù)報系統(tǒng)串行與純MPI程序分析

        為全面考慮外海、大氣以及陸源排放對海洋環(huán)境的影響,膠州灣示范區(qū)的模式主要由嵌套海洋水動力、海洋生態(tài)模式、大氣模式和陸域面源模式等耦合而成,其示意圖幾個部分作用如圖1所示。其中的海洋生態(tài)模式就是膠州灣的海洋生態(tài)模式,海洋生態(tài)模式包含膠州灣小區(qū)的水動力模塊和水質(zhì)模塊。

        由圖1可看出膠州灣水質(zhì)預(yù)報系統(tǒng)的主要計算部分在其海洋生態(tài)模塊,而整個系統(tǒng)最終輸出的監(jiān)測數(shù)值在海洋生態(tài)模塊的水質(zhì)模塊部分,水質(zhì)模塊的計算量占整個計算系統(tǒng)的一半以上,水動力模塊為水質(zhì)模塊的計算提供所需的邊界條件。水質(zhì)模塊首先經(jīng)過浮游植物光合作用、浮游動物捕食、浮游動植物呼吸死亡礦化等內(nèi)部過程的四級生態(tài)物質(zhì)變化過程,所有營養(yǎng)物質(zhì)在四級過程中都參與計算,但后一級過程是建立在前一級過程的基礎(chǔ)上進(jìn)行計算的??紤]徑流、流域面源輸入、大氣沉降、沉積物-水界面物質(zhì)通量、與外海物質(zhì)交換等外部過程,然后對包括氮硅(Si)、溶解氧(DO)、化學(xué)需氧量(COD)、浮游植物(PHY)、浮游動物(ZOO)、水體碎屑(DET)、總氮(TN)、總磷(TP)等12個變量進(jìn)行檢測[6],其中要進(jìn)行水平擴(kuò)散垂項擴(kuò)散方向計算、海底通量計算、化學(xué)變化和開邊界條件計算等,最后計算徑流通量。

        膠州灣水質(zhì)預(yù)報系統(tǒng)是基于空間差分網(wǎng)格中的C網(wǎng)格建立的,C網(wǎng)格應(yīng)用的是三維立體坐標(biāo)系統(tǒng)。系統(tǒng)中把監(jiān)測區(qū)域劃分為i*j*k個網(wǎng)格點進(jìn)行計算,根據(jù)預(yù)報目標(biāo)海域的水平分辨率及嵌套水動力部分計算出,適合膠州灣的實際網(wǎng)格點數(shù)為159*185*5,用U、V、ω分別表示水平 x和y方向及垂向z方向的水平速度和垂向速度,其中每一個點的濃度值都受上下左右速度的影響,其示意圖如圖2。

        膠州灣水質(zhì)預(yù)報系統(tǒng)采用Fortran語言編寫,其數(shù)據(jù)遵循列優(yōu)先存儲,因此,為減少數(shù)據(jù)傳遞的通信量從而減少數(shù)據(jù)傳遞所消耗的時間,在MPI并行設(shè)計中選擇i、j、k三個方向的j方向劃分任務(wù)區(qū)域。若向集群申請n個節(jié)點,那么計算任務(wù)將會被劃分成n個子任務(wù),每個子任務(wù)每一層包含j/n列行整數(shù)網(wǎng)格點,然后就會是n個進(jìn)程分別對各子任務(wù)進(jìn)行計算。

        由于MPI并行系統(tǒng)采用非阻塞通信的方式,初始化完成后,劃分每個進(jìn)程所要計算的區(qū)域,然后對水質(zhì)模塊計算元素濃度所需的相鄰區(qū)域的邊界值進(jìn)行傳遞,之后是水動力模塊,這樣就可以在后臺程序進(jìn)行數(shù)據(jù)傳遞的過程中,可在前臺同時進(jìn)行水動力方面的計算,為水質(zhì)模塊計算做好準(zhǔn)備。等待所有數(shù)據(jù)傳輸完畢,進(jìn)入水質(zhì)部分的計算并輸出結(jié)果。最后在程序完全結(jié)束后,釋放并行環(huán)境。

        但是,非阻塞通信模式在使通信和計算最大化同步的同時,存儲消息的緩沖區(qū)也隨之增大,這無形中也使得系統(tǒng)的開銷加大。因此,對于計算量龐大的膠州灣水質(zhì)預(yù)報系統(tǒng)的純MPI非阻塞通信并行版本在多核心集群上運行時,沒有最大化利用多核心集群的分布共享混合體系結(jié)構(gòu)特點,不能充分發(fā)揮其計算性能,其較高的內(nèi)存開銷在一定程度上降低了系統(tǒng)的可擴(kuò)展性。

        2.2 混合并行模型系統(tǒng)設(shè)計實現(xiàn)

        將MPI+OpenMP混合并行計算技術(shù)運用到膠州灣水質(zhì)預(yù)報系統(tǒng)的水質(zhì)模塊,是對其純MPI版本的一種優(yōu)化。MPI+OpenMP混合編程模型通常采用層次結(jié)構(gòu),即MPI并行在集群的上層-具有分布存儲體系結(jié)構(gòu)的各節(jié)點之間-用于粗粒度并行,OpenMP并行于下層-節(jié)點內(nèi)部具有共享內(nèi)存體系結(jié)構(gòu)的多核處理器的各核之間-提供輕量級線程,用于細(xì)粒度并行。MPI+OpenMP混合編程模型易于實現(xiàn),通過減少 MPI進(jìn)程數(shù),增加OpenMP線程數(shù),避免出現(xiàn)較大的負(fù)載不平衡和通信開銷,比單純用MPI編程具有更好的性能和更低的代價,實現(xiàn)更好的并行粒度。MPI+OpenMP混合模型并行執(zhí)行示意圖如圖3。

        對于fortran語言版本的膠州灣水質(zhì)預(yù)報系統(tǒng),其規(guī)模為159*185*5,根據(jù)其列優(yōu)先的數(shù)據(jù)存儲特點,從j方向劃分任務(wù),各進(jìn)程之間數(shù)據(jù)傳遞量會相對較少,因此,設(shè)計MPI并行在列,每個進(jìn)程計算其列的一個子區(qū)間,其行保有完整性,所以用OpenMP的”!$OMP PARALLEL DO“結(jié)構(gòu)在數(shù)據(jù)存儲較為間斷的i方向進(jìn)行線程級并行,利用OpenMP線程共享內(nèi)存的特點避免了數(shù)據(jù)的傳遞。而k方向只有 5層,不對其進(jìn)行劃分。OpenMP作為一種適用于共享存儲平臺的并行計算技術(shù),能夠有效利用節(jié)點計算機(jī)的多核心處理器進(jìn)行線程級別的并行,使多個并行的線程共享訪問分塊邊界處具有依賴關(guān)系的數(shù)據(jù),從而降低消息傳遞帶來的效率影響[7]。

        設(shè)申請size個節(jié)點,每個節(jié)點使用threads_n個處理器核,則系統(tǒng)將會被分成size個進(jìn)程,每個進(jìn)程計算185/size列行整面,每個進(jìn)程中并行threads_n個線程,又將行劃分成threads_n份,每個線程計算159/thread_n行。聲明MPI各進(jìn)程并行區(qū)間的開始值和結(jié)束值分別為jbegin_col和jend_col,則

        其中myid為進(jìn)程號,jm為網(wǎng)格列數(shù),size為進(jìn)程數(shù)。

        聲明OpenMP并行的線程數(shù)量為全局變量thread_n,以便在其他需要OpenMP并行的相應(yīng)子函數(shù)中定義全局變量X后,通過omp_set_num_threads(X)語句進(jìn)行設(shè)定線程數(shù)量,以后通過修改主函數(shù)中thread_n的值來控制各函數(shù)OpenMP并行的線程數(shù)。

        在下層并行的OpenMP線程數(shù)量可以根據(jù)運算需要及集群節(jié)點的核心數(shù)量進(jìn)行一定的調(diào)整,其最大的線程數(shù)量不要超過節(jié)點計算機(jī)處理器核心的數(shù)量[8],例如,集群節(jié)點的計算核心為8個,那么設(shè)置 OpenMP線程數(shù)量的范圍就在1~8之間。

        以一級生態(tài)過程為例,其混合并行部分代碼如下:

        MPI+OpenMP混合并行膠州灣水質(zhì)預(yù)報系統(tǒng)水質(zhì)模塊模型中,上層并行的每一個MPI進(jìn)程內(nèi)部包含多個OpenMP線程用于下層的線程級并行處理,多個并行的線程分別對不同的數(shù)據(jù)分塊進(jìn)行運算求解并可以直接訪問相鄰分塊的邊界數(shù)據(jù),多線程共享訪問需要對線程實施同步操作以保證邊界數(shù)據(jù)訪問的正確性,線程同步操作會對系統(tǒng)效率產(chǎn)生負(fù)面影響[9]。

        對于系統(tǒng)的最后輸出部分,考慮到各進(jìn)程并行的負(fù)載均衡問題,往往把水質(zhì)部分的輸出和水動力部分的輸出分開,在根進(jìn)程中輸出水質(zhì)部分的數(shù)據(jù),在其他任一進(jìn)程中輸出水動力部分的數(shù)據(jù)。

        3 實驗結(jié)果及分析

        為了驗證膠州灣水質(zhì)預(yù)報系統(tǒng)MPI+OpenMP混合并行模型的正確性,本實驗將混合模型在多核心集群上進(jìn)行了測試,與串行和原有非阻塞MPI并行模型的結(jié)果一致,實驗證明 MPI+OpenMP的混合并行模型是可靠的。實驗所用多核心集群有20個節(jié)點,由高速千兆網(wǎng)互聯(lián),每個節(jié)點的處理器有8個核。

        一般情況下,對于一定規(guī)模的問題在采用純MPI進(jìn)行并行時,程序的并行性能并不隨著進(jìn)程數(shù)量的增加而提高,它會有一個最優(yōu)值,這個時候使用混合編程會達(dá)到一個較好的加速比[10]。因為系統(tǒng)是短期預(yù)報且只預(yù)測1~2 d的水質(zhì)狀況,給出的測試數(shù)據(jù)為預(yù)測2d的實驗數(shù)據(jù)。其水質(zhì)模塊純MPI非阻塞通信并行性能測試結(jié)果如表1。將表1中執(zhí)行時間、加速比分別與進(jìn)程個數(shù)的關(guān)系轉(zhuǎn)換為折線圖的形式,如圖4。

        表1 中的性能結(jié)果及圖4中折線走勢表明,在純MPI非阻塞通信模式下,當(dāng)進(jìn)程個數(shù)不超過8時,系統(tǒng)并行效率基本在80%以上,當(dāng)進(jìn)程數(shù)繼續(xù)增加,程序依然保持加速,但趨勢已明顯緩慢。

        表1 非阻塞通信性能測試結(jié)果Tab.1 Performance test results of non - blocking communications

        混合并行模型不同進(jìn)程數(shù)不同線程數(shù)的運行時間及加速比折線圖分別如圖5、圖6所示。綜合圖4、5、6可得出,對水質(zhì)模塊的行和列都并行的混合并行模型比只在列并行的純MPI并行系統(tǒng)具有很大優(yōu)勢,當(dāng)進(jìn)程數(shù)等于2時,隨線程數(shù)在1~8范圍內(nèi)增加,其加速比接近線性加速比,當(dāng)線程數(shù)為8時,其加速比已超過11,比純MPI并行進(jìn)程數(shù)為8時還高出4.46。當(dāng)進(jìn)程數(shù)為4線程數(shù)為8時,其加速比已超過16,計算時間比串行程序縮短了約94%。當(dāng)進(jìn)程數(shù)為8線程數(shù)也為8時,能夠節(jié)省約95%的運算時間,且加速比已超過20。這些都說明OpenMP線程的增加對并行系統(tǒng)所帶來的負(fù)面影響比MPI小的多,所以混合并行編程模型應(yīng)用到膠州灣水質(zhì)預(yù)報系統(tǒng)是很合適的。

        4 結(jié)論

        對于純MPI非阻塞并行模型達(dá)到的加速比和并行效率,在MPI+OpenMP混合模型中通過減少MPI進(jìn)程數(shù),增加OpenMP線程級并行,在不增加通信開銷的前提下,也可以很好的實現(xiàn),既使系統(tǒng)保持了良好的可擴(kuò)展性,又節(jié)約了集群的內(nèi)存資源。

        [1]RABENSEIFNER R,HAGER G,JOST G.Hybrid MPI/OpenMP parallel programming on clusters of multi-core SMP nodes[C].Parallel,Distributed and Network -based Processing,2009 17th Euromicro International Conference on.IEEE,2009:427-436.

        [2]ADHIANTO L,CHAPMAN B.Performance modeling of communication and computation in hybrid MPIand OpenMP applications[J].Simulation Modelling Practice and Theory,2007,15(4):481-491.

        [3]CHORLEY M J,WALKER D W,GUEST M F.Hybrid message-passing and shared-memory programming in a molecular dynamics application on multicore clusters[J].International Journal of High Performance Computing Applications,2009,23(3):196 -211.

        [4]牛沛.并行計算在膠州灣水質(zhì)預(yù)報系統(tǒng)中的應(yīng)用研究[D].邯鄲:河北工程大學(xué),2012.

        [5]馮云,周淑秋.MPI+OpenMP混合并行編程模型應(yīng)用研究[J].計算機(jī)應(yīng)用系統(tǒng),2006,(2):86 -89.

        [6]閻菊,鮑獻(xiàn)文,王 海,等.膠州灣污染物COD的三維擴(kuò)散與輸運研究[J].環(huán)境科學(xué)研究,2001,14(2):14-17.

        [7]KRAWEZIK G,CAPPELLO F.Performance comparison of MPI and OpenMP on shared memory multiprocessors[J].Concurrency and Computation:Practice and Experience,2006,18(1):29-61.

        [8]DAGUM L,MENON R.OpenMP:an industry standard API for shared - memory programming[J].Computational Science& Engineering,IEEE,1998,5(1):46-55.

        [9]周 偉.并行計算在海洋水齡譜模擬中的應(yīng)用研究[D].邯鄲:河北工程大學(xué),2013.

        [10]王惠春.基于SMP集群的MPI-OpenMP混合并行編程模型研究與應(yīng)用[D].湘潭:湘潭大學(xué),2008.

        猜你喜歡
        膠州灣線程進(jìn)程
        債券市場對外開放的進(jìn)程與展望
        中國外匯(2019年20期)2019-11-25 09:54:58
        平流霧罩,海上蓬萊膠州灣
        淺談linux多線程協(xié)作
        膠州灣夏季鹽度長期輸運機(jī)制分析
        社會進(jìn)程中的新聞學(xué)探尋
        我國高等教育改革進(jìn)程與反思
        Linux僵死進(jìn)程的產(chǎn)生與避免
        Linux線程實現(xiàn)技術(shù)研究
        么移動中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
        JAVA多線程同步解決生產(chǎn)者—消費者問題
        国产人妖伦理视频在线观看| 国产精品多人P群无码| 春色成人在线一区av| 日本熟女视频一区二区三区| 男女无遮挡高清性视频| 免费人成网ww555kkk在线| 香蕉视频在线观看国产| 亚洲伊人久久综合精品| 人妖一区二区三区在线| 女的扒开尿口让男人桶30分钟| 亚洲综合色丁香婷婷六月图片| 国产精品女丝袜白丝袜| 中文字幕人妻久久久中出| 国产美女做爰免费视频| 97久久久久人妻精品专区| 极品粉嫩小仙女高潮喷水视频| 国产一级黄色录像大片| 天天狠天天添日日拍| 狠狠色狠狠色综合| 亚洲视频中文字幕更新| 人妻精品视频一区二区三区| 精品国产午夜理论片不卡| 国产高清吃奶成免费视频网站| 久久久国产精品三级av| 欧洲乱码伦视频免费| 亚洲av无码精品色午夜蛋壳| 国产成人香蕉久久久久| 女同恋性吃奶舌吻完整版| 精品久久久久久无码人妻蜜桃| 久久香蕉国产线看观看网| 亚洲av有码精品天堂| 黄片视频免费在线播放观看| 色欲人妻综合网| 久久久久一| 中文字幕亚洲精品专区| 亚洲成av人片在www| 99精品成人片免费毛片无码| 国产av在线观看91| 4hu四虎永久免费地址ww416| 把插八插露脸对白内射| 久久久久无码中文字幕|