• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于“嵩山”超級(jí)計(jì)算機(jī)系統(tǒng)的大規(guī)模管網(wǎng)仿真

      2022-09-15 06:59:14楊周凡李冰洋謝景明劉勇杰
      計(jì)算機(jī)工程 2022年9期
      關(guān)鍵詞:嵩山模擬計(jì)算超級(jí)計(jì)算機(jī)

      楊周凡,韓 林,李冰洋,謝景明,韓 璞,劉勇杰

      (1.鄭州大學(xué) 信息工程學(xué)院,鄭州 450000;2.鄭州大學(xué) 國(guó)家超級(jí)計(jì)算鄭州中心,鄭州 450000)

      0 概述

      隨著世界各國(guó)對(duì)清潔能源需求的不斷增長(zhǎng),供水管道在能源結(jié)構(gòu)中發(fā)揮著重要的作用[1-2]。由于供水管道規(guī)模的擴(kuò)大,導(dǎo)致拓?fù)浣Y(jié)構(gòu)也越來(lái)越復(fù)雜[3-4]。供水管道中數(shù)值的準(zhǔn)確預(yù)測(cè)對(duì)整個(gè)管道建設(shè)和管道安全至關(guān)重要,供水管道系統(tǒng)的高效仿真是解決上述問(wèn)題的重要手段[5]。初期人們可通過(guò)對(duì)數(shù)值方法進(jìn)行改進(jìn),也可以使用更好的計(jì)算設(shè)備提升模擬計(jì)算效率,但是隨著管網(wǎng)拓?fù)浣Y(jié)構(gòu)大規(guī)模的擴(kuò)大以及CPU 功耗墻的出現(xiàn),該方法性能逐漸降低。

      近年來(lái),GPU 加速器開(kāi)始廣泛用于科學(xué)計(jì)算,其提供了優(yōu)越的計(jì)算處理能力和內(nèi)存帶寬,并提高了計(jì)算效率[6-8]。文獻(xiàn)[8]提出一種加速單GPU 芯片上開(kāi)放通道和管道組合流瞬態(tài)模擬的方法。在計(jì)算統(tǒng)一設(shè)備架構(gòu)(CUDA)的線(xiàn)程級(jí)并行結(jié)構(gòu)中,GPU 可以很好地利用其固有的并行性[9-10]。但是,對(duì)大規(guī)模管道網(wǎng)絡(luò)仿真計(jì)算時(shí),仿真計(jì)算粒度密集,而傳統(tǒng)計(jì)算機(jī)受限于計(jì)算粒度密集的程序,可能會(huì)影響供水管網(wǎng)大規(guī)模數(shù)值模擬時(shí)的效率?!搬陨健背?jí)計(jì)算機(jī)是我國(guó)自主研發(fā)的新一代E 級(jí)超級(jí)計(jì)算機(jī),其采用符合超算國(guó)際主流趨勢(shì)的海光1 號(hào)CPU+海光1 號(hào)DCU 加速器的異構(gòu)體系結(jié)構(gòu),所配備的DCU 加速器件使得該平臺(tái)更適合于部署高度密集型計(jì)算應(yīng)用。因此,供水管網(wǎng)模擬系統(tǒng)在“嵩山”超級(jí)計(jì)算機(jī)平臺(tái)上進(jìn)行模擬計(jì)算,可以進(jìn)一步突破瓶頸提升計(jì)算性能。

      盡管管網(wǎng)在超級(jí)計(jì)算機(jī)平臺(tái)上比傳統(tǒng)CPU 具有更高的計(jì)算效率,但單個(gè)DCU 節(jié)點(diǎn)的極限存儲(chǔ)和計(jì)算能力可能會(huì)影響管網(wǎng)在超擴(kuò)展尺度上處理計(jì)算系統(tǒng)時(shí)的效率。在這種情況下,如果在多塊DCU 中進(jìn)行計(jì)算,則需大幅擴(kuò)展管網(wǎng)模擬計(jì)算的規(guī)模。

      本文提出一種有效的并行化方案來(lái)提高管網(wǎng)的計(jì)算效率。面向“嵩山”超級(jí)計(jì)算機(jī)平臺(tái),利用HIP-C 語(yǔ)言修改程序完成程序跨平臺(tái)移植,在單DCU 中實(shí)現(xiàn)計(jì)算的并發(fā)。針對(duì)管網(wǎng)中管道元件中數(shù)據(jù)依賴(lài)問(wèn)題,對(duì)其進(jìn)行數(shù)據(jù)劃分,并結(jié)合HIP 編程模型和消息傳遞接口,將多個(gè)DCU 加速器集成到網(wǎng)絡(luò)體系結(jié)構(gòu)中,通過(guò)高效的混合并行化方案對(duì)管網(wǎng)進(jìn)行優(yōu)化[11]。

      1 相關(guān)工作

      本節(jié)主要介紹管網(wǎng)管道拓?fù)浣Y(jié)構(gòu),并描述HIP+MPI 混合編程。

      1.1 管道網(wǎng)絡(luò)模型

      管道運(yùn)輸是各種清潔能源開(kāi)發(fā)與輸送過(guò)程中一項(xiàng)重要的技術(shù)[12-13]。目前,管道運(yùn)輸技術(shù)已有很多成熟的理論和模型,隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)通信的飛速發(fā)展,能源運(yùn)輸技術(shù)也逐漸實(shí)現(xiàn)了信息化,運(yùn)輸管道仿真模擬系統(tǒng)應(yīng)運(yùn)而生。模擬仿真通過(guò)把數(shù)據(jù)訪(fǎng)問(wèn)接口連接到系統(tǒng),及時(shí)更新數(shù)據(jù),將實(shí)時(shí)數(shù)據(jù)傳入到系統(tǒng)中進(jìn)行計(jì)算,實(shí)現(xiàn)管網(wǎng)的動(dòng)態(tài)模擬仿真[14-16]。

      首先以管網(wǎng)實(shí)際拓?fù)鋱D為基礎(chǔ)來(lái)考慮管網(wǎng)模型,為清晰地描述管網(wǎng)的模擬計(jì)算過(guò)程,本文通過(guò)以下簡(jiǎn)單管網(wǎng)進(jìn)行說(shuō)明。圖1 所示是一根獨(dú)立管道的兩個(gè)邊界節(jié)點(diǎn)。圖2 所示是一個(gè)簡(jiǎn)單的管道系統(tǒng),中間用一個(gè)非管道元件連接兩根管道,共有4 個(gè)臨界點(diǎn)。圖3 所示為擴(kuò)大管道規(guī)模后構(gòu)建一個(gè)閉環(huán)的管道系統(tǒng),管道內(nèi)由方程計(jì)算的值與非管道元件內(nèi)由方程計(jì)算得出的結(jié)果通過(guò)邊界值計(jì)算進(jìn)行數(shù)值交互,模擬仿真得出需要的數(shù)值。

      圖1 單個(gè)管道圖Fig.1 Single pipeline diagram

      圖2 簡(jiǎn)單的管道系統(tǒng)Fig.2 Simple pipeline system

      圖3 閉環(huán)的管道系統(tǒng)Fig.3 Closed-loop pipeline system

      1.2 MPI+HIP 混合編程

      并行計(jì)算在不同的粒度層次優(yōu)化,粒度一般分為粗粒度和細(xì)粒度。在集群上多個(gè)進(jìn)程進(jìn)行計(jì)算,進(jìn)程間通過(guò)消息傳遞的方式進(jìn)行通信[17-18]。由于MPI 的通信占用成本較高,因此更適合任務(wù)劃分清晰、通信不頻繁的粗粒度并行[19-20]。與MPI 相比,DCU 擅長(zhǎng)大規(guī)模密集計(jì)算,可在細(xì)粒度上進(jìn)行并行計(jì)算。本文結(jié)合MPI和DCU 的優(yōu)點(diǎn),通過(guò)MPI 消息傳遞機(jī)制控制多進(jìn)程計(jì)算,實(shí)現(xiàn)粗粒度上的并發(fā),并在每個(gè)進(jìn)程中使用DCU實(shí)現(xiàn)線(xiàn)程級(jí)計(jì)算和細(xì)粒度上的并發(fā)[21]。

      “嵩山”超級(jí)計(jì)算機(jī)一個(gè)節(jié)點(diǎn)內(nèi)共有4 塊DCU,如果只在單DCU 中進(jìn)行計(jì)算,每個(gè)節(jié)點(diǎn)的計(jì)算能力沒(méi)有被充分利用。為擴(kuò)展DCU 計(jì)算規(guī)模,在實(shí)現(xiàn)多DCU 計(jì)算時(shí),MPI+HIP 混合編程可以發(fā)揮優(yōu)勢(shì),為每一個(gè)DCU分別分配一個(gè)進(jìn)程,使用MPI 控制多進(jìn)程計(jì)算并進(jìn)行通信[22-23]。進(jìn)程之間使用消息傳遞接口傳輸數(shù)據(jù),進(jìn)程內(nèi)采用HIP 技術(shù)進(jìn)行線(xiàn)程級(jí)優(yōu)化,實(shí)現(xiàn)粗粒度和細(xì)粒度的結(jié)合,提升科學(xué)計(jì)算的性能。HIP+MPI 混合編程結(jié)構(gòu)如圖4 所示。

      圖4 MPI+HIP 混合編程結(jié)構(gòu)Fig.4 MPI+HIP mixed programming structure

      2 管網(wǎng)仿真計(jì)算的異構(gòu)實(shí)現(xiàn)

      2.1 管網(wǎng)計(jì)算的并行性

      管網(wǎng)模擬仿真系統(tǒng)在進(jìn)行數(shù)值模擬時(shí),大量的數(shù)據(jù)增加了計(jì)算時(shí)間,影響數(shù)值模擬的時(shí)間和精度。根據(jù)上文的內(nèi)容可以了解到DCU 的計(jì)算能力,這可以解決目前模擬計(jì)算中所遇到的問(wèn)題。下面將詳細(xì)介紹管網(wǎng)拓?fù)浣Y(jié)構(gòu)中管道與非管道的并行特性。參照?qǐng)D3 結(jié)構(gòu)中各元件計(jì)算的流程如圖5 所示。

      圖5 管網(wǎng)元件計(jì)算流程Fig.5 Calculation procedure of pipeline network components

      本文管道網(wǎng)絡(luò)仿真計(jì)算基于王海[13]提出的立體管網(wǎng)建模方法。將管網(wǎng)“對(duì)象化”,然后把管網(wǎng)元件的對(duì)象屬性賦予具體數(shù)值,得到每個(gè)元件與相鄰元件的連接屬性以及每個(gè)元件的初始狀態(tài)和邊界條件。管道元件和非管道元件在初始化后,可開(kāi)始第1 個(gè)時(shí)間步長(zhǎng)的計(jì)算,每次計(jì)算完成后,需要進(jìn)行收斂分析,如果計(jì)算精度達(dá)到0.000 1%,則結(jié)束循環(huán)。這時(shí)能夠得到穩(wěn)態(tài)時(shí)管道元件與非管道元件的流量、壓力和水力工況等數(shù)值。

      在分析該程序代碼進(jìn)行數(shù)值模擬計(jì)算時(shí),首先需要設(shè)置循環(huán)條件,直到計(jì)算結(jié)果不發(fā)散才可計(jì)算結(jié)束。在外循環(huán)中先對(duì)非管道元件進(jìn)行計(jì)算,在邏輯上將數(shù)組進(jìn)行切分,數(shù)組不同的分段執(zhí)行不同的非管道元件,使用hipDeviceSynchronize()函數(shù)進(jìn)行同步,直到所有非管道元件計(jì)算完畢,才能對(duì)管道元件進(jìn)行計(jì)算,然后同步直到所有管道元件計(jì)算完成。以上所有步驟在內(nèi)循環(huán)每5 000 次后進(jìn)行數(shù)值更新,并對(duì)計(jì)算結(jié)果進(jìn)行收斂計(jì)算,直到計(jì)算結(jié)果收斂或達(dá)到最大循環(huán)次數(shù),整個(gè)循環(huán)計(jì)算結(jié)束。在此過(guò)程中,各個(gè)非管道元件之間的計(jì)算是獨(dú)立的,管道元件之間的計(jì)算也沒(méi)有依賴(lài),管道和管道、非管道與非管道之間有較高的并行度。因此,可以考慮在粗粒度上把各管道和非管道元件作為求解任務(wù),將其傳輸?shù)皆O(shè)備端進(jìn)行并行計(jì)算。

      2.2 異構(gòu)實(shí)現(xiàn)

      供水管網(wǎng)仿真系統(tǒng)代碼是由C/C++語(yǔ)言編寫(xiě)的,本文通過(guò)使用HIP-C 對(duì)代碼進(jìn)行改寫(xiě),改寫(xiě)后的代碼可以在“嵩山”超級(jí)計(jì)算機(jī)上運(yùn)行并進(jìn)行測(cè)試。通過(guò)測(cè)試可以發(fā)現(xiàn),管道和非管道中水力計(jì)算部分耗時(shí)較長(zhǎng),一定程度上影響了模擬仿真計(jì)算的效率。因此,在工作中把管道和非管道中的計(jì)算部分在DCU 中進(jìn)行并行計(jì)算,因?yàn)镈CU 加速器對(duì)數(shù)據(jù)量較大、運(yùn)算復(fù)雜的密集性計(jì)算有顯著優(yōu)勢(shì),所以對(duì)于供水管網(wǎng)模擬計(jì)算時(shí)把計(jì)算耗時(shí)較長(zhǎng)的部分傳輸?shù)紻CU 中,計(jì)算效率有了顯著的提升。供水管網(wǎng)仿真系統(tǒng)在異構(gòu)架構(gòu)中的模擬實(shí)現(xiàn)流程如圖6 所示。

      結(jié)合圖6 分析在程序中需要讀取管道和非管道元件中的數(shù)據(jù),并寫(xiě)入不同的結(jié)構(gòu)體數(shù)組,然后定義結(jié)構(gòu)體指針,動(dòng)態(tài)分配各個(gè)管道和非管道結(jié)構(gòu)體指針的內(nèi)存,將主機(jī)端內(nèi)存的管道元件和非管道元件的結(jié)構(gòu)體數(shù)組傳輸?shù)紻CU 加速器設(shè)備內(nèi)存中,并對(duì)其進(jìn)行初始化。管網(wǎng)中管道元件和非管道元件需循環(huán)計(jì)算,直到達(dá)到收斂條件或最大循環(huán)次數(shù)方可跳出循環(huán)結(jié)束計(jì)算。在外循環(huán)中,對(duì)管網(wǎng)中各元件循環(huán)計(jì)算時(shí),管道元件和非管道元件將DCU 加速器映射到block 塊中,每個(gè)block 中可以根據(jù)實(shí)際應(yīng)用分配線(xiàn)程,非管道元件和管道元件計(jì)算時(shí)按順序計(jì)算。首先計(jì)算非管道元件并同步,當(dāng)所有非管道元件計(jì)算完畢之后開(kāi)始管道的計(jì)算,同理,管道計(jì)算后也需要同步。以上操作以5 000 次為基準(zhǔn),開(kāi)啟內(nèi)循環(huán),每循環(huán)計(jì)算5 000 次,所有元件進(jìn)行一次更新,并對(duì)其中的二通、三通、四通進(jìn)行收斂條件判斷,若達(dá)到收斂條件,則跳出循環(huán);否則再次重復(fù)上述步驟對(duì)非管道和管道進(jìn)行并行操作,直到外循環(huán)結(jié)束,跳出循環(huán),將最終的計(jì)算結(jié)果從設(shè)備端傳回到主機(jī)端,重新關(guān)聯(lián)非管道元件和管道,直至模擬計(jì)算結(jié)束。

      圖6 異構(gòu)版本供水管網(wǎng)仿真系統(tǒng)模擬流程Fig.6 Simulation procedure of water supply pipeline network simulation system of heterogeneous versions

      對(duì)于小規(guī)模的管道網(wǎng)絡(luò),可以實(shí)現(xiàn)在單DCU 中計(jì)算,當(dāng)管道網(wǎng)絡(luò)規(guī)模逐漸擴(kuò)大時(shí),單DCU 中計(jì)算規(guī)模不能滿(mǎn)足仿真計(jì)算的需求,因此將單DCU 擴(kuò)展到多DCU 中進(jìn)行模擬計(jì)算。

      3 DCU 多卡的實(shí)現(xiàn)

      供水管網(wǎng)模擬仿真系統(tǒng)在多DCU 中的實(shí)現(xiàn),合理的管道劃分方式和數(shù)據(jù)通信傳輸尤其重要。

      3.1 管道數(shù)據(jù)劃分

      管網(wǎng)數(shù)據(jù)必須根據(jù)DCU 節(jié)點(diǎn)處理管道數(shù)據(jù),并將這些數(shù)據(jù)逐個(gè)寫(xiě)入DCU,而不是計(jì)算整個(gè)過(guò)程中的所有管道數(shù)據(jù)。在程序優(yōu)化過(guò)程中直接將管道數(shù)據(jù)分成兩個(gè)部分,并將這兩個(gè)部分的數(shù)據(jù)分別寫(xiě)入到兩塊DCU 內(nèi)存中進(jìn)行計(jì)算,但在計(jì)算過(guò)程中程序運(yùn)行到一半發(fā)生了中斷,測(cè)試調(diào)試發(fā)現(xiàn)在對(duì)管道數(shù)據(jù)循環(huán)讀取時(shí),讀到一部分管道數(shù)據(jù)后循環(huán)中斷,發(fā)生數(shù)據(jù)缺失的情況。經(jīng)過(guò)分析,管道之間數(shù)據(jù)交互密切,各個(gè)DCU 中一部分管道和非管道元件之間存在數(shù)據(jù)依賴(lài)問(wèn)題。在對(duì)管道數(shù)據(jù)進(jìn)行讀取時(shí),無(wú)法實(shí)現(xiàn)跨進(jìn)程讀取操作,DCU 之間也無(wú)法進(jìn)行跨設(shè)備的數(shù)據(jù)訪(fǎng)問(wèn)。為解決該問(wèn)題,需要使用消息傳遞接口(MPI)使相關(guān)進(jìn)程之間進(jìn)行通信,實(shí)現(xiàn)數(shù)據(jù)跨進(jìn)程通信交互。

      使用MPI 控制兩進(jìn)程計(jì)算并進(jìn)行通信時(shí),將管道元件分成兩部分,同時(shí)需要找到一部分管道元件作為兩進(jìn)程中的公有部分,傳回到主機(jī)端通信傳遞。在此項(xiàng)目組的成員提出一種一維分割方法,該方法將整個(gè)管道和非管道數(shù)據(jù)分成兩個(gè)部分,管道數(shù)據(jù)按組號(hào)被分割為三部分:GroupId=0,GroupId=1 和GroupId=2。把分組GroupId=1 的管道數(shù)據(jù)寫(xiě)入到DCU0 中,然后將分組GroupId=2 的管道數(shù)據(jù)寫(xiě)入到DCU1 中,管道分割圖如圖7 所示。從圖7 可以看出,管道數(shù)據(jù)被相對(duì)均勻地分配到了兩塊DCU 加速器中,在兩塊DCU 中有一部分管道數(shù)據(jù)GroupId=0屬于兩塊DCU 中的公有部分。這一部分?jǐn)?shù)據(jù)需要同時(shí)寫(xiě)入到兩塊DCU 中,GroupId=0 的管道數(shù)據(jù)作為連接兩部分管道數(shù)據(jù)的橋梁,在管道元件和非管道元件計(jì)算5 000 次后,將GroupId=0 的管道數(shù)據(jù)從DCU0 中傳回到主機(jī)端進(jìn)行通信,然后再傳回到DCU1中,最后對(duì)管道元件刷新,代表一次通信完成。

      圖7 管道分割圖Fig.7 Pipeline segmentation diagram

      3.2 MPI 優(yōu)化

      本節(jié)主要描寫(xiě)MPI 的具體實(shí)現(xiàn)以及在實(shí)現(xiàn)過(guò)程中遇到的問(wèn)題。

      3.2.1 數(shù)據(jù)類(lèi)型重定義

      數(shù)據(jù)類(lèi)型在數(shù)據(jù)結(jié)構(gòu)中的定義是一組性質(zhì)相同的值的集合以及定義在這個(gè)值集合上的一組操作的總稱(chēng)。變量用來(lái)存儲(chǔ)值,它們有名字和數(shù)據(jù)類(lèi)型。結(jié)合供水管網(wǎng)仿真模擬的代碼,管道和非管道元件被封裝成結(jié)構(gòu)體,MPI 需要知道結(jié)構(gòu)體的數(shù)據(jù)類(lèi)型才能實(shí)現(xiàn)通信傳輸。因此,需要對(duì)結(jié)構(gòu)體實(shí)現(xiàn)數(shù)據(jù)類(lèi)型重定義。

      本文對(duì)程序中管道接口和管道的結(jié)構(gòu)體進(jìn)行重定義。首先程序中使用MPI_Datatype 定義新的數(shù)據(jù)類(lèi)型名稱(chēng),通過(guò)blocklens 數(shù)組定義管道接口和管道中每個(gè)數(shù)據(jù)類(lèi)型的長(zhǎng)度,并根據(jù)oldTypes 數(shù)組描述管道接口和管道舊數(shù)據(jù)的類(lèi)型,通過(guò)MPI_Address指定數(shù)組中每個(gè)塊中的偏移量。然后運(yùn)用MPI_Type_struct 生成新的管道接口和管道數(shù)據(jù)類(lèi)型。最后采用MPI_Type_commit 提交注冊(cè)新的數(shù)據(jù)類(lèi)型&PipeStruct 和&PipePortStruct。

      3.2.2 MPI 實(shí)現(xiàn)過(guò)程

      在MPI 信息傳遞接口進(jìn)行通信前,應(yīng)先對(duì)分割好的管道元件和非管道元件實(shí)現(xiàn)讀取和寫(xiě)入操作。利用一維分割方法對(duì)各個(gè)元件進(jìn)行分割后,通過(guò)MPI_Comm_rank()獲取進(jìn)程號(hào),進(jìn)程號(hào)控制各個(gè)進(jìn)程對(duì)非管道元件和管道的讀取,將各自的數(shù)據(jù)分別讀取到各進(jìn)程的結(jié)構(gòu)體數(shù)組中。本文主要使用數(shù)組指針進(jìn)行讀寫(xiě)操作,數(shù)組指針是動(dòng)態(tài)分配空間,使用更加靈活,相比直接使用數(shù)組,其代碼擴(kuò)展性更好。在讀寫(xiě)完成之后,再由hipMemcpy()將其分別傳入到各自的DCU 進(jìn)行計(jì)算。由于MPI 的通信是在主機(jī)端進(jìn)行的,需要使用hipMemcpy()來(lái)控制設(shè)備端與主機(jī)端之間數(shù)據(jù)的傳輸。圖8 所示為MPI 通信時(shí)數(shù)據(jù)傳輸?shù)倪^(guò)程。

      圖8 MPI 通信過(guò)程Fig.8 MPI communication process

      MPI 在實(shí)現(xiàn)過(guò)程中,主機(jī)端使用MPI_Comm_rank()獲取當(dāng)前的進(jìn)程號(hào),調(diào)用hipGetDevice()獲取DCU 加速器的設(shè)備編號(hào),以此確定進(jìn)程編號(hào)和設(shè)備編號(hào)的對(duì)應(yīng)關(guān)系。每個(gè)進(jìn)程控制一個(gè)DCU,在對(duì)應(yīng)的設(shè)備上進(jìn)行數(shù)據(jù)顯存的劃分,完成主機(jī)端向設(shè)備端計(jì)算數(shù)據(jù)的傳輸,并各自啟動(dòng)內(nèi)核函數(shù);每個(gè)進(jìn)程設(shè)置自己私有的主機(jī)端和設(shè)備端的數(shù)據(jù)指針,其中管道元件的數(shù)據(jù)被分為三部分,GroupId=0 是公有部分,這一部分管道元件數(shù)據(jù)使用hipMemcpy(DTH)從設(shè)備端傳輸?shù)街鳈C(jī)端被單獨(dú)寫(xiě)入到Host_PublicPipeArray 數(shù)組中,MPI 在管道和非管道分別計(jì)算5 000 次后,將共有數(shù)據(jù)通過(guò)DCU 私有的設(shè)備端數(shù)據(jù)指針拷貝回私有主機(jī)端,在私有主機(jī)端進(jìn)行數(shù)據(jù)的通信及更新,并進(jìn)行收斂性檢查,在主機(jī)端中結(jié)束通信后分別拷貝到私有設(shè)備端中,之后對(duì)所有非管道元件更新一次。在外循環(huán)進(jìn)程中,進(jìn)程對(duì)各自的管道和非管道元件每進(jìn)行5 000 次密集計(jì)算都會(huì)使用MPI 通信接口進(jìn)行傳輸通信并更新所有元件,直至供水管網(wǎng)模擬計(jì)算結(jié)果收斂,計(jì)算結(jié)束通信完成。圖9 所示為MPI 通信傳遞實(shí)現(xiàn)過(guò)程。

      圖9 MPI 通信實(shí)現(xiàn)過(guò)程Fig.9 MPI communication realization process

      從單DCU 加速器擴(kuò)展到多DCU 加速器,由MPI控制多進(jìn)程計(jì)算的實(shí)現(xiàn)解決了DCU 自身的偽并行,完成了大規(guī)模數(shù)據(jù)多進(jìn)程的并發(fā)實(shí)現(xiàn)。多DCU 的實(shí)現(xiàn)擴(kuò)大了密集計(jì)算的規(guī)模,突破了單DCU 加速器計(jì)算資源的限制,對(duì)以后大規(guī)模程序的計(jì)算需求具有重要意義。

      4 實(shí)驗(yàn)測(cè)試

      “嵩山”超級(jí)計(jì)算機(jī)系統(tǒng)的操作系統(tǒng)為Centos-6.7,集群作業(yè)管理系統(tǒng)為Gridview,CPU 編譯器為gcc/g++-7.3.1,DCU 加速器編譯器為hipcc-2.9.6,MPI 版本為hpcx-2.4.1,CPU 處理器為英特爾?酷睿?i9-9980XE。

      4.1 功能性測(cè)試

      本文在“嵩山”超級(jí)計(jì)算機(jī)平臺(tái)單節(jié)點(diǎn)單DCU上進(jìn)行正確性驗(yàn)證。首先對(duì)CPU+DCU 異構(gòu)實(shí)現(xiàn)的供水管網(wǎng)模擬仿真計(jì)算進(jìn)行小規(guī)模數(shù)據(jù)測(cè)試,將記錄模擬出的數(shù)值與管網(wǎng)串行實(shí)現(xiàn)的模擬仿真結(jié)果進(jìn)行比較,經(jīng)對(duì)比發(fā)現(xiàn),兩者計(jì)算結(jié)果的數(shù)值變化在允許范圍內(nèi),通過(guò)了正確性驗(yàn)證。

      4.1.1 異構(gòu)實(shí)現(xiàn)結(jié)果對(duì)比

      將供水管網(wǎng)模擬實(shí)現(xiàn)的異構(gòu)版本與在CPU 處理器英特爾?酷睿?i9-9980XE 上的運(yùn)行結(jié)果進(jìn)行對(duì)比,為使描述清晰簡(jiǎn)潔,將在單DCU 內(nèi)優(yōu)化方法簡(jiǎn)稱(chēng)為方法1,在多DCU 內(nèi)優(yōu)化方法簡(jiǎn)稱(chēng)為方法2。通過(guò)輸入小規(guī)模器件數(shù)量和大規(guī)模器件數(shù)量,并在不同的計(jì)算平臺(tái)上進(jìn)行仿真計(jì)算測(cè)試。如表1 所示,選取器件規(guī)模數(shù)分別為10 000、30 000。

      表1 不同規(guī)模器件在CPU 和方法1 下的結(jié)果對(duì)比Table 1 Comparison of results of different scale devices in CPU and method 1

      由表1 數(shù)據(jù)可以看出,在器件數(shù)為10 000 時(shí),在DCU 加速器上的加速比為5.065,隨著計(jì)算規(guī)模的增加,當(dāng)輸入器件數(shù)為30 000 時(shí),加速比達(dá)到了9.833。分析其原因,是因?yàn)樵谛∫?guī)模數(shù)據(jù)計(jì)算時(shí),不能充分利用DCU 加速器的并行資源,計(jì)算性能有一定幅度的提升,但不能達(dá)到最優(yōu)。當(dāng)器件數(shù)量增多時(shí),DCU加速器在大規(guī)模密集計(jì)算的計(jì)算優(yōu)勢(shì)突出,加速效果明顯提升。實(shí)驗(yàn)結(jié)果證明了CPU+DCU 異構(gòu)實(shí)現(xiàn)的供水管網(wǎng)模擬計(jì)算在“嵩山”超級(jí)計(jì)算機(jī)平臺(tái)的單DCU 加速器環(huán)境中,加速效果十分顯著,在保證相同計(jì)算精度的前提下,計(jì)算速度提升5~10 倍,且管網(wǎng)模型規(guī)模越大,DCU 加速效果則越顯著。

      表2 所示是GPU 異構(gòu)平臺(tái)上的運(yùn)行結(jié)果與方法1進(jìn)行對(duì)比,加速比提升了2~3 倍??梢钥闯觯凇搬陨健背?jí)計(jì)算機(jī)上的移植相比顯卡為GT 730 的GPU異構(gòu)平臺(tái)仍有顯著的優(yōu)勢(shì)。

      表2 不同規(guī)模器件在GPU 和方法1 下的結(jié)果對(duì)比Table 2 Comparison of results of different scale devices in GPU and method 1

      本節(jié)實(shí)驗(yàn)驗(yàn)證了供水管網(wǎng)模擬仿真系統(tǒng)在不同平臺(tái)的測(cè)試結(jié)果,表明“嵩山”超級(jí)計(jì)算機(jī)更適合于大規(guī)模仿真計(jì)算,且其相對(duì)于以往實(shí)施x86 平臺(tái)或GPU 異構(gòu)平臺(tái),計(jì)算性能都有明顯提升。

      4.1.2 多DCU(方法2)實(shí)現(xiàn)測(cè)試分析

      由于越來(lái)越多管道的建立,管網(wǎng)拓?fù)鋸?fù)雜,計(jì)算量大,單DCU 的計(jì)算規(guī)模已經(jīng)不能滿(mǎn)足龐大的管網(wǎng)數(shù)據(jù)計(jì)算量。本節(jié)基于MPI+HIP 模型選擇供水管網(wǎng)仿真計(jì)算在多DCU 上的實(shí)現(xiàn)進(jìn)行實(shí)驗(yàn),將在單DCU 上管網(wǎng)模擬仿真運(yùn)行的時(shí)間作為基準(zhǔn),測(cè)試該模擬程序在單節(jié)點(diǎn)內(nèi)多個(gè)DCU 上運(yùn)行的并行效率,如表3 所示。

      表3 不同規(guī)模器件在方法1 和方法2 下的結(jié)果對(duì)比Table 3 Comparison of results of different scale devices under method 1 and method 2 s

      在輸入管器件數(shù)量分別為10 000、30 000 時(shí),DCU 單卡加速與DCU 多卡加速速度相當(dāng),多卡加速效果略?xún)?yōu)于單卡,但當(dāng)面對(duì)超大規(guī)模管網(wǎng)模型時(shí),多卡加速效果將明顯優(yōu)于單卡環(huán)境。原因是由于在MPI 進(jìn)行通信傳輸時(shí),需要將管網(wǎng)中管道和非管道元件從設(shè)備端傳輸?shù)街鳈C(jī)端進(jìn)行數(shù)據(jù)通信,然后再傳回到設(shè)備端。在輸入規(guī)模少的管道和非管道數(shù)據(jù)進(jìn)行計(jì)算時(shí),使用hipMemcpy()進(jìn)行傳輸所占用的時(shí)間較長(zhǎng),核函數(shù)內(nèi)密集計(jì)算占比較小,性能提升不明顯,但是隨著輸入管網(wǎng)規(guī)模的增大,在核函數(shù)內(nèi)計(jì)算占比遠(yuǎn)超過(guò)傳輸占比時(shí),加速比取得大幅提升。

      表4 所示是將在CPU 加速器上的運(yùn)行結(jié)果與DCU 多卡加速結(jié)果進(jìn)行對(duì)比,加速比提升了5~10 倍。從表4 可以看出,將數(shù)據(jù)規(guī)模擴(kuò)展到多塊DCU 中測(cè)試結(jié)果取得較優(yōu)的性能,隨著規(guī)模的擴(kuò)大,加速比與規(guī)模的擴(kuò)大成正比。

      表4 不同規(guī)模器件在CPU 和方法2 下的結(jié)果對(duì)比Table 4 Comparison of results of different scale devices under CPU and method 2

      實(shí)驗(yàn)結(jié)果證明了基于HIP 編程模型和MPI 實(shí)現(xiàn)的供水管網(wǎng)模擬仿真計(jì)算在“嵩山”超級(jí)計(jì)算機(jī)系統(tǒng)的多DCU 上具有良好的可拓展性,對(duì)供水管網(wǎng)在“嵩山”超級(jí)計(jì)算機(jī)平臺(tái)上實(shí)現(xiàn)規(guī)模擴(kuò)展具有重要的意義。

      5 結(jié)束語(yǔ)

      本文利用HIP-C 語(yǔ)言實(shí)現(xiàn)供水管網(wǎng)模擬仿真計(jì)算在“嵩山”超級(jí)計(jì)算機(jī)平臺(tái)的移植,通過(guò)對(duì)管道和非管道元件的數(shù)據(jù)進(jìn)行劃分,并基于CPU+DCU 異構(gòu)架構(gòu),利用HIP 編程模型和消息傳遞接口控制DCU 的并發(fā)和多進(jìn)程之間數(shù)據(jù)的通信傳遞,擴(kuò)展管網(wǎng)仿真計(jì)算的規(guī)模,同時(shí)提升模擬實(shí)現(xiàn)的效率。實(shí)驗(yàn)結(jié)果驗(yàn)證了本文優(yōu)化方法的有效性。下一步將進(jìn)行管網(wǎng)內(nèi)核函數(shù)計(jì)算部分的優(yōu)化工作,研究擴(kuò)展核函數(shù)內(nèi)管道和非管道元件的并行特性,以達(dá)到提升管網(wǎng)仿真計(jì)算性能的目標(biāo)。

      猜你喜歡
      嵩山模擬計(jì)算超級(jí)計(jì)算機(jī)
      超級(jí)計(jì)算機(jī)
      R1234ze PVTx熱物性模擬計(jì)算
      能源工程(2022年1期)2022-03-29 01:06:26
      超級(jí)計(jì)算機(jī)及其在航空航天領(lǐng)域中的應(yīng)用
      科技傳播(2019年22期)2020-01-14 03:06:36
      我愛(ài)我家
      美國(guó)制造出全球最快超級(jí)計(jì)算機(jī)
      每秒100億億次 中國(guó)超級(jí)計(jì)算機(jī)
      尹朝陽(yáng):嵩山高
      鄭州嵩山地磁臺(tái)站建站可行性分析
      擠出發(fā)泡片材褶皺分析及模擬計(jì)算
      實(shí)際發(fā)射工況下底排藥柱結(jié)構(gòu)完整性的模擬計(jì)算
      新野县| 武平县| 江达县| 界首市| 英吉沙县| 正阳县| 萝北县| 樟树市| 濮阳县| 吴川市| 宾川县| 淳化县| 常熟市| 江永县| 洞口县| 洪雅县| 宝鸡市| 甘泉县| 香格里拉县| 承德市| 兴文县| 密山市| 神木县| 金川县| 郸城县| 普兰店市| 通渭县| 祁东县| 札达县| 阳信县| 五台县| 玛沁县| 新蔡县| 永胜县| 青阳县| 镇康县| 盖州市| 砚山县| 嘉峪关市| 邵武市| 余庆县|