《吉林大學(xué)多核程序設(shè)計(jì)第二章并行程序設(shè)計(jì)基礎(chǔ)并行計(jì)算基礎(chǔ)課件》由會員分享,可在線閱讀,更多相關(guān)《吉林大學(xué)多核程序設(shè)計(jì)第二章并行程序設(shè)計(jì)基礎(chǔ)并行計(jì)算基礎(chǔ)課件(31頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、,單擊此處編輯母版標(biāo)題樣式,*,單擊此處編輯母版文本樣式,第二級,第三級,第二章 并行計(jì)算基礎(chǔ),并行計(jì)算:,并行計(jì)算就是將一個(gè)大規(guī)模的計(jì)算問題分解成若干小的任務(wù),通過運(yùn)行在多個(gè)運(yùn)算部件上的這些小任務(wù)的合作來求解一個(gè)規(guī)模很大的計(jì)算問題的一種方法。,強(qiáng)并行計(jì)算:如果一個(gè)計(jì)算由若干子計(jì)算構(gòu)成,若各子計(jì)算之間不存在依賴關(guān)系,可以并行計(jì)算,那么這種計(jì)算可以稱為強(qiáng)并行計(jì)算。,弱并行計(jì)算:如果一個(gè)計(jì)算由若干子計(jì)算構(gòu)成,若各子計(jì)算之間存在依賴關(guān)系,不能并行計(jì)算,但是單個(gè)的子計(jì)算內(nèi)又可以分解為若干更小粒度的子計(jì)算,且這些更小粒度的子計(jì)算是可以并行執(zhí)行的,這種并行計(jì)算可以稱為弱并行計(jì)算。,第二章 并行計(jì)算基礎(chǔ)并行
2、計(jì)算:,1,并行計(jì)算的應(yīng)用,預(yù)測模型的構(gòu)造和模擬、工程設(shè)計(jì)和自動化、能源勘探、醫(yī)學(xué)、軍事以及基礎(chǔ)理論研究等領(lǐng)域中都對計(jì)算提出了極高的要求。,并行計(jì)算三種主要的基本類型:,計(jì)算密集型應(yīng)用,如大型科學(xué)工程計(jì)算與數(shù)值模擬;,數(shù)據(jù)密集型應(yīng)用,如數(shù)字圖書館、數(shù)據(jù)倉庫、數(shù)據(jù)挖掘和計(jì)算可視化等;,網(wǎng)絡(luò)密集型應(yīng)用,如協(xié)同工作、遙控和遠(yuǎn)程醫(yī)療診斷等。,第二章 并行計(jì)算基礎(chǔ),并行計(jì)算的應(yīng)用 第二章 并行計(jì)算基礎(chǔ),2,并行程序開發(fā)方法,并行層次與代碼粒度,指令級并行:在多個(gè)并行層次中指令級并行是代碼粒度最小的并行,也稱為微粒度并行、甚細(xì)粒度并行;,數(shù)據(jù)級并行:又稱為細(xì)粒度并行,它比指令級并行所執(zhí)行的代碼粒度要大一些
3、,一般長度為幾百條指令,這類并行通常都是在編譯階段由編譯器來負(fù)責(zé)實(shí)現(xiàn)的;,控制級并行:也叫中粒度并行,通常是面對過程、子過程,其代碼的長度一般為幾千條指令。這一級的并行通常需要程序員的參與,一般情況下必須由程序員先對過程間的數(shù)據(jù)依賴關(guān)系進(jìn)行分析然后再開發(fā)出相應(yīng)的并行性;,任務(wù)級并行:任務(wù)級并行也叫做作業(yè)級并行、粗粒度并行,其代碼的長度一般可高達(dá)數(shù)萬條指令,一般是由加載程序和操作系統(tǒng)來負(fù)責(zé)處理的。,并行程序開發(fā)方法 并行層次與代碼粒度,3,并行程序開發(fā)方法,并行程序的開發(fā)策略,第一種是采用將已有的串行程序進(jìn)行自動并行化的方法來開發(fā)適合于并行計(jì)算機(jī)運(yùn)行的并行程序;,第二種是調(diào)用并行庫來實(shí)現(xiàn)并行程序
4、的開發(fā);,第三種是使用并行語言重新編寫能運(yùn)行于高性能并行計(jì)算機(jī)上的并行代碼。,并行程序開發(fā)方法并行程序的開發(fā)策略,4,并行程序設(shè)計(jì)模式,并行程序設(shè)計(jì)模式的基本思路,對數(shù)據(jù)進(jìn)行分解,將大的數(shù)據(jù)塊分解成若干小塊,每個(gè)線程處理其中的某些小塊;,對計(jì)算過程進(jìn)行分解,將一個(gè)大的計(jì)算處理過程分解成若干可獨(dú)立運(yùn)行的子過程,然后每個(gè)線程運(yùn)行其中的一個(gè)或多個(gè)子過程;,基于問題進(jìn)行分解,將一個(gè)原問題分解為若干子問題,然后將子問題的解合并起來成為原問題的解。,并行程序設(shè)計(jì)模式 并行程序設(shè)計(jì)模式的基本思路,5,并行程序設(shè)計(jì)模式,并行程序設(shè)計(jì)模式,數(shù)據(jù)分解模式:將數(shù)據(jù)分解成若干獨(dú)立的子數(shù)據(jù)塊,每個(gè)線程處理其中的一個(gè)或多
5、個(gè)子數(shù)據(jù)塊;,分治模式:將一個(gè)原問題的求解分解為多個(gè)子問題的求解,然后再將多個(gè)子問題的解通過一定的計(jì)算方法合并為原問題的解;,流水線模式:將一個(gè)計(jì)算過程分解成流水線式的多個(gè)步驟序列,對于每個(gè)步驟的處理使用一個(gè)或多個(gè)線程來實(shí)現(xiàn);,并行程序設(shè)計(jì)模式并行程序設(shè)計(jì)模式,6,并行程序設(shè)計(jì)模式,并行程序設(shè)計(jì)模式,任務(wù)并行模式:將一個(gè)大的靜態(tài)計(jì)算任務(wù)分解成若干獨(dú)立的小計(jì)算任務(wù),讓這些小計(jì)算任務(wù)并行執(zhí)行;,任務(wù)圖調(diào)度模式:將一個(gè)大的靜態(tài)任務(wù)分解成若干小的計(jì)算任務(wù)時(shí),由于很多時(shí)候各個(gè)小任務(wù)在執(zhí)行時(shí)許多非獨(dú)立的小任務(wù)之間存在依賴關(guān)系,將這種依賴關(guān)系通過一個(gè)無環(huán)有向圖來描述,這個(gè)圖就是任務(wù)圖,對它的并行化方法是任務(wù)
6、調(diào)度問題,這就是任務(wù)圖調(diào)度模式;,動態(tài)任務(wù)調(diào)度模式:任務(wù)圖調(diào)度模式調(diào)度的是靜態(tài)的任務(wù),但是在很多情況下任務(wù)不是靜態(tài)的而是在運(yùn)行過程中動態(tài)產(chǎn)生的。運(yùn)用共享資源分布式計(jì)算的知識實(shí)現(xiàn)的關(guān)于動態(tài)任務(wù)調(diào)度的并行模式就是動態(tài)任務(wù)調(diào)度模式,它的突出特點(diǎn)就是可以實(shí)現(xiàn)并行計(jì)算。,并行程序設(shè)計(jì)模式并行程序設(shè)計(jì)模式,7,并行計(jì)算基礎(chǔ),組成并行計(jì)算機(jī)的各個(gè)部分:,節(jié)點(diǎn)(,node,):每個(gè)節(jié)點(diǎn)由多個(gè)處理器構(gòu)成,可以直接進(jìn)行輸入輸出(,I/O,)操作;,互聯(lián)網(wǎng)絡(luò)(,interconnect network,):所有節(jié)點(diǎn)通過互聯(lián)網(wǎng)絡(luò)相互連接通信;,內(nèi)存(,memory,):內(nèi)存由多個(gè)存儲模塊組成,1、與節(jié)點(diǎn)對稱的分布在互
7、聯(lián)網(wǎng)絡(luò)的兩側(cè);,2、位于各個(gè)節(jié)點(diǎn)的內(nèi)部。,并行計(jì)算基礎(chǔ)組成并行計(jì)算機(jī)的各個(gè)部分:,8,并行計(jì)算基礎(chǔ),內(nèi)存模塊與節(jié)點(diǎn)分離,內(nèi)存模塊位于節(jié)點(diǎn)內(nèi)部,并行計(jì)算基礎(chǔ)內(nèi)存模塊與節(jié)點(diǎn)分離內(nèi)存模塊位于節(jié)點(diǎn)內(nèi)部,9,多級存儲體系結(jié)構(gòu),解決內(nèi)存墻(,memory wall,)性能瓶頸問題;,節(jié)點(diǎn)內(nèi)部的,cache,稱為二級,cache,(,L2 cache,);,處理器內(nèi)部更小的,cache,成為一級,cache,(,L1 cache,);,L1 cache,連接,CPU,寄存器和,L2 cache,,負(fù)責(zé)緩存,L2 cache,中的數(shù)據(jù)到寄存器中。,多級存儲體系結(jié)構(gòu)解決內(nèi)存墻(memory wall)性能瓶頸,
8、10,多級存儲體系結(jié)構(gòu),并行計(jì)算機(jī)的多級存儲結(jié)構(gòu)主要包括兩個(gè)問題:,Cache,的映射策略,即,cache,如何從內(nèi)存中取得數(shù)據(jù)進(jìn)行存儲;,節(jié)點(diǎn)內(nèi)部或者節(jié)點(diǎn)之間內(nèi)存的訪問模式,。,cache,原理,,cache,以,cache,線為基本單位,每條,cache,包含,L,個(gè)字,每個(gè)字,8,個(gè)字節(jié)。例如,,L=4,,,則表示,cache,線包含,4*8=32,個(gè)字節(jié)。內(nèi)存空間分割成塊(,block,),,每個(gè)塊大小與,cache,線長度一致,數(shù)據(jù)在內(nèi)存和,cache,之間的移動以,cache,線為基本單位,。,For i=1 to M,Ai=Ai+2*Bi,如果操作數(shù)存在,cache,中,稱該次訪
9、問是命中的,否則,該次操作是“撲空”的,。,多級存儲體系結(jié)構(gòu)并行計(jì)算機(jī)的多級存儲結(jié)構(gòu)主要包括兩個(gè)問題:,11,多級存儲體系結(jié)構(gòu),cache,的映射策略(,內(nèi)存塊和,cache,線之間如何建立相互映射關(guān)系,),:,直接映射策略(,direct mapping strategy,):每個(gè)內(nèi)存塊只能被唯一的映射到一條,cache,線中,;,K,路組關(guān)聯(lián)映射策略(,K-way set association mapping strategy,):,Cache,被分解為,V,個(gè)組,每個(gè)組由,K,條,cache,線組成,內(nèi)存塊按直接映射策略映射到某個(gè)組,但在該組中,內(nèi)存塊可以被映射到任意一條,cache,
10、線;,全關(guān)聯(lián)映射策略(,full association mapping strategy,),:,內(nèi)存塊可以被映射到,cache,中的任意一條,cache,線。,多級存儲體系結(jié)構(gòu)cache的映射策略(內(nèi)存塊和cache線之,12,訪存模型,UMA,(,Uniform Memory Access,)模型:該模型內(nèi)存模塊與節(jié)點(diǎn)分離,分別位于互聯(lián)網(wǎng)絡(luò)的兩側(cè),物理存儲器被所有節(jié)點(diǎn)共享;,所有節(jié)點(diǎn)訪問任意存儲單元的時(shí)間相同,;,發(fā)生訪存競爭時(shí),仲裁策略平等對待每個(gè)節(jié)點(diǎn),即每個(gè)節(jié)點(diǎn)機(jī)會均等;,各節(jié)點(diǎn)的,CPU,可帶有局部私有高速緩存;,外圍,I/O,設(shè)備也可以共享,且每個(gè)節(jié)點(diǎn)有平等的訪問權(quán)利。,訪存模型
11、UMA(Uniform Memory Access),13,訪存模型,NUMA(Non-Uniform Memory Access)模型,:,該模型內(nèi)存模塊分布在各個(gè)節(jié)點(diǎn)內(nèi)部,所有局部內(nèi)存模塊均構(gòu)成并行計(jì)算機(jī)的全局內(nèi)存模塊。內(nèi)存模塊在物理上是分布的,在邏輯上是全局共享的,這種模型也稱之為“分布式共享訪存模型”,物理存儲器被所有節(jié)點(diǎn)共享,任意節(jié)點(diǎn)可以直接訪問任意內(nèi)存模塊;,節(jié)點(diǎn)訪問內(nèi)存模塊的速度不同,訪問本地存儲模塊的速度一般是訪問其他節(jié)點(diǎn)內(nèi)存模塊的,3,倍以上;,發(fā)生訪存競爭時(shí),仲裁策略對節(jié)點(diǎn)可能是不等價(jià)的;,各節(jié)點(diǎn)的,CPU,可帶有局部私有高速緩存(,cache,);,外圍,I/O,設(shè)備也可
12、以共享,但對各節(jié)點(diǎn)是不等價(jià)的。,訪存模型NUMA(Non-Uniform Memory Ac,14,訪存模型,COMA(Cache-Only Memory Access)模型,:,全高速緩存存儲訪問模型,各處理器節(jié)點(diǎn)中沒有存儲層次結(jié)構(gòu),全部高速緩存組成了全局地址空間;,利用分布的高速緩存目錄進(jìn)行遠(yuǎn)程高速緩存的訪問;,COMA,中的高速緩存容量一般都大于,2,級高速緩存容量;,使用,COMA,時(shí),數(shù)據(jù)開始時(shí)可以任意分配,因?yàn)樵谶\(yùn)行時(shí)它最終會被遷移到要用到它的地方。,訪存模型COMA(Cache-Only Memory Acc,15,并行計(jì)算模型,SIMD同步并行計(jì)算模型,共享存儲的,SIMD,模
13、型(,PRAM,模型);,分布存儲的,SIMD,模型(,SIMD,互聯(lián)網(wǎng)絡(luò)模型),MIMD異步并行計(jì)算模型,異步,PRAM,模型,BSP,模型,LogP,模型,C,3,模型,并行計(jì)算模型 SIMD同步并行計(jì)算模型,16,同步并行計(jì)算模型,SIMD,共享存儲模型假定存在著一個(gè)容量無限大的共享存儲器,有有限或無限個(gè)功能相同的處理器,且均具有簡單的算術(shù)運(yùn)算和邏輯判斷功能,在任何時(shí)刻各處理器均可通過共享存儲單元相互交換數(shù)據(jù)。,SIMD共享存儲模型(PRAM模型),PRAM-EREW,(,Exclusive-Read and Exclusive-Write,),不允許同時(shí)讀和同時(shí)寫;,PRAM-CREW
14、,(,Concurrent-Read and Exclusive-Write,),允許同時(shí)讀但不允許同時(shí)寫;,PRAM-CRCW,(,Concurrent-Read and Concurrent-Write,),允許同時(shí)讀和同時(shí)寫。,優(yōu)點(diǎn):,適合于并行算法的表達(dá)、分析和比較;,使用簡單,很多諸如處理器間通信、存儲管理和進(jìn)程同步等并行計(jì)算機(jī)的低級細(xì)節(jié)均隱含于模型中;,易于設(shè)計(jì)算法和稍加修改便可運(yùn)行在不同的并行計(jì)算機(jī)上;,且有可能加入一些諸如同步和通信等需要考慮的方面。,同步并行計(jì)算模型SIMD共享存儲模型假定存在著一個(gè)容量無限大,17,同步并行計(jì)算模型,SIMD分布存儲模型,采用一維線性連接的,
15、SIMD,模型,簡記為,SIMD-LC,采用網(wǎng)孔連接的,SIMD,模型,簡記為,SIMD-MC,采用樹形連接的,SIMD,模型,簡記為,SIMD-TC,采用樹網(wǎng)連接的,SIMD,模型,簡記為,SIMD-MT,采用立方連接的,SIMD,模型,簡記為,SIMD-CC,采用立方環(huán)連接的,SIMD,模型,簡記為,SIMD-CCC,采用洗牌交換連接的,SIMD,模型,簡記為,SIMD-SE,采用蝶形連接的,SIMD,模型,簡介為,SIMD-BF,采用多級互聯(lián)網(wǎng)絡(luò)連接的,SIMD,模型,簡記為,SIMD-MIN,同步并行計(jì)算模型SIMD分布存儲模型,18,MIMD,異步計(jì)算模型,A,PRAM,模型,APR
16、AM特點(diǎn):,每個(gè)處理器都有其本地存儲器、局部時(shí)鐘和局部程序,處理器間的通信經(jīng)過共享全局存儲器,無全局時(shí)鐘,各處理器異步地獨(dú)立執(zhí)行各自的指令,處理器任何時(shí)間依賴關(guān)系需明確地在各處理器的程序中加入同步障(,Synchronization Barrier,),一條指令可在非確定但有限的時(shí)間內(nèi)完成。,MIMD異步計(jì)算模型APRAM模型APRAM特點(diǎn):,19,MIMD,異步計(jì)算模型,PRAM,模型,APRAM,模型中有四類指令,:,全局讀,將全局存儲單元中的內(nèi)容讀入本地存儲器單元中,局部操作,對本地存儲器中的數(shù)執(zhí)行操作,其結(jié)果存入本地存儲器中,全局寫,將本地存儲器單元中的內(nèi)容寫入全本地存儲器單元中,同步,同步是計(jì)算中的一個(gè)邏輯點(diǎn),在該點(diǎn)各處理器均需等待別的處理器到達(dá)后才能繼續(xù)執(zhí)行其局部程序,MIMD異步計(jì)算模型PRAM模型APRAM模型中有四類指,20,MIMD異步計(jì)算模型BSP模型,大同步并行,BSP,(,Bulk Synchronous Parallel,),模型,作為計(jì)算機(jī)語言和體系結(jié)構(gòu)之間的橋梁,由下述三個(gè)參數(shù)描述分布存儲的并行計(jì)算機(jī)模型:,處理器,/,存儲器模塊(下文簡稱處理器);,處