并行編程綜述課件_第1頁
并行編程綜述課件_第2頁
并行編程綜述課件_第3頁
并行編程綜述課件_第4頁
并行編程綜述課件_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

并行編程綜述并行編程處于令人遺憾的狀況:并行軟件開發(fā)遠落后于并行硬件的進展。缺少合適的并行軟件是阻礙主流用戶接納并行計算的主要原因。與順序計算相比,當(dāng)今的并行系統(tǒng)軟件和應(yīng)用軟件不僅數(shù)量很少,而且功能性也相當(dāng)原始。隧道之末總有陽光。一、并行編程緣何艱難在并行編程中有許多不同的模型。是一個更復(fù)雜的智力活動。并行程序的編譯器、調(diào)試程序、以及特征分析器(profiler)要比串行程序落后得多。1.順序編程長期以來已建立了許多算法范例一些實現(xiàn)指導(dǎo)用戶從事算法設(shè)計。2.并行編程

并行編程處于初級階段;對于并行問題的應(yīng)用,不太可能有一個現(xiàn)成的并行代碼;并行代碼的機器不同。并行編程也不支持成熟、通用和穩(wěn)定的工具;并行算法范例仍未能被很好地理解或被廣泛地接受;不存在單一、通用的機器模型;并行編程的模型有兩級,而在每一級上又有許多不同模型。與順序語言在編程或自然模型級上缺少代可擴展和異構(gòu)可擴展的能力這些并行語言大多數(shù)在當(dāng)前系統(tǒng)上使用的并行語言均是Fortran或C的某種擴展。一個編程模型即是程序員在開發(fā)一個并行程序時所見到和使用的模型。一個自然模型是由一個特定并行計算機平臺所提供的、用戶可見的最低層的編程模型。其他的編程模型可在此自然模型上加以實現(xiàn)。例如,在一個SGIPowerChallenge計算機上(它是SMP),自然模型為共享變量模型(如SGIPowerC)。數(shù)據(jù)并行(如HPF)和消息傳送(如MPl)可在其頂部實現(xiàn)。3.并行編程進展盡管以上的回顧較為悲觀,但在并行編程領(lǐng)域已有了許多進步:已開發(fā)了許多并行算法。盡管大多數(shù)算法基于非現(xiàn)實的PRAM模型,但其中某些在作適當(dāng)修正后可以實用。已涌現(xiàn)一小批簡單的并行算法范例,且已逐步為用戶所接受。自然模型正集中趨向于兩種模型:適用于PVP、SMP和DSM的單地址空間的共享變量模型;適用于MPP和機群的多地址空間的消息傳遞模型。SIMD模型已從主流、通用并行計算機淡出,但對于如同語言、圖象和多媒體處理的專用嵌入式應(yīng)用仍非常有用。高層并行編程模型

趨向于3種標(biāo)準(zhǔn)模型:數(shù)據(jù)并行(如HPF)、消息傳遞(如HPVM和MPl)共享變量(如HANSIX3H5)。此外還有一種模型----串轉(zhuǎn)并;用戶只需編寫順序程序,其中的蘊式并行性由并行化編譯器(如Kap)進行析取。4.吞吐率處理在一個問題的處理上,并行少,串行多。增加多個獨立順序作業(yè)的系統(tǒng)吞吐率。順序程序并行系統(tǒng)(SPPS)模型,也稱為吞吐率處理。二、并行編程環(huán)境1.一個典型的并行處理系統(tǒng)如圖所示的結(jié)構(gòu)無論是算法還是源代碼均需顯式地并行化。編譯器將源代碼翻譯成二進制代碼在并行平臺上運行,該平臺包含操作系統(tǒng)和在它之下的并行計算機硬件。任何編程語言均有運行時間支持系統(tǒng),它是與用戶代碼連接程序。2.環(huán)境工具

一個環(huán)境工具是指任何硬件和軟件的實用程序,以幫助用戶程序的開發(fā)和執(zhí)行。編程環(huán)境(或簡稱環(huán)境):所有這類工具集合。工具的實例包括操作系統(tǒng)實用程序、程序設(shè)計語言、編譯器以及運行時間庫等。

環(huán)境工具是那些通常與操作系統(tǒng)或程序設(shè)計語言無關(guān)的工具集。環(huán)境工具包括以下類型:作業(yè)管理工具包括網(wǎng)絡(luò)排隊系統(tǒng)(NQS)和負載共享工具(LSF)。調(diào)試工具性能工具它們用來監(jiān)控用戶應(yīng)用程序以識別性能瓶頸之所在。三、并行編程方法

目前在實際的并行計算機中廣泛使用的并行編程模型有4種:蘊式;數(shù)據(jù)并行;消息傳遞;共享變量。有三種擴展方法:庫子程序、新語言構(gòu)造以及編譯器命令。庫子程序除了在順序語言中可用的標(biāo)準(zhǔn)庫外,加入一組新的庫函數(shù),以支持并行化和交互操作。這種庫的實例包括MPI消息傳遞以及POSIXPthreads多線程庫。新構(gòu)造擴展程序設(shè)計語言使其具有某些新構(gòu)造,以支持并行化和交互。例如Fortran90中密集數(shù)據(jù)操作。編譯器命令程序設(shè)計語言不變,但加入稱為編譯器命令(或pragmas)的格式化注解。示例:用一段簡單代碼來說明這些方法。所有3個并行程序均執(zhí)行相同的如圖所示的串行C代碼的計算。串行代碼段for(i=0;i<N;i++)A[i]=b[i]*b[i+1];for(i=0;i<N;i++)c[i]=A[i]+A[i+1];使用庫例程的等效并行代碼id=my_process_id();p=numberofprocesses();for(i=id;i<N;i=i+p)A[i]=b[i]*b[i+1];barrier();for(i=id;i<N;i=i+p)c[i]=A[i]+A[i+1];串行代碼段for(i=0;i<N;i++)A[i]=b[i]*b[i+1];for(i=0;i<N;i++)c[i]=A[i]+A[i+1];Fortran90中使用數(shù)組操作的等效代碼my-processid(),number_of_processes(),andbarrier()A(0:N-1)=b(0:N-1)*b(1:N)c=A(0:N-1)+A(1:N)串行代碼段for(i=0;i<N;i++)A[i]=b[i]*b[i+1];for(i=0;i<N;i++)c[i]=A[i]+A[i+1];SGIpowerC中使用pragma的等效代碼#pragmaparallel#pragmashared(A,b,c)#pragmalocal(i){#pragma

pforiterate(i=0;N:1)

for(i=0;i<N;i++)#pragmasynchronize#pragma

pforiterate(i=0;N:1)

for(i=0;i<N;i++)c[i]=A[i]+A[i+1];}三種方法的比較:可用3種方法實現(xiàn)任何編程模型在任何并行平臺上,3種方法和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論