并行編程模式_第1頁
并行編程模式_第2頁
并行編程模式_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

并行程序的編程模型、運(yùn)行環(huán)境、調(diào)試環(huán)境等都要比串行程序復(fù)雜得多。提供良好的高性能計(jì)算開發(fā)環(huán)境,一直是學(xué)術(shù)界和工業(yè)界所追求的目標(biāo)。目前比較流行的高性能計(jì)算系統(tǒng),大體可以分為兩類:一類是共享內(nèi)存系統(tǒng)(SMP),如IBM的P690,HP的SuperDome等,其特點(diǎn)是多個(gè)處理器擁有物理上共享的內(nèi)存;一類是分布存儲(chǔ)系統(tǒng)(DMP),如MPP和集群系統(tǒng),其特點(diǎn)是系統(tǒng)由多個(gè)物理上分布的結(jié)點(diǎn)組成,每個(gè)結(jié)點(diǎn)擁有自己的內(nèi)存,結(jié)點(diǎn)通過高速以太網(wǎng)或?qū)S酶咚倬W(wǎng)絡(luò)連接。本文主要介紹這兩類系統(tǒng)上的開發(fā)工具。一、并行程序的開發(fā)模式共享內(nèi)存模型在共享內(nèi)存模型中,一個(gè)并行程序由多個(gè)共享內(nèi)存的并行任務(wù)組成,數(shù)據(jù)的交換通過隱含地使用共享數(shù)據(jù)來完成。此編程模式一般僅需指定可以并行執(zhí)行的循環(huán),而不需考慮計(jì)算與數(shù)據(jù)如何劃分,以及如何進(jìn)行任務(wù)間通信,編譯器會(huì)自動(dòng)完成上述功能。目前流行的共享內(nèi)存模型開發(fā)標(biāo)準(zhǔn)是OpenMP。OpenMP定義了一套編譯指導(dǎo)語句,用于指定程序的并行性、數(shù)據(jù)的共享/私有等信息。其目標(biāo)是為SMP系統(tǒng)提供可移植、可擴(kuò)展的開發(fā)接口。OpenMP由OpenMPArchitectureReviewBoard于1997年推出,現(xiàn)在已發(fā)展到2.0版。OpenMP支持的編程語言包括Fortran、C和C++。OpenMP得到了工業(yè)界的廣泛支持,有大量的商業(yè)編譯器和其他開發(fā)工具支持OpenMP的開發(fā),如IBM、HP、Sun、SGI、Intel等硬件廠商均有支持OpenMP的編譯器產(chǎn)品,另外還有一些第三方廠商的OpenMP編譯器。消息傳遞模型在消息傳遞模型中,一個(gè)并行程序由多個(gè)并行任務(wù)組成。每個(gè)并行任務(wù)擁有自己的數(shù)據(jù)并對(duì)其進(jìn)行計(jì)算操作。任務(wù)之間數(shù)據(jù)的交換是通過顯式的消息傳遞語句來完成的?,F(xiàn)在廣泛使用的消息傳遞模型有兩個(gè):PVM和MPI。PVM即ParallelVirtualMachine(并行虛擬機(jī))與MPI即MessagePassingInterface(消息傳遞界面)。PVM與MPI所提供的功能大致相同,但兩者的側(cè)重點(diǎn)有所不同。PVM強(qiáng)調(diào)在異構(gòu)環(huán)境下的可移植性和互操作性,程序之間可以互相通信,并支持動(dòng)態(tài)的資源管理和一定程度的容錯(cuò);而MPI更強(qiáng)調(diào)性能,不同的MPI實(shí)現(xiàn)之間缺乏互操作性,本身也不支持容錯(cuò)(可以通過專門的容錯(cuò)軟件來支持容錯(cuò))。一般而言,使用MPI比較適合于開發(fā)MPP或同構(gòu)集群上的并行應(yīng)用,可以有較高的通信性能;而PVM更適合于異構(gòu)的集群系統(tǒng)。幾乎所有的高性能計(jì)算系統(tǒng)都支持PVM和MPI。HPFHPF(HighPerformanceFortran)的思想與OpenMP類似,都是通過定義編譯指導(dǎo)語句來幫助編譯器生成并行代碼。HPF的目標(biāo)系統(tǒng)與OpenMP不同,它支持DMP系統(tǒng)。因此,除了指定并行性的編譯指導(dǎo)語句外,HPF還指定數(shù)據(jù)劃分的編譯指導(dǎo)語句。HPF與消息傳遞模型的不同之處則在于:HPF通過編譯器來生成通信語句,不需要程序員手工編寫。HPF得到了工業(yè)界的廣泛支持,如IBM、HP、Sun都有HPF編譯器。第三方產(chǎn)品則有PGI的PGHPF、APR的ForgexHPF等。其不足是對(duì)于某些問題無法得到與手工編寫的消息傳遞程序相同的性能。并彳丁庫使用并行庫開發(fā)高性能計(jì)算程序的基本思想是:用戶不需要自己編寫通用的并行算法代碼,而由程序庫提供并行算法,并對(duì)用戶透明。用戶只需要根據(jù)自己的需求,調(diào)用相應(yīng)的庫函數(shù),就可以編寫出并行程序。由于庫函數(shù)的編寫者一般經(jīng)驗(yàn)豐富,而且?guī)旌瘮?shù)會(huì)采取較為優(yōu)化的算法,并采用優(yōu)化編譯,使得庫函數(shù)的執(zhí)行效率很高。對(duì)于大量使用通用計(jì)算算法的用戶來說,使用并行庫是一種高效的開發(fā)模式。并行庫的缺點(diǎn)是無法幫助那些需要自己書寫非通用并行算法的用戶。目前的并行庫很多,包括PBLAS(ParallelBasicLinearAlgebraSubroutines),以及建立在其基礎(chǔ)上的LAPACK和ScaLAPACK,提供了一些線性代數(shù)問題的并行求解算法,如求特征值、最小二乘問題等。LAPACK是為SMP系統(tǒng)優(yōu)化的,ScaLAPACK是為DMP系統(tǒng)優(yōu)化的。大多數(shù)高性能計(jì)算系統(tǒng)都提供在本系統(tǒng)上優(yōu)化的PBLAS、LAPACK、ScaLAPACK。另一個(gè)著名的并行庫是PETSc。PETSc是一套基于MPI的數(shù)據(jù)結(jié)構(gòu)和庫函數(shù),用于解決基于偏微分方程的典型科學(xué)計(jì)算問題。另外,MATLAB是很常用的科學(xué)計(jì)算軟件。很多公司和研究機(jī)構(gòu)也在進(jìn)行并行化MATLAB的工作,如RTExpresSo5.串行程序并行化另一種并行程序的開發(fā)模式是將串行程序并行化。此模式的優(yōu)點(diǎn)在于,可以將現(xiàn)有的很多串行代碼轉(zhuǎn)換成并行代碼。并行化分為全自動(dòng)并行化和交互式并行化兩種模式。全自動(dòng)并行化的并行過程不需要人的干預(yù),可以自動(dòng)發(fā)現(xiàn)程序中可并行的部分,生成并行代碼?,F(xiàn)在,高性能計(jì)算系統(tǒng)提供商的Fortran和C編譯器大都能提供面向SMP系統(tǒng)的自動(dòng)并行化的編譯選項(xiàng)。對(duì)于少數(shù)程序,全自動(dòng)并行化編譯器可以達(dá)到較好的效果;但對(duì)大多數(shù)程序來說,并行化的效果還不理想。交互式并行化工具通過給用戶提供程序中的有效信息,包括相關(guān)性分析結(jié)果、程序調(diào)用圖、性能預(yù)測(cè)結(jié)果等幫助用戶進(jìn)行并行化工作,但是如何更好地結(jié)合用戶和并行化工具的能力還需要進(jìn)一步研究。目前產(chǎn)品化的交互式并行化工具主要有APR的Forge,該系統(tǒng)支持Fortran77的并行化,并同時(shí)支持SMP系統(tǒng)和DMP系統(tǒng)。二、開發(fā)工具調(diào)試器調(diào)試是程序開發(fā)的重要部分,并行程序尤其難調(diào)試,更需要調(diào)試器的支持。高性能計(jì)算系統(tǒng)中大多會(huì)帶有并行調(diào)試器,如IBM的pdb(命令行方式)、pedb(Xwindow圖形界面)、HP的DDE(XWindow圖形界面)和LaDebug(用于Alpha系統(tǒng))、Sun的Prism等。Etnus的TotalView是最著名的第三方并行調(diào)試器。它提供對(duì)C、C++、Fortran程序的圖形化符號(hào)調(diào)試,可以調(diào)試MPI、PVM、HPF、OpenMP程序,支持SGI、Sun、HP、IBM等幾乎所有的高性能廠商的產(chǎn)品,還提供對(duì)Linux的支持。KAI的AssureThreadAnalyzer是一個(gè)支持OpenMP的程序正確性檢測(cè)工具,用于自動(dòng)發(fā)現(xiàn)程序中的常見錯(cuò)誤。它目前僅支持IA32和IA64上的Linuxo性能分析和預(yù)測(cè)程序性能分析(profiling)可以幫助用戶找到程序中最費(fèi)時(shí)的部分,從而集中精力進(jìn)行改進(jìn)和優(yōu)化,是改進(jìn)程序性能的有效手段。傳統(tǒng)的性能分析工具一般僅提供子程序級(jí)的性能分析,但對(duì)于高性能程序來說,對(duì)于循環(huán)程序的性能分析是必不可少的。現(xiàn)有的大部分高性能計(jì)算系統(tǒng)中大都具有能夠進(jìn)行循環(huán)級(jí)性能分析的性能分析器,有些還提供了友好的用戶界面,如Intel的VTune、IBM的Xprofiler等。一些第三方廠商也提供性能分析工具,比如Pallas的Vampir,它支持從LinuxPC到IBM、HP、Sun、SGI等幾乎所有的高性能廠商的產(chǎn)品。資源管理和負(fù)載平衡系統(tǒng)嚴(yán)格地說,負(fù)載平衡系統(tǒng)是運(yùn)行時(shí)環(huán)境,而不是開發(fā)環(huán)境,但對(duì)于開發(fā)者來說,了解負(fù)載平衡系統(tǒng)是有必要的。某些高性能計(jì)算系統(tǒng)主要用于提供共享的多任務(wù)處理環(huán)境。對(duì)于SMP系統(tǒng)來說,操作系統(tǒng)內(nèi)置的任務(wù)調(diào)度器可以完成任務(wù)的調(diào)度功能。對(duì)于DMP系統(tǒng)來說,需要專門的軟件來進(jìn)行任務(wù)調(diào)度,達(dá)到負(fù)載平衡。負(fù)載平衡系統(tǒng)通過了解系統(tǒng)中各個(gè)結(jié)點(diǎn)的負(fù)載狀況、計(jì)算能力、內(nèi)存狀況等,可以合理地分配任務(wù)的執(zhí)行結(jié)點(diǎn),必要時(shí)遷移現(xiàn)有的任務(wù)到其他結(jié)點(diǎn),從而達(dá)到提高系統(tǒng)吞吐量的作用。著名的負(fù)載平衡系統(tǒng)包括Platform公司的LSF(LoadSharingFacility)和Veridian的PBS(PortableBatchSystem)。這兩個(gè)系統(tǒng)都支持多種操作系統(tǒng)和硬件平臺(tái),能夠管理異構(gòu)的集群系統(tǒng)。另外開放源代碼的OpenMosix主要支持Linux集群系統(tǒng)。發(fā)展趨勢(shì)OpenMP將成為支持SMP系統(tǒng)編程的主要標(biāo)準(zhǔn),將來的工作在于研究和開發(fā)更加有效的OpenMP編譯器,以及更加強(qiáng)大友好的開發(fā)、調(diào)試工具。MPI和PVM將仍然是DMP系統(tǒng)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論