資源描述:
《并行編程模式》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、并行計(jì)算的硬件平臺(tái)SMP系統(tǒng)(SymmetricMultiProcessing),對(duì)稱多處理系統(tǒng)MPP系統(tǒng)(MassivelyParallelProcessing),大規(guī)模并行處理系統(tǒng)SMP系統(tǒng)與MPP系統(tǒng)比較SMP(SymmetricMultiProcessing),對(duì)稱多處理系統(tǒng)內(nèi)有許多緊耦合多處理器,在這樣的系統(tǒng)中,所有的CPU共享全部資源,如總線,內(nèi)存和I/O系統(tǒng)等,操作系統(tǒng)或管理數(shù)據(jù)庫(kù)的復(fù)本只有一個(gè),這種系統(tǒng)有一個(gè)最大的特點(diǎn)就是共享所有資源。對(duì)稱性:系統(tǒng)中任何處理器均可以訪問(wèn)任何存儲(chǔ)單元和I
2、/O設(shè)備。SMP系統(tǒng)與MPP系統(tǒng)比較MPP(MassivelyParallelProcessing),大規(guī)模并行處理系統(tǒng),這樣的系統(tǒng)是由許多松耦合的處理單元組成的,要注意的是這里指的是處理單元而不是處理器。每個(gè)單元內(nèi)的CPU都有自己私有的資源,如總線,內(nèi)存,硬盤等。在每個(gè)單元內(nèi)都有操作系統(tǒng)和管理數(shù)據(jù)庫(kù)的實(shí)例復(fù)本。這種結(jié)構(gòu)最大的特點(diǎn)在于不共享資源。并行編程模式并行編程模式主要有以下三種:共享地址空間模式:以O(shè)penMP為代表,主要是利用添加并行化指令到串行程序中,由編譯器完成自動(dòng)并行化。消息傳遞模式:以
3、MPI為代表,PVM是消息傳遞模式的一個(gè)變種。數(shù)據(jù)并行模式:比較少見,但以其獨(dú)特的處理方式受到特定用戶群的喜歡并行編程模式可以這樣打比方:作并行計(jì)算好比是蓋樓房,你有了MPI就好比是有了砂石,水泥和鋼材,你可以蓋最美的房子,但你必須使用最原始狀態(tài)的原材料,付出可觀的智力勞動(dòng);你有了OpenMP就好比是有了預(yù)制板和各種預(yù)制件,可以非??焖俚卦旆孔?,事半功倍;你有了數(shù)據(jù)并行環(huán)境,可以比作你有了包工頭,很多事情您就可以完全依靠他了。也許比喻方式不是很恰當(dāng),但是三種編程模式的優(yōu)劣、效率是很有差別的,可以不夸張
4、地說(shuō)OpenMP比MPI要容易很多倍MPIMPI(MessagePassingInterface)是消息傳遞并行程序設(shè)計(jì)的標(biāo)準(zhǔn)之一.MPI正成為并行程序設(shè)計(jì)事實(shí)上的工業(yè)標(biāo)準(zhǔn)。MPI的實(shí)現(xiàn)包括MPICH、LAM、IBMMPL等多個(gè)版本,最常用和穩(wěn)定的是MPICH,曙光天潮系列的MPI以MPICH為基礎(chǔ)進(jìn)行了定制和優(yōu)化。PVMPVM(并行虛擬機(jī),ParallelVirtualMachineComputing)是一個(gè)軟件包。通過(guò)它,我們可以組成一個(gè)異構(gòu)的系統(tǒng),它使用起來(lái)就像一個(gè)單一的但能力強(qiáng)大的并行計(jì)算機(jī),
5、而它本身可以由一些Unix或windows的計(jì)算機(jī)組成PVM最早由美國(guó)的田納西大學(xué),橡樹嶺國(guó)家實(shí)驗(yàn)室以及埃默里大學(xué)開發(fā)成功。第一個(gè)版本在ORNL(橡樹嶺國(guó)家實(shí)驗(yàn)室)于1989年寫成,后來(lái),田納西大學(xué)將其重寫,并于1991年發(fā)布了版本2。版本3于1993年發(fā)布,支持容錯(cuò)以及更好的可移動(dòng)性。OpenMPOpenMP提供了對(duì)并行算法的高層的抽象描述,程序員通過(guò)在源代碼中加入專用的pragma來(lái)指明自己的意圖,由此編譯器可以自動(dòng)將程序進(jìn)行并行化,并在必要之處加入同步互斥以及通信。當(dāng)選擇忽略這些pragma,或
6、者編譯器不支持OpenMP時(shí),程序又可退化為通常的程序(一般為串行),代碼仍然可以正常運(yùn)作,只是不能利用多線程來(lái)加速程序執(zhí)行。OpenMPOpenMP支持的編程語(yǔ)言包括C語(yǔ)言、C++和Fortran。要在VisualC++2005中使用OpenMP其實(shí)不難,只要將Project的Properties中C/C++里L(fēng)anguage的OpenMPSupport開啟(參數(shù)為/openmp),就可以讓VC++2005在編譯時(shí)支持OpenMP的語(yǔ)法了;而在編寫使用OpenMP的程序時(shí),則需要先includeOp
7、enMP的頭文件:omp.h空間上的并行并行計(jì)算或稱平行計(jì)算是相對(duì)于串行計(jì)算來(lái)說(shuō)的。所謂并行計(jì)算可分為時(shí)間上的并行和空間上的并行。時(shí)間上的并行就是指流水線技術(shù),而空間上的并行則是指用多個(gè)處理器并發(fā)的執(zhí)行計(jì)算并行計(jì)算科學(xué)中主要研究的是空間上的并行問(wèn)題。數(shù)據(jù)并行從程序和算法設(shè)計(jì)人員的角度來(lái)看,并行計(jì)算又可分為數(shù)據(jù)并行和任務(wù)并行。一般來(lái)說(shuō),因?yàn)閿?shù)據(jù)并行主要是將一個(gè)大任務(wù)化解成相同的各個(gè)子任務(wù),比任務(wù)并行要容易處理。數(shù)據(jù)并行的例子對(duì)于數(shù)據(jù)密集型問(wèn)題,可以采用分割數(shù)據(jù)的分布式計(jì)算模型,把需要進(jìn)行大量計(jì)算的數(shù)據(jù)分
8、割成小塊,由網(wǎng)絡(luò)上的多臺(tái)計(jì)算機(jī)分別計(jì)算,然后把結(jié)果進(jìn)行組合得出數(shù)據(jù)結(jié)論。MapReduce是分割數(shù)據(jù)型并行計(jì)算模型的典范,在云計(jì)算領(lǐng)域被廣泛采用。