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

        ?

        MPI環(huán)境下二維流動的并行計算

        2013-10-15 08:10:56符棟良
        化工裝備技術(shù) 2013年4期
        關(guān)鍵詞:數(shù)據(jù)類型客戶機(jī)方形

        符棟良

        (上海市特種設(shè)備監(jiān)督檢驗技術(shù)研究院)

        基于PC機(jī)群的并行計算是當(dāng)前國際上計算機(jī)科學(xué)與應(yīng)用領(lǐng)域中引人注目的課題之一,該領(lǐng)域的研究在我國現(xiàn)階段科研條件下有著很強(qiáng)的現(xiàn)實意義。在諸如預(yù)測模型的構(gòu)造和模擬、工程設(shè)計和自動化、能源勘探、醫(yī)學(xué)、軍事以及基礎(chǔ)理論研究等領(lǐng)域,都對計算提出了極高的具有挑戰(zhàn)性的要求,所以對并行計算有很迫切的需求。

        1 并行計算環(huán)境

        1.1 MPI并行環(huán)境介紹

        本文采用的網(wǎng)絡(luò)并行環(huán)境是MPI(message passing interface),MPI是目前最重要的實現(xiàn)消息傳遞的并行編程環(huán)境之一,它具有移植性好、功能強(qiáng)大、效率高等多種優(yōu)點(diǎn)[1]。具體地講,MPI就是提供了并行庫。這樣,原來的串行編譯器能夠繼續(xù)使用,編程者只需要在原來的串行程序中加入對并行庫的調(diào)用,就可以實現(xiàn)并行程序設(shè)計。在MPI-1中共有128個調(diào)用接口,在MPI-2中有287個。應(yīng)該說MPI是比較龐大的,想完全掌握這么多的調(diào)用很困難。但是,從理論上說,MPI所有的通信功能可以用它的6個基本的調(diào)用來實現(xiàn),掌握了這6個調(diào)用,就可以實現(xiàn)所有的消息傳遞并行程序的功能。因此,下面介紹這6個最基本的調(diào)用[1]。

        (1) MPI初始化

        MPI_Init()

        MPI_Init是MPI程序的第一個調(diào)用,它完成MPI程序所有的初始化工作,是所有MPI程序的第一條可執(zhí)行語句。

        (2) MPI結(jié)束

        MPI_Finalize()

        MPI_Finalize是MPI程序的最后一個調(diào)用,它結(jié)束MPI程序的運(yùn)行,是MPI程序的最后一條可執(zhí)行語句。

        (3)當(dāng)前進(jìn)程標(biāo)識

        MPI_Comm_rank(comm,rank)

        comm——該進(jìn)程所在的通信域

        rank——調(diào)用進(jìn)程在comm中的標(biāo)識號

        這一語句用來返回調(diào)用給定的通信域中的進(jìn)程標(biāo)識號。有了這一標(biāo)識號,不同的進(jìn)程就可以將自身和其它的進(jìn)程區(qū)別開來,從而實現(xiàn)各進(jìn)程的并行和協(xié)作。

        (4)通信域包含的進(jìn)程數(shù)

        MPI_Comm_size(comm,size)

        comm——通信域

        size——通信域comm內(nèi)包括的進(jìn)程數(shù)

        這一調(diào)用返回給定的通信域中所包括的進(jìn)程的個數(shù),不同的進(jìn)程通過這一調(diào)用得知在給定的通信域中一共有多少個進(jìn)程在并行執(zhí)行。

        (5) 消息發(fā)送

        MPI_Send(buf,count,datatype,dest,tag,comm)

        buf——發(fā)送緩沖區(qū)的起始地址

        count——將發(fā)送的數(shù)據(jù)的個數(shù)

        datatype——發(fā)送數(shù)據(jù)的數(shù)據(jù)類型

        dest——目的進(jìn)程標(biāo)識號

        tag——消息標(biāo)志

        comm——通信域

        MPI_Send將發(fā)送緩沖區(qū)中的count個datatype數(shù)據(jù)類型的數(shù)據(jù)發(fā)送到目的進(jìn)程,目的進(jìn)程在通信域中的標(biāo)識號是dest,本次發(fā)送的消息標(biāo)志是tag。使用這一標(biāo)志,就可以把本次發(fā)送的消息和本進(jìn)程向同一目的進(jìn)程發(fā)送的其它消息區(qū)別開來。

        MPI_Send操作指定的發(fā)送緩沖區(qū)是由count個類型為datatype的連續(xù)數(shù)據(jù)空間組成,起始地址為buf。注意這里不是以字節(jié)計數(shù),而是以數(shù)據(jù)類型為單位指定消息的長度,這樣就獨(dú)立于具體的實現(xiàn)并且更接近于用戶的觀點(diǎn)。其中datatype數(shù)據(jù)類型可以是MPI的預(yù)定義類型,也可以是用戶自定義的類型。通過使用不同的數(shù)據(jù)類型調(diào)用MPI_Send,可以發(fā)送不同類型的數(shù)據(jù)。

        (6) 消息接收

        MPI_Recv(buf,count,datatype,source,tag,comm,status)

        buf——接收緩沖區(qū)的起始地址

        count——最多可接收的數(shù)據(jù)的個數(shù)

        datatype——接收數(shù)據(jù)的數(shù)據(jù)類型

        source——所接收的數(shù)據(jù)的來源,即發(fā)送數(shù)據(jù)的進(jìn)程標(biāo)識號

        tag——消息標(biāo)識,與相應(yīng)的發(fā)送操作的標(biāo)示相匹配

        comm——本進(jìn)程和發(fā)送進(jìn)程所在的通信域status——返回狀態(tài)

        MPI_Recv從指定的進(jìn)程source接收消息,并且該消息的數(shù)據(jù)類型、消息標(biāo)識和本接收進(jìn)程指定的datatype、tag相一致,接收到的消息所包含的數(shù)據(jù)元素的個數(shù)最多不能超過count。

        接收緩沖區(qū)是由count個類型為datatype的連續(xù)元素空間組成,由datatype指定其類型,起始地址為buf。接收到消息的長度必須小于或等于接收緩沖區(qū)的長度,這是因為如果接收到的數(shù)據(jù)過大,MPI沒有截斷,接收緩沖區(qū)會發(fā)生溢出錯誤,因此編程者要保證接收緩沖區(qū)的長度不小于發(fā)送數(shù)據(jù)的長度。如果一個短于接收緩沖區(qū)的消息到達(dá),那么只有相應(yīng)于這個消息的那些地址被修改。count可以是零,這種情況下消息的數(shù)據(jù)部分是空的。其中datatype數(shù)據(jù)類型可以是MPI的預(yù)定義類型,也可以是用戶自定義的類型。通過指定不同的數(shù)據(jù)類型調(diào)用MPI_Recv,可以接收不同類型的數(shù)據(jù)。

        1.2 MPI并行平臺搭建介紹

        在服務(wù)器和客戶機(jī)上都安裝軟件包MPICH.NT.1.2.0.4。安裝內(nèi)容包括:遠(yuǎn)程調(diào)用的程序、運(yùn)行時動態(tài)連接庫和MPI程序的啟動程序。

        使用編譯器進(jìn)行并行程序編譯鏈接,在使用其編譯程序前,增加一個Fortran項目環(huán)境,點(diǎn)擊菜單Project→Settings…,進(jìn)行下面的操作。

        (1) 在setting for中, 選擇Win32 debug。

        ①選擇Fortran標(biāo)簽:在Category一欄中選擇“External Procedures”; 在 “Argument Passing” 一欄中選擇 “C,By Reference”; 在 “String Length Argument”一欄中選擇 “After All Args”。

        ②選擇Link標(biāo)簽:在Category一欄中選擇“General”; 在 Object/library modules中 , 添 加ws2_32.lib、 mpichd.lib、 pmpichd.lib、 romiod.lib,各庫文件間用空格分開。

        (2) 在setting for中, 選擇Win32 release。

        ①選擇Fortran標(biāo)簽:在Category一欄中選擇“External Procedures”; 在 “Argument Passing” 一欄中選擇 “C,By Reference”; 在 “String Length Argument”一欄中選擇 “After All Args”。

        ②選擇Link標(biāo)簽:在Category一欄中選擇“General”; 在 Object/library modules中 , 添 加ws2_32.lib、 mpich.lib、 pmpich.lib、 romio.lib, 各庫文件間用空格分開。

        (3) 點(diǎn)擊菜單 File→Save Fortran Environment。

        這樣就可以在以后程序設(shè)計時方便地使用這一編譯環(huán)境。

        在每臺機(jī)器上都啟動了RemoteShellServer,為了減少以后的維護(hù),將這個服務(wù)設(shè)為自動。

        用配置文件的方式在多臺機(jī)器上啟動,純文本配置文件的格式如下:

        exe<可執(zhí)行文件的全路徑及名稱>[可選參數(shù)]

        [hosts可執(zhí)行文件的全路徑及名稱]

        <主機(jī)名2>#n2[可執(zhí)行文件的全路徑及名稱] <主機(jī)名3>#n3[可執(zhí)行文件的全路徑及名稱] ……

        其中,n1、n2、n3表示在對應(yīng)機(jī)器上啟動的進(jìn)程數(shù),若主機(jī)后的 [可執(zhí)行文件的全路徑及名稱] 不填,則默認(rèn)使用exe那一行所指定的文件;若每臺主機(jī)都獨(dú)立地列出可執(zhí)行文件的全路徑及名稱,則exe那一行的內(nèi)容也可空白。

        1.3 并行方案

        本文在PC網(wǎng)絡(luò)中實現(xiàn)上述過程時采用了客戶機(jī)/服務(wù)器模式 (Client/Server Mode)[2]。 客戶機(jī)/服務(wù)器模式是網(wǎng)絡(luò)通信中使用的主要的相互作用模型??梢赃@樣來說,服務(wù)器是提供服務(wù)的軟件或進(jìn)程,而客戶機(jī)則是接受服務(wù)的軟件或進(jìn)程。

        根據(jù)客戶機(jī)/服務(wù)器模型的特點(diǎn),我們可以安排每個客戶機(jī)進(jìn)程 (一臺PC機(jī)運(yùn)行1到2個客戶機(jī)進(jìn)程)負(fù)責(zé)一個子區(qū)域的計算??蛻魴C(jī)在迭代若干步后,首先要把一些相關(guān)的交界面信息傳給服務(wù)器進(jìn)程,然后服務(wù)器會根據(jù)Neumann條件得到新一輪的交界面信息,最后服務(wù)器會把這些新得到的信息傳給相關(guān)的客戶機(jī)。

        2 具體算例[3-6]

        算例一:方形空腔二維層流驅(qū)動流。

        (1) 物理模型

        圖1所示為帶移動頂蓋的方形空腔二維層流驅(qū)動流。雷諾數(shù)Reynolds分別取100和1000。

        圖1 方形空腔二維層流驅(qū)動流

        (2) 區(qū)域劃分

        將方形空腔計算區(qū)域平均分為上下兩塊,其生成的網(wǎng)格圖如圖2所示。

        圖2 方形空腔網(wǎng)格圖

        (3) 計算結(jié)果

        圖3、圖4所示為采用D-N分區(qū)計算所得的方形空腔內(nèi)二維層流驅(qū)動流的流線分布圖。

        圖3 方形空腔網(wǎng)格圖 (Re=100)

        算例二:90°彎管內(nèi)二維流動問題。

        (1) 物理模型

        圖5為90°彎管示意圖。入口速度取拋物線分布, Reynolds數(shù)取790,出口條件按局部單向化處理。

        圖4 方形空腔網(wǎng)格圖 (Re=1000)

        圖 5 90°彎管

        (2) 區(qū)域劃分

        將整個計算區(qū)域分成3塊。其中,入口段部分網(wǎng)格大小為19×7,中間部分網(wǎng)格大小為19×10,出口段部分網(wǎng)格大小為19×7。90°彎管網(wǎng)格圖如圖6所示。

        圖6 90°彎管網(wǎng)格圖

        (3) 計算結(jié)果

        圖7為90°彎管內(nèi)速度矢量圖。

        表1和表2對比了單機(jī)求解和多機(jī)并行求解的效率。

        圖7 90°彎管內(nèi)速度矢量圖

        表1 方形空腔內(nèi)分區(qū)并行計算的并行效率

        表2 90°彎管內(nèi)分區(qū)并行計算的并行效率

        以上兩個算例是使用區(qū)域分解算法對二維流動問題進(jìn)行數(shù)值模擬,從中我們也可以驗證該算法具有很好的物理真實性和良好的區(qū)域耦合性,證明用D-N算法來實現(xiàn)流場的分區(qū)數(shù)值計算是可行的??梢钥闯?,使用區(qū)域分解法在MPI環(huán)境下并行求解二維流動問題,有較高的加速比和較好的并行效率。其計算時間也遠(yuǎn)低于同規(guī)模問題的單機(jī)串行計算時間。說明使用區(qū)域分解法在基于MPI網(wǎng)絡(luò)的個人微機(jī)并行環(huán)境下,對求解流動問題有著很好的效果和前景。

        [1] 郁志輝.高性能計算并行編程技術(shù) [M] .北京:清華大學(xué)出版社,2001.

        [2] 陸霄露.基于PC網(wǎng)絡(luò)求解復(fù)雜三維流動的分區(qū)并行方法 [D] .上海:上海交通大學(xué),2003.

        [3] 陶文銓.計算傳熱學(xué)的近代進(jìn)展 [M] .北京:科學(xué)出版社,2000.

        [4] 周力行.湍流氣粒兩相流動和燃燒的理論與數(shù)值模擬[M] .北京:科學(xué)出版社,1994.

        [5] 蒲砢.關(guān)于氣固兩相流數(shù)值計算模型的探討 [J] .重慶建筑高等專科學(xué)校學(xué)報,2000,10(4):1-4.

        [6] Patankar SV.郭寬良譯.傳熱和流體流動的數(shù)值方法[M] .北京:科學(xué)出版社,1984.

        猜你喜歡
        數(shù)據(jù)類型客戶機(jī)方形
        Reducing the global cancer burden with gastrointestinal screening: China’s 30 years practice
        詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
        方形料倉堵料解決方法
        捕捉方形泡泡
        方形夾具在線切割切槽的應(yīng)用
        哈爾濱軸承(2021年4期)2021-03-08 01:00:48
        如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
        變方形
        瘦客戶機(jī):安全與便捷的選擇
        基于Web數(shù)據(jù)提高訪問速度的方法
        NEC推低安裝成本瘦客戶機(jī)
        亚洲精品日本| 在线av野外国语对白| 日本午夜国产精彩| 五月天婷婷一区二区三区久久| 亚洲天堂av另类在线播放| 免费看片的网站国产亚洲| 国产变态av一区二区三区调教| 中文字幕久久精品一区二区| 亚洲国产中文字幕一区| 国产大屁股视频免费区| 狠狠色综合7777久夜色撩人ⅰ| 中文字幕无码不卡一区二区三区| 黄色资源在线观看| 国产精品久久这里只有精品 | 亚洲精品国产精品系列| 人妻有码av中文幕久久| 亚洲精品久久国产精品| 人妻体体内射精一区二区| 小sao货水好多真紧h视频| 久久久久欧洲AV成人无码国产| 欧美在线Aⅴ性色| 日本久久久精品免费免费理论| 一本色道久久88加勒比一| 热久久国产欧美一区二区精品| 亚洲永久精品ww47| 人妻少妇人人丰满视频网站| 中文字幕亚洲视频三区| 在线视频中文字幕一区二区三区 | 国产一区二区三区亚洲avv| 天堂中文а√在线| 东京无码熟妇人妻av在线网址| 欧美日韩在线观看免费| 国产精品欧美成人片| 日产一区二区三区的精品| 乱色欧美激惰| 少妇装睡让我滑了进去| 欧美一级特黄AAAAAA片在线看| 日本岛国大片不卡人妻| 一区二区三区日韩亚洲中文视频| 欧美三级不卡在线观看| 福利视频一二三在线观看|