版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、并行算法與編程并行算法與編程 何兵壽何兵壽133708617591337086175966782297(O)66782297(O)思考題思考題 (4) (4) 如何解決更大規(guī)模的問題?如何解決更大規(guī)模的問題?(1) (1) 回憶你所接觸和了解的計(jì)算機(jī),它們之間有哪些不同?回憶你所接觸和了解的計(jì)算機(jī),它們之間有哪些不同?微機(jī)、小型機(jī)、巨型機(jī)微機(jī)、小型機(jī)、巨型機(jī)體積的大小,速度,容量,求解問題的規(guī)模體積的大小,速度,容量,求解問題的規(guī)模(2) (2) 就你所了解的程度,想一下計(jì)算機(jī)是如何解決問題的?就你所了解的程度,想一下計(jì)算機(jī)是如何解決問題的?問題分析、模型,算法,程序,指令,存儲(chǔ)問題分析、模型
2、,算法,程序,指令,存儲(chǔ) (3) (3) 你認(rèn)為如何才能夠使計(jì)算的速度變得更快?你認(rèn)為如何才能夠使計(jì)算的速度變得更快?提高時(shí)鐘頻率提高時(shí)鐘頻率( (一個(gè)時(shí)鐘周期執(zhí)行的指令條數(shù)一個(gè)時(shí)鐘周期執(zhí)行的指令條數(shù)),),更快的存儲(chǔ)器更快的存儲(chǔ)器不同級(jí)別的并行不同級(jí)別的并行更大的存儲(chǔ),更快的速度,更多的計(jì)算單元或計(jì)算機(jī)更大的存儲(chǔ),更快的速度,更多的計(jì)算單元或計(jì)算機(jī)地球物理技術(shù)發(fā)展的需要!地球物理技術(shù)發(fā)展的需要!地球物理學(xué)的特點(diǎn):地球物理學(xué)的特點(diǎn):1 1、地質(zhì)、物理、數(shù)學(xué)、計(jì)算機(jī)、地質(zhì)、物理、數(shù)學(xué)、計(jì)算機(jī)2 2、計(jì)算量龐大、計(jì)算量龐大3 3、軟件技術(shù)舉足輕重、軟件技術(shù)舉足輕重地信專業(yè)培養(yǎng)計(jì)劃的規(guī)定地信專業(yè)培養(yǎng)
3、計(jì)劃的規(guī)定 培養(yǎng)具有大型地學(xué)軟件開發(fā)的專業(yè)人才培養(yǎng)具有大型地學(xué)軟件開發(fā)的專業(yè)人才為什么要開設(shè)這門課程?為什么要開設(shè)這門課程?課程內(nèi)容課程內(nèi)容 并行計(jì)算機(jī)與并行算法的基礎(chǔ)知識(shí)并行計(jì)算機(jī)與并行算法的基礎(chǔ)知識(shí) 幾種基本的并行算法幾種基本的并行算法 MPIMPI程序設(shè)計(jì)程序設(shè)計(jì)目的:目的: 了解和掌握大型科學(xué)與工程問題中的基本并行了解和掌握大型科學(xué)與工程問題中的基本并行編程技術(shù)。編程技術(shù)。課程基礎(chǔ)課程基礎(chǔ)C C語言語言FORTRANFORTRAN語言語言UNIXUNIX系統(tǒng)知識(shí)系統(tǒng)知識(shí)高等數(shù)學(xué)高等數(shù)學(xué)高等工程數(shù)學(xué)高等工程數(shù)學(xué)參考資料參考資料高性能計(jì)算并行編程技術(shù)高性能計(jì)算并行編程技術(shù)MPIMPI并行程
4、序設(shè)計(jì)并行程序設(shè)計(jì) 都志輝都志輝 清華大學(xué)出版社清華大學(xué)出版社并行算法實(shí)踐并行算法實(shí)踐 陣國(guó)良等陣國(guó)良等 高等教育出版社高等教育出版社并行計(jì)算并行計(jì)算-結(jié)構(gòu)、算法、編程結(jié)構(gòu)、算法、編程 陣國(guó)良等陣國(guó)良等 高等教育出版社高等教育出版社 /mpi/mpich/mpi/mpichftp:/ftp.epcc.ed.ac.uk/pub/packages/chimp/release/ftp:/ftp.epcc.ed.ac.uk/pub/packages/chimp/release/http:/www.m
5、第一章第一章 并行程序設(shè)計(jì)基礎(chǔ)并行程序設(shè)計(jì)基礎(chǔ) 什么叫并行計(jì)算?什么叫并行計(jì)算? 什么叫并行計(jì)算機(jī)?什么叫并行計(jì)算機(jī)? 為什么要建造并行計(jì)算機(jī)?為什么要建造并行計(jì)算機(jī)? 并行計(jì)算機(jī)的發(fā)展歷史及趨勢(shì)并行計(jì)算機(jī)的發(fā)展歷史及趨勢(shì) 并行計(jì)算的應(yīng)用范圍并行計(jì)算的應(yīng)用范圍 并行計(jì)算機(jī)的分類并行計(jì)算機(jī)的分類 并行算法及分類并行算法及分類 并行計(jì)算在地球物理領(lǐng)域的應(yīng)用。并行計(jì)算在地球物理領(lǐng)域的應(yīng)用。一、什么叫并行計(jì)算?一、什么叫并行計(jì)算?考慮下述問題:考慮下述問題: 圖書館將一些書上架(書按類上架,書架按類分圖書館將一些書上架(書按類上架,
6、書架按類分布)布)任務(wù)劃分:任務(wù)劃分:將圖書分配給各個(gè)工人將圖書分配給各個(gè)工人通信:通信:工人之間傳遞圖書工人之間傳遞圖書方案一:方案一:由一個(gè)工人上架由一個(gè)工人上架方案二:方案二:由多個(gè)工人上架,圖書不分類由多個(gè)工人上架,圖書不分類方案三:方案三:由多個(gè)工人上架,每個(gè)工人負(fù)責(zé)一類或幾類圖書由多個(gè)工人上架,每個(gè)工人負(fù)責(zé)一類或幾類圖書并行計(jì)算的定義并行計(jì)算的定義并行計(jì)算并行計(jì)算指同時(shí)對(duì)多外任務(wù)或多條指令或多個(gè)數(shù)據(jù)項(xiàng)指同時(shí)對(duì)多外任務(wù)或多條指令或多個(gè)數(shù)據(jù)項(xiàng)進(jìn)程處理的一種方法進(jìn)程處理的一種方法同意詞:同意詞:高性能計(jì)算,超級(jí)計(jì)算高性能計(jì)算,超級(jí)計(jì)算并行計(jì)算的目的并行計(jì)算的目的 提供比傳統(tǒng)計(jì)算機(jī)更快的計(jì)
7、算速度提供比傳統(tǒng)計(jì)算機(jī)更快的計(jì)算速度 解決傳統(tǒng)計(jì)算機(jī)無法解決的問題解決傳統(tǒng)計(jì)算機(jī)無法解決的問題二、什么叫并行計(jì)算機(jī)?二、什么叫并行計(jì)算機(jī)? 完成并行處理的計(jì)算機(jī)系統(tǒng)稱為完成并行處理的計(jì)算機(jī)系統(tǒng)稱為并行計(jì)算機(jī)并行計(jì)算機(jī),它是,它是將多個(gè)(幾個(gè)、幾十個(gè),幾千個(gè),上萬個(gè))處理器通過將多個(gè)(幾個(gè)、幾十個(gè),幾千個(gè),上萬個(gè))處理器通過網(wǎng)網(wǎng)絡(luò)絡(luò)連結(jié)以一定的方式連結(jié)以一定的方式有序有序地組織起來形成的一種特殊的計(jì)地組織起來形成的一種特殊的計(jì)算機(jī)算機(jī)。 連接方式連接方式涉及網(wǎng)絡(luò)之間的互聯(lián)拓?fù)?、通信協(xié)議等涉及網(wǎng)絡(luò)之間的互聯(lián)拓?fù)洹⑼ㄐ艆f(xié)議等 有序組織有序組織涉及操作系統(tǒng)、中間軟件等涉及操作系統(tǒng)、中間軟件等并行計(jì)算機(jī)
8、示例并行計(jì)算機(jī)示例并行計(jì)算機(jī)示例并行計(jì)算機(jī)示例并行計(jì)算機(jī)示例并行計(jì)算機(jī)示例Berkeley于于1994年開發(fā)的集群式系統(tǒng)年開發(fā)的集群式系統(tǒng)并行計(jì)算機(jī)示例并行計(jì)算機(jī)示例國(guó)內(nèi)獨(dú)立研制的第一套大規(guī)國(guó)內(nèi)獨(dú)立研制的第一套大規(guī)模并行機(jī)系統(tǒng)模并行機(jī)系統(tǒng)曙光曙光1000并行計(jì)算機(jī)示例并行計(jì)算機(jī)示例IBM 建造的并行計(jì)算中心,建造的并行計(jì)算中心,用于美國(guó)能源部的核試驗(yàn)用于美國(guó)能源部的核試驗(yàn)并行計(jì)算機(jī)示例并行計(jì)算機(jī)示例目前地球物理資料處理目前地球物理資料處理中廣泛采用的中廣泛采用的PC cluster三、為什么要建造并行計(jì)算機(jī)?三、為什么要建造并行計(jì)算機(jī)?一、許多問題串行計(jì)算機(jī)難以解決一、許多問題串行計(jì)算機(jī)難以解
9、決核試驗(yàn),地球物理資料處理,天氣預(yù)報(bào)等核試驗(yàn),地球物理資料處理,天氣預(yù)報(bào)等二、計(jì)算速度的要求二、計(jì)算速度的要求串行速度提升緩慢;串行速度提升緩慢;需要在更短的時(shí)間內(nèi)解決相同的問題;需要在更短的時(shí)間內(nèi)解決相同的問題;三、問題的規(guī)模不斷擴(kuò)大三、問題的規(guī)模不斷擴(kuò)大 物理現(xiàn)象的仿真模擬(一維物理現(xiàn)象的仿真模擬(一維 二維二維 三維)三維) 長(zhǎng)期天氣預(yù)報(bào)長(zhǎng)期天氣預(yù)報(bào) 更為復(fù)雜的科學(xué)研究更為復(fù)雜的科學(xué)研究四、對(duì)計(jì)算結(jié)果的精確性的要求不斷提高四、對(duì)計(jì)算結(jié)果的精確性的要求不斷提高動(dòng)物的食物鏈動(dòng)物的食物鏈并行計(jì)算機(jī)主要解決兩類問題并行計(jì)算機(jī)主要解決兩類問題一、常規(guī)串行機(jī)不能解決的問題一、常規(guī)串行機(jī)不能解決的問題
10、二、常規(guī)機(jī)器能夠解決,但速度很慢的問題二、常規(guī)機(jī)器能夠解決,但速度很慢的問題四、并行計(jì)算機(jī)的發(fā)展歷史及趨勢(shì)四、并行計(jì)算機(jī)的發(fā)展歷史及趨勢(shì) 20世紀(jì)世紀(jì)70年代末,向量機(jī)的出現(xiàn)標(biāo)志著超級(jí)計(jì)算機(jī)的開始年代末,向量機(jī)的出現(xiàn)標(biāo)志著超級(jí)計(jì)算機(jī)的開始計(jì)算速度:提高了一個(gè)數(shù)量級(jí)計(jì)算速度:提高了一個(gè)數(shù)量級(jí)提高計(jì)算速度的途徑:改進(jìn)芯片技術(shù),提供共享存儲(chǔ)多處理器系統(tǒng)提高計(jì)算速度的途徑:改進(jìn)芯片技術(shù),提供共享存儲(chǔ)多處理器系統(tǒng) 20世紀(jì)世紀(jì)80年代后期,共享存儲(chǔ)方式的大規(guī)模并行計(jì)算機(jī)蓬年代后期,共享存儲(chǔ)方式的大規(guī)模并行計(jì)算機(jī)蓬勃發(fā)展,超大規(guī)模并行機(jī)出現(xiàn)勃發(fā)展,超大規(guī)模并行機(jī)出現(xiàn) 貴族計(jì)算機(jī)貴族計(jì)算機(jī) 近年來,集群式系
11、統(tǒng)由于具有以下優(yōu)點(diǎn)而得到了快速發(fā)展近年來,集群式系統(tǒng)由于具有以下優(yōu)點(diǎn)而得到了快速發(fā)展 低成本、高性能、短周期,大規(guī)模并行,分布式共享內(nèi)存低成本、高性能、短周期,大規(guī)模并行,分布式共享內(nèi)存 平民的超級(jí)計(jì)算機(jī)平民的超級(jí)計(jì)算機(jī)發(fā)展歷史發(fā)展歷史 向量機(jī)向量機(jī)(芯片級(jí)的并行計(jì)算機(jī))(芯片級(jí)的并行計(jì)算機(jī)) MPP(Massively Parallel Processors)(主板級(jí)的并行計(jì)算機(jī))(主板級(jí)的并行計(jì)算機(jī)) Cluster研制難度逐研制難度逐漸降底漸降底發(fā)展趨勢(shì):發(fā)展趨勢(shì): 集群式系統(tǒng)將成為并行機(jī)的發(fā)展主流集群式系統(tǒng)將成為并行機(jī)的發(fā)展主流 原因:原因:1、傳統(tǒng)向量機(jī)與共享內(nèi)存計(jì)算機(jī)的計(jì)算速度很難
12、突破物理極限、傳統(tǒng)向量機(jī)與共享內(nèi)存計(jì)算機(jī)的計(jì)算速度很難突破物理極限2、大型計(jì)算機(jī)價(jià)格昂貴,削弱了其市場(chǎng)競(jìng)爭(zhēng)力、大型計(jì)算機(jī)價(jià)格昂貴,削弱了其市場(chǎng)競(jìng)爭(zhēng)力3、操作困難,缺乏一個(gè)統(tǒng)一的標(biāo)準(zhǔn)、操作困難,缺乏一個(gè)統(tǒng)一的標(biāo)準(zhǔn)4、其它諸多原因、其它諸多原因國(guó)內(nèi)的超級(jí)計(jì)算中心國(guó)內(nèi)的超級(jí)計(jì)算中心 國(guó)家高性能計(jì)算中心國(guó)家高性能計(jì)算中心(北京,合肥,成都,武漢,(北京,合肥,成都,武漢,上海,杭州,西安)上海,杭州,西安) 山東大學(xué)高性能計(jì)算中心山東大學(xué)高性能計(jì)算中心 天津高性能計(jì)算中心天津高性能計(jì)算中心 北京應(yīng)用物理與計(jì)算數(shù)學(xué)研究所北京應(yīng)用物理與計(jì)算數(shù)學(xué)研究所- 高性能計(jì)算中心高性能計(jì)算中心 上海超級(jí)計(jì)算中心上海超
13、級(jí)計(jì)算中心 中國(guó)科學(xué)院的超級(jí)計(jì)算中心中國(guó)科學(xué)院的超級(jí)計(jì)算中心五、并行計(jì)算五、并行計(jì)算(機(jī))(機(jī))的應(yīng)用的應(yīng)用1 1、理論科學(xué)、理論科學(xué)2 2、實(shí)驗(yàn)科學(xué)、實(shí)驗(yàn)科學(xué)3 3、計(jì)算科學(xué)、計(jì)算科學(xué)計(jì)算流體力學(xué)、計(jì)算力學(xué)、計(jì)算分子動(dòng)力學(xué)、計(jì)算流體力學(xué)、計(jì)算力學(xué)、計(jì)算分子動(dòng)力學(xué)、計(jì)算生物學(xué)、計(jì)算化學(xué)、計(jì)算氣象學(xué)、計(jì)算材料計(jì)算生物學(xué)、計(jì)算化學(xué)、計(jì)算氣象學(xué)、計(jì)算材料學(xué)、計(jì)算物理學(xué)、計(jì)算電子學(xué)、學(xué)、計(jì)算物理學(xué)、計(jì)算電子學(xué)、計(jì)算量子力計(jì)算量子力學(xué)、學(xué)、 中長(zhǎng)期天氣預(yù)報(bào)。每增加一天,要求計(jì)算速度增加一中長(zhǎng)期天氣預(yù)報(bào)。每增加一天,要求計(jì)算速度增加一個(gè)數(shù)量級(jí)。個(gè)數(shù)量級(jí)。 信息戰(zhàn)。關(guān)鍵是對(duì)信息的處理速度,如雷達(dá)信息的處信息
14、戰(zhàn)。關(guān)鍵是對(duì)信息的處理速度,如雷達(dá)信息的處理理 地震預(yù)報(bào)預(yù)測(cè)地震預(yù)報(bào)預(yù)測(cè) 石油勘測(cè)石油勘測(cè) 生物信息處理生物信息處理 .六、并行計(jì)算機(jī)的分類六、并行計(jì)算機(jī)的分類指令與數(shù)據(jù):指令與數(shù)據(jù):SIMD(Single-Instruction Multiple-Data),同時(shí)用相同的指令對(duì),同時(shí)用相同的指令對(duì)不同的數(shù)據(jù)進(jìn)行操作不同的數(shù)據(jù)進(jìn)行操作MIMD(Multiple-Instruction Multiple-Data),同時(shí)有多條指令,同時(shí)有多條指令對(duì)不同的數(shù)據(jù)進(jìn)行操作對(duì)不同的數(shù)據(jù)進(jìn)行操作SPMD(Single-Program Multuple-Data),同時(shí)執(zhí)行相同的程序,同時(shí)執(zhí)行相同的程序?qū)Σ?/p>
15、同數(shù)據(jù)操作對(duì)不同數(shù)據(jù)操作MPMD(Multiple-Program Multuple-Data),同時(shí)有多個(gè)程序?qū)Γ瑫r(shí)有多個(gè)程序?qū)Σ煌臄?shù)據(jù)進(jìn)行操作不同的數(shù)據(jù)進(jìn)行操作存儲(chǔ)方式:存儲(chǔ)方式: 共享內(nèi)存共享內(nèi)存 處理單元通過對(duì)共享內(nèi)存的訪問來交換信息協(xié)調(diào)各處理處理單元通過對(duì)共享內(nèi)存的訪問來交換信息協(xié)調(diào)各處理器對(duì)并行任務(wù)的處理。器對(duì)并行任務(wù)的處理。 分布式內(nèi)存分布式內(nèi)存 各個(gè)處理單元擁有獨(dú)立的局部存儲(chǔ)器,處理器之間通過各個(gè)處理單元擁有獨(dú)立的局部存儲(chǔ)器,處理器之間通過消息傳遞來交換信息,協(xié)調(diào)和控制各個(gè)處理器的執(zhí)行。消息傳遞來交換信息,協(xié)調(diào)和控制各個(gè)處理器的執(zhí)行。 分布式共享內(nèi)存分布式共享內(nèi)存 結(jié)合前兩
16、者特點(diǎn),提高了整個(gè)系統(tǒng)的計(jì)算能力而且可以結(jié)合前兩者特點(diǎn),提高了整個(gè)系統(tǒng)的計(jì)算能力而且可以提高系統(tǒng)的模塊性和擴(kuò)展性,有利于快速構(gòu)造超大型的計(jì)提高系統(tǒng)的模塊性和擴(kuò)展性,有利于快速構(gòu)造超大型的計(jì)算系統(tǒng)算系統(tǒng)七、并行算法及分類七、并行算法及分類 算法是解題的精確描述算法是解題的精確描述 -是一組有窮的規(guī)則,它規(guī)定了解決某一特定類型問是一組有窮的規(guī)則,它規(guī)定了解決某一特定類型問題的一系列運(yùn)算。并行計(jì)算是可同時(shí)求解的諸進(jìn)程的集題的一系列運(yùn)算。并行計(jì)算是可同時(shí)求解的諸進(jìn)程的集合,這些進(jìn)程相互作用和協(xié)調(diào)動(dòng)作,并最終獲得問題的合,這些進(jìn)程相互作用和協(xié)調(diào)動(dòng)作,并最終獲得問題的求解。求解。 并行算法就是對(duì)并行計(jì)算過
17、程的精確描述并行算法就是對(duì)并行計(jì)算過程的精確描述 并行算法可以從不同的角度分類為:并行算法可以從不同的角度分類為: -數(shù)值計(jì)算并行算法和非數(shù)值計(jì)算并行算法數(shù)值計(jì)算并行算法和非數(shù)值計(jì)算并行算法 -同步并行算法和異步并行算法同步并行算法和異步并行算法 -共享存儲(chǔ)并行算法和分布存儲(chǔ)并行算法共享存儲(chǔ)并行算法和分布存儲(chǔ)并行算法數(shù)值計(jì)算并行算法和非數(shù)值計(jì)算并行算法數(shù)值計(jì)算并行算法和非數(shù)值計(jì)算并行算法數(shù)值計(jì)算數(shù)值計(jì)算是指基于代數(shù)關(guān)系運(yùn)算的計(jì)算問題是指基于代數(shù)關(guān)系運(yùn)算的計(jì)算問題 -如矩陣運(yùn)算,多項(xiàng)式求根,線性代數(shù)方程組的求如矩陣運(yùn)算,多項(xiàng)式求根,線性代數(shù)方程組的求解等解等 -科學(xué)與工程中的計(jì)算問題如計(jì)算力學(xué),
18、計(jì)算物理,科學(xué)與工程中的計(jì)算問題如計(jì)算力學(xué),計(jì)算物理,計(jì)算化學(xué)等一般為數(shù)值計(jì)算問題計(jì)算化學(xué)等一般為數(shù)值計(jì)算問題非數(shù)值計(jì)算非數(shù)值計(jì)算是指基于比較關(guān)系的運(yùn)算問題是指基于比較關(guān)系的運(yùn)算問題 -諸如排序、選擇、搜索、匹配等符號(hào)處理諸如排序、選擇、搜索、匹配等符號(hào)處理 -在符號(hào)類的信息處理中獲得廣泛應(yīng)用,如數(shù)據(jù)庫在符號(hào)類的信息處理中獲得廣泛應(yīng)用,如數(shù)據(jù)庫領(lǐng)域的計(jì)算問題,海量數(shù)據(jù)挖掘,生物信息學(xué)等領(lǐng)域的計(jì)算問題,海量數(shù)據(jù)挖掘,生物信息學(xué)等同步并行計(jì)算和異步并行計(jì)算同步并行計(jì)算和異步并行計(jì)算同步并行計(jì)算:同步并行計(jì)算:參與并行計(jì)算的各個(gè)進(jìn)程必須在相同的參與并行計(jì)算的各個(gè)進(jìn)程必須在相同的時(shí)刻執(zhí)行至某一位置,此
19、時(shí)較先到達(dá)該點(diǎn)的進(jìn)程必須等時(shí)刻執(zhí)行至某一位置,此時(shí)較先到達(dá)該點(diǎn)的進(jìn)程必須等待其它進(jìn)程均已到達(dá)該位置才向下執(zhí)行待其它進(jìn)程均已到達(dá)該位置才向下執(zhí)行 大多數(shù)工程計(jì)算所采用并行計(jì)算方式大多數(shù)工程計(jì)算所采用并行計(jì)算方式 并行化程度較低并行化程度較低異步并行計(jì)算:異步并行計(jì)算:各進(jìn)程獨(dú)立運(yùn)行,互不干涉各進(jìn)程獨(dú)立運(yùn)行,互不干涉 并行化程度較高并行化程度較高同步并行計(jì)算同步并行計(jì)算異步并行計(jì)算異步并行計(jì)算共享存儲(chǔ)并行算法和分布存儲(chǔ)并行算法共享存儲(chǔ)并行算法和分布存儲(chǔ)并行算法適用于不同的機(jī)器適用于不同的機(jī)器 劃分劃分(Partitioning)(Partitioning) 劃分計(jì)算與數(shù)據(jù),開拓并行機(jī)會(huì)劃分計(jì)算與數(shù)
20、據(jù),開拓并行機(jī)會(huì) 通信通信(Commutication)(Commutication) 計(jì)算之間數(shù)據(jù)共享,任務(wù)協(xié)調(diào)計(jì)算之間數(shù)據(jù)共享,任務(wù)協(xié)調(diào) 組合組合(Agglomeration)(Agglomeration) 合理組織各任務(wù)來提高性能合理組織各任務(wù)來提高性能 映射映射(Mapping)(Mapping)分配任務(wù)(分布式、共享)分配任務(wù)(分布式、共享)分配給不同處理器的任務(wù)量應(yīng)當(dāng)均衡,分配給不同處理器的任務(wù)量應(yīng)當(dāng)均衡,不同處理器交互應(yīng)當(dāng)最少不同處理器交互應(yīng)當(dāng)最少八、八、PCAMPCAM并行算法設(shè)計(jì)過程并行算法設(shè)計(jì)過程九、并行計(jì)算在地球物理領(lǐng)域的應(yīng)用九、并行計(jì)算在地球物理領(lǐng)域的應(yīng)用采集采集處理處
21、理解釋解釋反演反演所有流程所有流程1、地震波場(chǎng)正演、地震波場(chǎng)正演222222222( , , , )( , , , )( , , , )1( , , , )u x y z tu x y z tu x y z tu x y z txyzvt已知模型求響應(yīng)已知模型求響應(yīng)v11v12v13v1nv21v2nvijvm1vmn已知模型求響應(yīng)已知模型求響應(yīng)三維情況下所需的內(nèi)存空間三維情況下所需的內(nèi)存空間2000*2000*2000*4*3=89G彈性波更多彈性波更多2、地震資料疊前偏移、地震資料疊前偏移已知響應(yīng)求模型已知響應(yīng)求模型3、地震數(shù)據(jù)可視化與解釋、地震數(shù)據(jù)可視化與解釋4、其它應(yīng)用、其它應(yīng)用多波多
22、分量資料多波多分量資料三維連片處理三維連片處理屬性提取屬性提取.第二章第二章 MPIMPI簡(jiǎn)介簡(jiǎn)介 并行語言的產(chǎn)生方式并行語言的產(chǎn)生方式 PVM并行編程并行編程 MPI并行編程并行編程串行語言串行語言并行語言并行語言一、一、 并行語言的產(chǎn)生方式并行語言的產(chǎn)生方式設(shè)計(jì)全新的并行語言設(shè)計(jì)全新的并行語言改變串行語言的語法,使其支持并行編程改變串行語言的語法,使其支持并行編程不改變串行語言的語法,僅為串行語言提供并行庫不改變串行語言的語法,僅為串行語言提供并行庫目前較常用的并行編程語言:目前較常用的并行編程語言: PVM DPF OpenMP MPI共同特點(diǎn):共同特點(diǎn): 公用軟件公用軟件, 易于得到易
23、于得到 多數(shù)廠家支持多數(shù)廠家支持消息傳遞的特點(diǎn)消息傳遞的特點(diǎn): : 在消息傳遞模型中在消息傳遞模型中, , 一個(gè)并行應(yīng)用由一組進(jìn)程組成一個(gè)并行應(yīng)用由一組進(jìn)程組成, , 每個(gè)進(jìn)每個(gè)進(jìn)程的代碼是本地的程的代碼是本地的, , 只能訪問私有數(shù)據(jù)只能訪問私有數(shù)據(jù), , 進(jìn)程之間通過傳遞消進(jìn)程之間通過傳遞消息實(shí)現(xiàn)數(shù)據(jù)共享和進(jìn)程同步息實(shí)現(xiàn)數(shù)據(jù)共享和進(jìn)程同步. . 優(yōu)點(diǎn)優(yōu)點(diǎn): : 用戶可以對(duì)并行性的開發(fā)、數(shù)據(jù)分布和通信實(shí)現(xiàn)完全控制用戶可以對(duì)并行性的開發(fā)、數(shù)據(jù)分布和通信實(shí)現(xiàn)完全控制. . 缺點(diǎn)缺點(diǎn): : (1)(1)要求程序員顯式地處理通信問題要求程序員顯式地處理通信問題, , 如如, , 消息傳遞調(diào)用的位置消
24、息傳遞調(diào)用的位置, , 數(shù)據(jù)移動(dòng)數(shù)據(jù)移動(dòng), , 數(shù)據(jù)復(fù)制數(shù)據(jù)復(fù)制, , 數(shù)據(jù)操作數(shù)據(jù)操作, , 數(shù)據(jù)的一致性等等數(shù)據(jù)的一致性等等. . (2)(2)對(duì)大多數(shù)科學(xué)計(jì)算程序來說對(duì)大多數(shù)科學(xué)計(jì)算程序來說, , 消息傳遞模型的真正困難還在于消息傳遞模型的真正困難還在于顯式的域分解顯式的域分解, , 也就是說也就是說, , 將對(duì)相應(yīng)數(shù)據(jù)的操作限定在指定的將對(duì)相應(yīng)數(shù)據(jù)的操作限定在指定的處理器上進(jìn)行處理器上進(jìn)行, , 在每個(gè)處理器上只能看見整個(gè)分布數(shù)據(jù)的一部在每個(gè)處理器上只能看見整個(gè)分布數(shù)據(jù)的一部分分. . (3)(3)無法以漸進(jìn)的方式、通過逐步將串行代碼轉(zhuǎn)換成并行代碼而開無法以漸進(jìn)的方式、通過逐步將串行代
25、碼轉(zhuǎn)換成并行代碼而開發(fā)出來發(fā)出來. . 大量的散布在程序各處的域分解要求整個(gè)程序由串行大量的散布在程序各處的域分解要求整個(gè)程序由串行到并行的轉(zhuǎn)換一次性實(shí)現(xiàn)到并行的轉(zhuǎn)換一次性實(shí)現(xiàn), , 而共享存儲(chǔ)方法允許在現(xiàn)有的串行而共享存儲(chǔ)方法允許在現(xiàn)有的串行代碼中插入并行說明從而實(shí)現(xiàn)逐步轉(zhuǎn)換代碼中插入并行說明從而實(shí)現(xiàn)逐步轉(zhuǎn)換. .與之相比與之相比, , 這是消息傳這是消息傳遞的一個(gè)明顯的缺點(diǎn)遞的一個(gè)明顯的缺點(diǎn). . PVM(Parallel Virtual Machine)并行虛擬機(jī)并行虛擬機(jī) 是一種常用的基于消息傳遞的并行編程環(huán)境,它把工是一種常用的基于消息傳遞的并行編程環(huán)境,它把工作站網(wǎng)絡(luò)構(gòu)成一個(gè)虛擬的
26、并行機(jī)系統(tǒng),為并行應(yīng)用提供運(yùn)作站網(wǎng)絡(luò)構(gòu)成一個(gè)虛擬的并行機(jī)系統(tǒng),為并行應(yīng)用提供運(yùn)行平臺(tái),使得大型計(jì)算在花費(fèi)較少的情況下得以實(shí)現(xiàn)。行平臺(tái),使得大型計(jì)算在花費(fèi)較少的情況下得以實(shí)現(xiàn)。 PVM的設(shè)計(jì)初衷是為了將由異種機(jī)構(gòu)成的由低帶寬、的設(shè)計(jì)初衷是為了將由異種機(jī)構(gòu)成的由低帶寬、低傳輸速率相連的網(wǎng)絡(luò)作為大規(guī)模的消息傳遞并行計(jì)算環(huán)低傳輸速率相連的網(wǎng)絡(luò)作為大規(guī)模的消息傳遞并行計(jì)算環(huán)境,使之較好地支持粗粒度和混合編程任務(wù)的執(zhí)行。境,使之較好地支持粗粒度和混合編程任務(wù)的執(zhí)行。 PVM是一個(gè)自包含、通用的純軟件系統(tǒng)。是一個(gè)自包含、通用的純軟件系統(tǒng)。 使用使用PVM時(shí),用戶可構(gòu)造一個(gè)虛擬機(jī),該虛擬機(jī)由時(shí),用戶可構(gòu)造一個(gè)
27、虛擬機(jī),該虛擬機(jī)由一組全相聯(lián)的結(jié)點(diǎn)組成,每個(gè)結(jié)點(diǎn)可以為任何一臺(tái)計(jì)算機(jī)。一組全相聯(lián)的結(jié)點(diǎn)組成,每個(gè)結(jié)點(diǎn)可以為任何一臺(tái)計(jì)算機(jī)。二、二、 PVMPVM并行編程并行編程1 1、 PVMPVM的開發(fā)歷史的開發(fā)歷史 最早可追溯到最早可追溯到1989年,由美國(guó)的年,由美國(guó)的Tennessee(田納西(田納西州)大學(xué),州)大學(xué),Oak Ridge(奧克里季奧克里季)國(guó)家實(shí)驗(yàn)室和國(guó)家實(shí)驗(yàn)室和Emory大學(xué)聯(lián)合研制的一個(gè)基于大學(xué)聯(lián)合研制的一個(gè)基于UNIX環(huán)境的實(shí)驗(yàn)性環(huán)境的實(shí)驗(yàn)性網(wǎng)絡(luò)計(jì)算環(huán)境。網(wǎng)絡(luò)計(jì)算環(huán)境。 PVM推出后被眾多用戶廣泛采納,成為并行處理領(lǐng)推出后被眾多用戶廣泛采納,成為并行處理領(lǐng)域非常流行的軟件。域非
28、常流行的軟件。 PVM已經(jīng)在已經(jīng)在Windows NT和和Windows 95等非等非NUIX平臺(tái)上實(shí)現(xiàn),程序設(shè)計(jì)語言支持平臺(tái)上實(shí)現(xiàn),程序設(shè)計(jì)語言支持C、FORTRAN、JAVA目前它的研究與開發(fā)仍在各大學(xué)和研究機(jī)構(gòu)進(jìn)行。目前它的研究與開發(fā)仍在各大學(xué)和研究機(jī)構(gòu)進(jìn)行。 2 2、 PVMPVM的特點(diǎn)的特點(diǎn) 支持多用戶及多任務(wù),多個(gè)用戶可以將系統(tǒng)配置成相互支持多用戶及多任務(wù),多個(gè)用戶可以將系統(tǒng)配置成相互重疊的虛擬機(jī),每個(gè)用戶可同時(shí)執(zhí)行多個(gè)應(yīng)用程序;重疊的虛擬機(jī),每個(gè)用戶可同時(shí)執(zhí)行多個(gè)應(yīng)用程序; 支持多種并支持多種并 行計(jì)算模型,易于編程;行計(jì)算模型,易于編程; 系統(tǒng)提供了一組便于使用的通信原語,具有
29、較高的消息系統(tǒng)提供了一組便于使用的通信原語,具有較高的消息傳遞能力,同時(shí)還提供了消息緩沖區(qū)的動(dòng)態(tài)管理機(jī)制。傳遞能力,同時(shí)還提供了消息緩沖區(qū)的動(dòng)態(tài)管理機(jī)制。 提出了任務(wù)組的概念,并且在程序運(yùn)行過程中可動(dòng)態(tài)地提出了任務(wù)組的概念,并且在程序運(yùn)行過程中可動(dòng)態(tài)地改變這些任務(wù)組。改變這些任務(wù)組。 支持異構(gòu)計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成的并行虛擬計(jì)算機(jī)系統(tǒng),且易支持異構(gòu)計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成的并行虛擬計(jì)算機(jī)系統(tǒng),且易于安裝、配置。于安裝、配置。 具有容錯(cuò)功能,當(dāng)發(fā)現(xiàn)一個(gè)節(jié)點(diǎn)出故障時(shí),會(huì)自動(dòng)將其具有容錯(cuò)功能,當(dāng)發(fā)現(xiàn)一個(gè)節(jié)點(diǎn)出故障時(shí),會(huì)自動(dòng)將其從虛擬機(jī)中刪除。從虛擬機(jī)中刪除。 3 3、 PVMPVM的通信功能的通信功能 消息緩沖區(qū)管理
30、消息緩沖區(qū)管理 創(chuàng)建、釋放、初始化、獲取消息緩沖區(qū)創(chuàng)建、釋放、初始化、獲取消息緩沖區(qū) 消息打包、解包消息打包、解包 點(diǎn)對(duì)點(diǎn)通信點(diǎn)對(duì)點(diǎn)通信 阻塞方式阻塞方式 非阻塞方式非阻塞方式 組通信組通信 多任務(wù)發(fā)送、廣播、同步、規(guī)約多任務(wù)發(fā)送、廣播、同步、規(guī)約 4 4、 PVMPVM虛擬機(jī)的結(jié)構(gòu)虛擬機(jī)的結(jié)構(gòu) PVM守護(hù)進(jìn)程(守護(hù)進(jìn)程(PVMD) PVM的核心,駐留在構(gòu)成虛擬機(jī)的每臺(tái)實(shí)際計(jì)算機(jī)上的核心,駐留在構(gòu)成虛擬機(jī)的每臺(tái)實(shí)際計(jì)算機(jī)上 完成虛擬機(jī)的維護(hù)、任務(wù)的控制、消息傳遞等工作完成虛擬機(jī)的維護(hù)、任務(wù)的控制、消息傳遞等工作 PVM接口庫接口庫 包含了用戶可調(diào)用的包含了用戶可調(diào)用的PVM庫函數(shù)(消息傳遞、任
31、務(wù)創(chuàng)庫函數(shù)(消息傳遞、任務(wù)創(chuàng)建、任務(wù)間的協(xié)作同步及虛擬機(jī)的動(dòng)態(tài)配置等)建、任務(wù)間的協(xié)作同步及虛擬機(jī)的動(dòng)態(tài)配置等) 所有的所有的PVM程序必須和該庫鏈接程序必須和該庫鏈接 PVM控制臺(tái)控制臺(tái) 為用戶提供用于虛擬機(jī)管理、任務(wù)管理等功能的交互為用戶提供用于虛擬機(jī)管理、任務(wù)管理等功能的交互式界面式界面 三、三、 MPIMPI并行編程并行編程MPI:Message Passing Interface當(dāng)前應(yīng)用最為廣泛的并行編程工具當(dāng)前應(yīng)用最為廣泛的并行編程工具是一個(gè)庫而不是一門語言是一個(gè)庫而不是一門語言是一種標(biāo)準(zhǔn)或規(guī)范的代表而不特指某一個(gè)對(duì)它的具體是一種標(biāo)準(zhǔn)或規(guī)范的代表而不特指某一個(gè)對(duì)它的具體實(shí)現(xiàn)實(shí)現(xiàn)是一
32、種消息傳遞編程模型是一種消息傳遞編程模型,并成為這種編程模型的代表并成為這種編程模型的代表和事實(shí)上的標(biāo)準(zhǔn)和事實(shí)上的標(biāo)準(zhǔn)1 1、什么是什么是MPI?2 2、MPI的三個(gè)主要目的的三個(gè)主要目的 1 較高的通信性能;較高的通信性能; 2 較好的程序可移植性;較好的程序可移植性; 3 強(qiáng)大的功能。強(qiáng)大的功能。 提供應(yīng)用程序編程接口。提供應(yīng)用程序編程接口。 提高通信效率。措施包括避免存儲(chǔ)器到存儲(chǔ)器的多次提高通信效率。措施包括避免存儲(chǔ)器到存儲(chǔ)器的多次重復(fù)拷貝,允許計(jì)算和通信的重疊等。重復(fù)拷貝,允許計(jì)算和通信的重疊等。 可在異構(gòu)環(huán)境下提供實(shí)現(xiàn)。可在異構(gòu)環(huán)境下提供實(shí)現(xiàn)。 提供的接口可以方便提供的接口可以方便
33、C 語言和語言和 Fortran 77的調(diào)用。的調(diào)用。 提供可靠的通信接口。即用戶不必處理通信失敗。提供可靠的通信接口。即用戶不必處理通信失敗。 定義的接口和現(xiàn)在已有接口(如定義的接口和現(xiàn)在已有接口(如PVM)差別不能太大)差別不能太大,但是允許擴(kuò)展以提供更大的靈活性。,但是允許擴(kuò)展以提供更大的靈活性。 定義的接口能在基本的通信和系統(tǒng)軟件無重大改變時(shí)定義的接口能在基本的通信和系統(tǒng)軟件無重大改變時(shí),在許多并行計(jì)算機(jī)生產(chǎn)商的平臺(tái)上實(shí)現(xiàn)。接口的語義,在許多并行計(jì)算機(jī)生產(chǎn)商的平臺(tái)上實(shí)現(xiàn)。接口的語義是獨(dú)立于語言的。是獨(dú)立于語言的。 接口設(shè)計(jì)應(yīng)是線程安全的。接口設(shè)計(jì)應(yīng)是線程安全的。1992年4月 組建了一
34、個(gè)制定消息傳遞接口標(biāo)準(zhǔn)的工作組 1992年10月 初稿形成,主要定義了點(diǎn)對(duì)點(diǎn)通信接口 1993年1月 第一屆MPI會(huì)議在Dallas舉行 1993年2月 公布了MPI-1修定版本 1993年11月 MPI的草稿和概述發(fā)表在Supercomputing93的會(huì)議論文集中 1994年5月 MPI標(biāo)準(zhǔn)正式發(fā)布 1994年7月 發(fā)布了MPI標(biāo)準(zhǔn)的勘誤表 1997年 MPI論壇發(fā)布了一個(gè)修訂的標(biāo)準(zhǔn), 叫做MPI-2, 同時(shí), 原來的MPI更名為MPI-1 3 3、MPI的產(chǎn)生與發(fā)展的產(chǎn)生與發(fā)展4 4、MPI的語言綁定的語言綁定 MPI不是一門語言,而是一個(gè)庫,必須和特定的語不是一門語言,而是一個(gè)庫,必須
35、和特定的語言綁定才能進(jìn)行言綁定才能進(jìn)行MPI_I:C、FORTRAN77MPI_II:C+、FORTRAN905 5、目前、目前MPI的主要實(shí)現(xiàn)的主要實(shí)現(xiàn) MPICH: 美國(guó)的美國(guó)的Argonne國(guó)家實(shí)驗(yàn)室國(guó)家實(shí)驗(yàn)室 /mpi/mpich CHIMP: 愛丁堡大學(xué)的并行計(jì)算中心愛丁堡大學(xué)的并行計(jì)算中心 ftp:/ftp.epcc.ed.ac.uk/pub/packages/chimp LAM(Local Area Multicomputer): 俄亥俄州立大學(xué)俄亥俄州立大學(xué) /lam/download
36、較強(qiáng)的通信功能較強(qiáng)的通信功能 較高的可移置性較高的可移置性 與最常用的編譯器實(shí)現(xiàn)了綁定與最常用的編譯器實(shí)現(xiàn)了綁定 免費(fèi),源代碼開放免費(fèi),源代碼開放6 6、MPI的特點(diǎn)的特點(diǎn)第三章第三章 第一個(gè)第一個(gè)MPIMPI程序程序 MPI程序的框架結(jié)構(gòu)程序的框架結(jié)構(gòu) 第一個(gè)第一個(gè)MPI程序程序 并行程序的運(yùn)行方式并行程序的運(yùn)行方式 MP程序的慣例程序的慣例一、一、MPI程序的框架結(jié)構(gòu)程序的框架結(jié)構(gòu)頭文件頭文件包含包含MPI庫庫相關(guān)變量的聲明相關(guān)變量的聲明定義與通信有關(guān)的變量定義與通信有關(guān)的變量程序開始程序開始調(diào)用調(diào)用MPI初始化函數(shù)初始化函數(shù)程序結(jié)束程序結(jié)束調(diào)用調(diào)用MPI結(jié)束函數(shù)結(jié)束函數(shù) 程序體程序體計(jì)算
37、與通信計(jì)算與通信調(diào)用調(diào)用MPI其它函數(shù)其它函數(shù)二、第一個(gè)二、第一個(gè)MPI程序程序#include void main(int argc, char *argv) printf(“hello world!n”);用串行的用串行的C語言實(shí)現(xiàn)語言實(shí)現(xiàn)“hello world”第三部分第三部分第五部分第五部分第一部分第一部分用用C+MPI實(shí)現(xiàn)實(shí)現(xiàn)hello world!#include mpi.h#include #include void main(int argc,char* argv) int myid, numprocs namelen; char processor_nameMPI_MAX_
38、PROCESSOR_NAME; MPI_Init(&argc,&argv);/*程序初始化程序初始化*/ MPI_Comm_rank(MPI_COMM_WORLD,&myid); /*得到當(dāng)前進(jìn)程號(hào)得到當(dāng)前進(jìn)程號(hào)*/MPI_Comm_size(MPI_COMM_WORLD,&numprocs); /*得到總的進(jìn)程數(shù)得到總的進(jìn)程數(shù)*/MPI_Get_processor_name(processor_name,&namelen); /*得到機(jī)器名得到機(jī)器名*/printf(“hello world! Process %d of %d on %sn, myid
39、, numprocs, processor_name);MPI_Finalize(); /*結(jié)束結(jié)束*/ 第二部分第二部分第四部分第四部分執(zhí)行結(jié)果執(zhí)行結(jié)果三、并行程序的運(yùn)行方式三、并行程序的運(yùn)行方式進(jìn)程進(jìn)程進(jìn)程進(jìn)程是一個(gè)程序,同時(shí)包含它的執(zhí)行環(huán)境(內(nèi)存、寄是一個(gè)程序,同時(shí)包含它的執(zhí)行環(huán)境(內(nèi)存、寄存器、程序計(jì)數(shù)器等),是操作系統(tǒng)中獨(dú)立存在的可存器、程序計(jì)數(shù)器等),是操作系統(tǒng)中獨(dú)立存在的可執(zhí)行的基本程序單位。執(zhí)行的基本程序單位。通俗理解通俗理解:串行應(yīng)用程序編譯形成的可執(zhí)行代碼,分:串行應(yīng)用程序編譯形成的可執(zhí)行代碼,分為為“指令指令”和和“數(shù)據(jù)數(shù)據(jù)”兩個(gè)部分,并在程序執(zhí)行時(shí)兩個(gè)部分,并在程序執(zhí)行
40、時(shí)“獨(dú)立地申請(qǐng)和占有獨(dú)立地申請(qǐng)和占有”內(nèi)存空間,且所有計(jì)算均局限于內(nèi)存空間,且所有計(jì)算均局限于該內(nèi)存空間。該內(nèi)存空間。正在微機(jī)上運(yùn)行的進(jìn)程正在微機(jī)上運(yùn)行的進(jìn)程單機(jī)內(nèi)的多個(gè)進(jìn)程單機(jī)內(nèi)的多個(gè)進(jìn)程多個(gè)進(jìn)程可以多個(gè)進(jìn)程可以同時(shí)存在于單機(jī)內(nèi)同一操作系統(tǒng)同時(shí)存在于單機(jī)內(nèi)同一操作系統(tǒng):由操作:由操作系統(tǒng)負(fù)責(zé)調(diào)度分時(shí)共享處理機(jī)資源(系統(tǒng)負(fù)責(zé)調(diào)度分時(shí)共享處理機(jī)資源(CPU、內(nèi)存、存儲(chǔ)、內(nèi)存、存儲(chǔ)、外設(shè)等)。外設(shè)等)。進(jìn)程間相互獨(dú)立進(jìn)程間相互獨(dú)立(內(nèi)存空間不相交):在操作系統(tǒng)調(diào)度(內(nèi)存空間不相交):在操作系統(tǒng)調(diào)度下各自獨(dú)立地運(yùn)行,例如多個(gè)串行應(yīng)用程序在同一臺(tái)計(jì)算下各自獨(dú)立地運(yùn)行,例如多個(gè)串行應(yīng)用程序在同一臺(tái)計(jì)算機(jī)
41、中運(yùn)行機(jī)中運(yùn)行。進(jìn)程進(jìn)程1內(nèi)存進(jìn)程進(jìn)程2最基本的消息傳遞操作:最基本的消息傳遞操作:發(fā)送消息(發(fā)送消息(send)、接受消息)、接受消息(receive)、進(jìn)程同步()、進(jìn)程同步(barrier)、規(guī)約()、規(guī)約(reduction)。)。消息傳遞的實(shí)現(xiàn):消息傳遞的實(shí)現(xiàn):共享內(nèi)存或信號(hào)量,用戶不必關(guān)心。共享內(nèi)存或信號(hào)量,用戶不必關(guān)心。進(jìn)程間可以相互交換信息進(jìn)程間可以相互交換信息:例如數(shù)據(jù)交換、同步等待,:例如數(shù)據(jù)交換、同步等待,消息消息是這些交換信息的基本單位,是這些交換信息的基本單位,消息傳遞消息傳遞是指這些信息是指這些信息在進(jìn)程間的相互交換,是實(shí)現(xiàn)進(jìn)程間通信的唯一方式在進(jìn)程間的相互交換,是
42、實(shí)現(xiàn)進(jìn)程間通信的唯一方式。同時(shí)運(yùn)行于單機(jī)上的多個(gè)進(jìn)程同時(shí)運(yùn)行于單機(jī)上的多個(gè)進(jìn)程進(jìn)程進(jìn)程1內(nèi)存內(nèi)存進(jìn)程進(jìn)程2并行程序的單機(jī)運(yùn)行方式并行程序的單機(jī)運(yùn)行方式進(jìn)程進(jìn)程3進(jìn)程進(jìn)程4Hello_world程序在單機(jī)上的運(yùn)行方式程序在單機(jī)上的運(yùn)行方式啟動(dòng)程序,開始執(zhí)行啟動(dòng)程序,開始執(zhí)行進(jìn)程進(jìn)程0進(jìn)程進(jìn)程1進(jìn)程進(jìn)程2進(jìn)程進(jìn)程3MPI_InitMPI_InitMPI_InitMPI_Initmyid=0myid=1myid=2myid=3numproces=4numproces=4numproces=4numproces=4獲取機(jī)器獲取機(jī)器名并打印名并打印獲取機(jī)器獲取機(jī)器名并打印名并打印獲取機(jī)器獲取機(jī)器名并打印
43、名并打印獲取機(jī)器獲取機(jī)器名并打印名并打印MPI_FinalizeMPI_FinalizeMPI_FinalizeMPI_Finalize程序結(jié)束程序結(jié)束包含于通過網(wǎng)絡(luò)聯(lián)接的不同包含于通過網(wǎng)絡(luò)聯(lián)接的不同計(jì)算機(jī)的多個(gè)進(jìn)程計(jì)算機(jī)的多個(gè)進(jìn)程 進(jìn)程獨(dú)立存在:進(jìn)程獨(dú)立存在:進(jìn)程位于不同的計(jì)算機(jī),由各自獨(dú)立的進(jìn)程位于不同的計(jì)算機(jī),由各自獨(dú)立的操作系統(tǒng)調(diào)度,享有獨(dú)立的操作系統(tǒng)調(diào)度,享有獨(dú)立的CPU和內(nèi)存資源。和內(nèi)存資源。 進(jìn)程間相互信息交換:進(jìn)程間相互信息交換:消息傳遞。消息傳遞。 消息傳遞的實(shí)現(xiàn):消息傳遞的實(shí)現(xiàn):基于網(wǎng)絡(luò)基于網(wǎng)絡(luò)socket機(jī)制機(jī)制,用戶不必關(guān)心。用戶不必關(guān)心。進(jìn)程進(jìn)程0進(jìn)程進(jìn)程1進(jìn)程進(jìn)程2
44、進(jìn)程進(jìn)程3通過網(wǎng)絡(luò)進(jìn)行消息傳遞通過網(wǎng)絡(luò)進(jìn)行消息傳遞基于消息傳遞的并行程序執(zhí)行模式基于消息傳遞的并行程序執(zhí)行模式 共享存儲(chǔ)與分布式存儲(chǔ)共享存儲(chǔ)與分布式存儲(chǔ) 屬于并行機(jī)體系結(jié)構(gòu)的范疇,與消息傳遞并行程序設(shè)屬于并行機(jī)體系結(jié)構(gòu)的范疇,與消息傳遞并行程序設(shè)計(jì)平臺(tái)無關(guān)計(jì)平臺(tái)無關(guān)。消息傳遞是相對(duì)于消息傳遞是相對(duì)于進(jìn)程間通信方式進(jìn)程間通信方式而言的,與具體而言的,與具體并行機(jī)存儲(chǔ)模式無關(guān),任何支持進(jìn)程間通信的并行并行機(jī)存儲(chǔ)模式無關(guān),任何支持進(jìn)程間通信的并行機(jī),均可支持消息傳遞并行程序設(shè)計(jì)。機(jī),均可支持消息傳遞并行程序設(shè)計(jì)。幾乎所有共享和分布存儲(chǔ)并行計(jì)算環(huán)境均支持進(jìn)程幾乎所有共享和分布存儲(chǔ)并行計(jì)算環(huán)境均支持進(jìn)程
45、間的消息傳遞通信間的消息傳遞通信。共享存儲(chǔ)與分布式存儲(chǔ)(續(xù))共享存儲(chǔ)與分布式存儲(chǔ)(續(xù)) MPI MPI并行程序設(shè)計(jì)平臺(tái)由并行程序設(shè)計(jì)平臺(tái)由標(biāo)準(zhǔn)消息傳遞函數(shù)及相標(biāo)準(zhǔn)消息傳遞函數(shù)及相關(guān)輔助函數(shù)關(guān)輔助函數(shù)構(gòu)成,多個(gè)進(jìn)程通過調(diào)用這些函數(shù)(類構(gòu)成,多個(gè)進(jìn)程通過調(diào)用這些函數(shù)(類似調(diào)用子程序),進(jìn)行通信。似調(diào)用子程序),進(jìn)行通信。 SPMDSPMD執(zhí)行模式:執(zhí)行模式:一個(gè)程序同時(shí)啟動(dòng)多份,形成多一個(gè)程序同時(shí)啟動(dòng)多份,形成多個(gè)獨(dú)立的進(jìn)程,在不同的處理機(jī)上運(yùn)行,擁有獨(dú)立個(gè)獨(dú)立的進(jìn)程,在不同的處理機(jī)上運(yùn)行,擁有獨(dú)立的內(nèi)存空間,進(jìn)程間通信通過調(diào)用的內(nèi)存空間,進(jìn)程間通信通過調(diào)用MPIMPI函數(shù)來實(shí)現(xiàn)。函數(shù)來實(shí)現(xiàn)。 每
46、個(gè)進(jìn)程開始執(zhí)行時(shí),將獲得一個(gè)唯一的序號(hào)每個(gè)進(jìn)程開始執(zhí)行時(shí),將獲得一個(gè)唯一的序號(hào)(rankrank)。例如啟動(dòng))。例如啟動(dòng)P P個(gè)進(jìn)程,序號(hào)依次為個(gè)進(jìn)程,序號(hào)依次為0 0,1 1,P-1P-1。MPI程序在并行機(jī)上的執(zhí)行模式程序在并行機(jī)上的執(zhí)行模式 用用Fortran+MPI實(shí)現(xiàn)實(shí)現(xiàn)hello world include mpif.hcharacter * (MPI_MAX_PROCESSOR_NAME) processor_nameinteger myid, numprocs, namelen, rc,ierr call MPI_INIT( ierr ) 程序初始化程序初始化call MPI_
47、COMM_RANK( MPI_COMM_WORLD, myid, ierr ) 得到當(dāng)前進(jìn)程號(hào)得到當(dāng)前進(jìn)程號(hào)call MPI_COMM_SIZE( MPI_COMM_WORLD, numprocs, ierr ) 得到總的進(jìn)程數(shù)得到總的進(jìn)程數(shù)call MPI_GET_PROCESSOR_NAME(processor_name, namelen, ierr) 得到處理器名字得到處理器名字write(10,*) myid,numprocs,processor_name10 format(Hello World! Process,I2,of ,I1, on, 20A)call MPI_FINALIZ
48、E(rc) 結(jié)束結(jié)束endMPI程序的慣例程序的慣例 (1) 所有所有MPI的調(diào)用都有前綴的調(diào)用都有前綴“MPI_”( 常量、變常量、變量、過程、函數(shù))。在自己編寫的程序中不準(zhǔn)說明量、過程、函數(shù))。在自己編寫的程序中不準(zhǔn)說明以前綴以前綴“MPI_”開始的任何變量和函數(shù)開始的任何變量和函數(shù) 目的:目的:避免與避免與MPI可能的名字混淆。可能的名字混淆。MPI程序的慣例程序的慣例 (2) FORTRAN形式的形式的MPI調(diào)用,一般全為大寫(雖然調(diào)用,一般全為大寫(雖然FORTRAN不區(qū)分大小寫),不區(qū)分大小寫), C形式的形式的MPI調(diào)用,則為調(diào)用,則為MPI_Aaaa_aaa的形式。的形式。MP
49、I_Comm_rank(MPI_COMM_WORLD,&myid)CALL MPI_COMM_RANK ( MPI_COMM_WORLD , myid , ierr )MPI程序的慣例程序的慣例 (3) 所有所有MPI的的FORTRAN子程序在最后參數(shù)中都有一個(gè)返子程序在最后參數(shù)中都有一個(gè)返回代碼,對(duì)于成功的返回代碼值是回代碼,對(duì)于成功的返回代碼值是MPI_SUCCESS,其他,其他的錯(cuò)誤代碼是依賴于實(shí)現(xiàn)的。的錯(cuò)誤代碼是依賴于實(shí)現(xiàn)的。MPI_Comm_rank(MPI_COMM_WORLD,&myid)CALL MPI_COMM_RANK ( MPI_COMM_WORLD ,
50、myid , ierr )MPI程序的慣例程序的慣例 (4) FORTRAN中的句柄以整型表示,二值變量是邏輯類中的句柄以整型表示,二值變量是邏輯類型。型。FORTRAN的數(shù)組下標(biāo)是以的數(shù)組下標(biāo)是以1開始,但在開始,但在C中是以中是以0開始。開始。MPI程序的慣例程序的慣例 (5) 除非明顯說明,除非明顯說明,F(xiàn)ORTRAN 77的的MPI程序與程序與ANSI FORTRAN 77標(biāo)準(zhǔn)一致。但有些地方不同于標(biāo)準(zhǔn)一致。但有些地方不同于 ANSI FORTRAN 77 標(biāo)準(zhǔn),比如:標(biāo)準(zhǔn),比如:1、MPI標(biāo)識(shí)符限于三十個(gè)有效符號(hào)標(biāo)識(shí)符限于三十個(gè)有效符號(hào), 而不是六個(gè)。而不是六個(gè)。2、MPI標(biāo)識(shí)符可在
51、第一個(gè)字符后包含下劃線。標(biāo)識(shí)符可在第一個(gè)字符后包含下劃線。3、具有一個(gè)選擇參數(shù)的、具有一個(gè)選擇參數(shù)的MPI子程序可以用不同的參數(shù)類型子程序可以用不同的參數(shù)類型來調(diào)用。來調(diào)用。4、在一個(gè)包含文件、在一個(gè)包含文件mpif.h中提供所命名的常量。中提供所命名的常量。5、在支持用戶定義類型的系統(tǒng)中、在支持用戶定義類型的系統(tǒng)中, 鼓勵(lì)生產(chǎn)商在鼓勵(lì)生產(chǎn)商在mpif.h文文件中提供類型說明。件中提供類型說明。 回顧:回顧:MPI程序的基本結(jié)構(gòu)程序的基本結(jié)構(gòu)#include mpi.h#include #include void main(int argc,char* argv) int myid, nump
52、rocs namelen; char processor_nameMPI_MAX_PROCESSOR_NAME; MPI_Init(&argc,&argv);/*程序初始化程序初始化*/ MPI_Comm_rank(MPI_COMM_WORLD,&myid); /*得到當(dāng)前進(jìn)程號(hào)得到當(dāng)前進(jìn)程號(hào)*/ MPI_Comm_size(MPI_COMM_WORLD,&numprocs); /*得到總的進(jìn)程數(shù)得到總的進(jìn)程數(shù)*/ MPI_Get_processor_name(processor_name,&namelen); /*得到機(jī)器名得到機(jī)器名*/ printf
53、(“hello world! Process %d of %d on %sn, myid, numprocs, processor_name); MPI_Finalize(); /*結(jié)束結(jié)束*/ C+MPI與與FORTRAN+MPI的比較的比較include mpif.hcharacter * (MPI_MAX_PROCESSOR_NAME) processor_nameinteger myid, numprocs, namelen, rc,ierr call MPI_INIT( ierr ) 程序初始化程序初始化call MPI_COMM_RANK( MPI_COMM_WORLD, myid
54、, ierr ) 得到當(dāng)前進(jìn)程號(hào)得到當(dāng)前進(jìn)程號(hào)call MPI_COMM_SIZE( MPI_COMM_WORLD, numprocs, ierr ) 得到總的進(jìn)程數(shù)得到總的進(jìn)程數(shù)call MPI_GET_PROCESSOR_NAME(processor_name, namelen, ierr) 得到處理器名字得到處理器名字write(10,*) myid,numprocs,processor_name10 format(Hello World! Process,I2,of ,I1, on, 20A)call MPI_FINALIZE(rc) 結(jié)束結(jié)束endC+MPI與與FORTRAN+MPI
55、的區(qū)別(的區(qū)別(1)頭文件不同:頭文件不同: C: mpi.h FORTRAN : mpif.hC+MPI與與FORTRAN+MPI的區(qū)別(的區(qū)別(2)接口類型不同:接口類型不同: C:函數(shù):函數(shù) FORTRAN : 過程過程MPI_Comm_rank(MPI_COMM_WORLD,&myid)CALL MPI_COMM_RANK ( MPI_COMM_WORLD , myid , ierr )C+MPI與與FORTRAN+MPI的區(qū)別(的區(qū)別(3)輸出型參數(shù)不同:輸出型參數(shù)不同: C:函數(shù):函數(shù)(引用,加取址符(引用,加取址符&) FORTRAN :MPI_Comm_rank
56、(MPI_COMM_WORLD,&myid)CALL MPI_COMM_RANK ( MPI_COMM_WORLD , myid , ierr )C+MPI與與FORTRAN+MPI的區(qū)別(的區(qū)別(4)接口的書寫方式不同:接口的書寫方式不同: C:MPI_Aaaaaa(第一個(gè)字母大寫,其余小寫)(第一個(gè)字母大寫,其余小寫) FORTRAN : MPI_AAAAA(都為大寫都為大寫)MPI_Comm_rank(MPI_COMM_WORLD,&myid)CALL MPI_COMM_RANK ( MPI_COMM_WORLD , myid , ierr )C+MPI與與FORTRAN
57、+MPI的區(qū)別(的區(qū)別(5)參數(shù)個(gè)數(shù)不同:參數(shù)個(gè)數(shù)不同: C: FORTRAN :一般比一般比C語言調(diào)用多一個(gè)返回狀態(tài)參數(shù)語言調(diào)用多一個(gè)返回狀態(tài)參數(shù)MPI_Comm_rank(MPI_COMM_WORLD,&myid)CALL MPI_COMM_RANK ( MPI_COMM_WORLD , myid , ierr )C+MPI與與FORTRAN+MPI的區(qū)別(的區(qū)別(6)數(shù)組的存放方式不同數(shù)組的存放方式不同 C: 數(shù)組的下標(biāo)從數(shù)組的下標(biāo)從0開始開始 按行存放按行存放 FORTRAN : 數(shù)組的下標(biāo)從數(shù)組的下標(biāo)從1開始開始 按列存放按列存放第四章第四章 六個(gè)接口構(gòu)成的六個(gè)接口構(gòu)成的MP
58、IMPI子集子集 內(nèi)容:內(nèi)容: 子集介紹子集介紹 MPI預(yù)定義的數(shù)據(jù)類型預(yù)定義的數(shù)據(jù)類型 數(shù)據(jù)類型匹配與數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)類型匹配與數(shù)據(jù)轉(zhuǎn)換 MPI消息消息一、一、 子集介紹子集介紹1、MPI調(diào)用的說明方式調(diào)用的說明方式獨(dú)立于具體語言的說明獨(dú)立于具體語言的說明C形式的原型說明形式的原型說明FORTAN形式的原型說明形式的原型說明 MPI_INIT() 獨(dú)立于語言的說明獨(dú)立于語言的說明int MPI_Init(int *argc, char *argv) C語言的說明語言的說明MPI_INIT(IERROR)INTEGER IERROR FORTRAN77說明部分說明部分舉例舉例獨(dú)立于具體語言的說明獨(dú)
59、立于具體語言的說明MPI_COMM_RANK(comm,rank)IN comm 該進(jìn)程所在的通信域(句柄)該進(jìn)程所在的通信域(句柄)OUT rank 調(diào)用進(jìn)程在調(diào)用進(jìn)程在comm中的標(biāo)識(shí)號(hào)中的標(biāo)識(shí)號(hào)C形式的原型說明形式的原型說明int MPI_Comm_rank(MPI_Comm comm, int *rank)FORTRAN形式的原型說明形式的原型說明MPI_COMM_RANK(COMM,RANK,IERROR) INTEGER COMM , RANK , IERROR1 1、MPIMPI調(diào)用的說明方式(續(xù))調(diào)用的說明方式(續(xù))參數(shù)說明方式:參數(shù)說明方式: IN(輸入):(輸入):調(diào)用部分
60、傳遞給調(diào)用部分傳遞給MPI的參數(shù),的參數(shù),MPI除了除了使用該參數(shù)外不允許對(duì)這一參數(shù)做任何修改使用該參數(shù)外不允許對(duì)這一參數(shù)做任何修改 OUT(輸出)(輸出):MPI返回給調(diào)用部分的結(jié)果參數(shù),該返回給調(diào)用部分的結(jié)果參數(shù),該參數(shù)的初始值對(duì)參數(shù)的初始值對(duì)MPI沒有任何意義沒有任何意義 INOUT(輸入輸出):(輸入輸出):調(diào)用部分首先將該參數(shù)傳遞給調(diào)用部分首先將該參數(shù)傳遞給MPI,MPI對(duì)這一參數(shù)引用、修改后,將結(jié)果返回給外對(duì)這一參數(shù)引用、修改后,將結(jié)果返回給外部調(diào)用,該參數(shù)的初始值和返回結(jié)果都有意義部調(diào)用,該參數(shù)的初始值和返回結(jié)果都有意義 如果某一個(gè)參數(shù)在調(diào)用前后沒有改變,比如某個(gè)隱含對(duì)象如果某一個(gè)參數(shù)在調(diào)用前后沒有改變,比如某個(gè)隱含對(duì)象的句柄但是該句柄指向的對(duì)象被修改了,這一參數(shù)仍然被的句柄但是該句柄指向的對(duì)象被修改
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度外墻涂料專業(yè)承包及售后服務(wù)合同4篇
- 2025年度農(nóng)藥產(chǎn)品質(zhì)量檢測(cè)與認(rèn)證服務(wù)合同6篇
- 2025版爬架租賃與施工安全監(jiān)督合同4篇
- 2025版戶外廣告位短期租賃及宣傳推廣合同4篇
- 2025年度洗衣機(jī)品牌授權(quán)合作合同范本下載3篇
- 二零二五年度戶外廣告牌門窗安裝及廣告發(fā)布合同3篇
- 二零二五年度民爆工程項(xiàng)目安全防護(hù)設(shè)施采購(gòu)合同2篇
- 2025年度木屋安全監(jiān)控系統(tǒng)安裝合同4篇
- 2025年度影視特效制作合同范本集3篇
- 二零二五年度出租車合資購(gòu)買與品牌推廣合同3篇
- 鋪大棚膜合同模板
- 長(zhǎng)亭送別完整版本
- 2024年英語高考全國(guó)各地完形填空試題及解析
- 智能養(yǎng)老院視頻監(jiān)控技術(shù)方案
- 你比我猜題庫課件
- 無人駕駛航空器安全操作理論復(fù)習(xí)測(cè)試附答案
- 建筑工地春節(jié)留守人員安全技術(shù)交底
- 默納克-NICE1000技術(shù)交流-V1.0
- 蝴蝶蘭的簡(jiǎn)介
- 老年人心理健康量表(含評(píng)分)
- 《小兒靜脈輸液速度》課件
評(píng)論
0/150
提交評(píng)論