




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
分布式并行處理算法
授課人:董國榮方小平指導老師:秦剛一.并行算法的提出把有唯一輸入向量和唯一輸出向量的一個程序段在某一環(huán)境下的一次執(zhí)行稱為一個進程。設(shè)有一組程序段A1…An,若{Ai}在n個處理機上同時執(zhí)行的結(jié)果等同于{Ai}以任意順序執(zhí)行的結(jié)果,則稱{Ai}為可并行執(zhí)行的。設(shè)兩個程序段A、B,且A先于B,若A與B數(shù)據(jù)相關(guān)或控制相關(guān),則稱A是B的父進程。由此圖示可以明確看出并行處理關(guān)系!A1:x=1A2:y=2A3:s=2*x+yA4:t=x*x*yA5:u=3*s-tA6:v=cos(t)A7:z=u*v+1如下例所示:u,vzA7tvA6s,tuA5x,ytA4x,ysA3yA2xA1輸入輸出進程輸入輸出表如下:BeginA1A2A3A4A5A6A7End進程流程圖如下:一.并行算法的提出下面簡單例子讓我們能更深刻理解并行算法:倍增法求和倍增法是并行分治的一種簡化形式。其基本思想是將原問題反復分解為等規(guī)模的兩個子問題,在逐步分解的過程中,子問題個數(shù)成倍增加。將各個子問題恰當?shù)赜成涞礁髋_處理機上,即可實現(xiàn)計算過程的并行化。例如:倍增法求和計算序列L[0..n-1]的和,記為S(0,n-1)。intBSum(intL,ints,intt){if(s==t)returnL[s];intk=(s+t)/2;returnBSum(L,s,k)+BSum(L,k+1,t);}并行求和一.并行算法的提出從以上一個簡單的例子我們可以看到并行算法的真諦!所以這么說基于普通的算法大家開始加,串行從1到100加很累,而這個高斯思想的并行處理結(jié)果又快又準確!體現(xiàn)出了這個思想,由此引申到計算機并行處理可以看出它潛力巨大,對解決現(xiàn)實問題有很大的指導作用,希望大家認真聽講。那么什么叫并行算法?
科學家已經(jīng)定義為:利用并行計算機系統(tǒng)進行數(shù)據(jù)與信息的并行處理稱為并行計算。二.并行算法的提出并行計算研究的內(nèi)容包括并行計算方法、并行計算模型、并行算法、并行程序設(shè)計、并行測試程序設(shè)計、測試結(jié)果分析等。由于各種并行計算機的系統(tǒng)結(jié)構(gòu)不同,系統(tǒng)內(nèi)各處理器和各功能部件之間在體現(xiàn)算法時的相互作用不同,使得并行算法不能通用。因此,當前并行處理的研究重點,除了并行計算機體系結(jié)構(gòu)之外,就是研究基于各種并行與分布式計算機系統(tǒng)上的并行算法或分布式算法。
二.并行算法基本方法并行計算方法的研究,不僅對提高并行計算機的使用效率是必需的,而且往往能找到改進現(xiàn)有串行算法的新途徑。并行計算方法的研究是研制高效并行數(shù)值計算軟件的基礎(chǔ)。并行計算中可供選擇的技術(shù)路線有兩條:一條是在現(xiàn)有的串行算法基礎(chǔ)上作并行化;另一條是直接從數(shù)學物理問題出發(fā),面向并行系統(tǒng)研制高效率的計算方法和設(shè)計算法。在并行算法設(shè)計中廣泛采用的是“DivideandConquer”(分而治之)和重新排序兩種基本方法。從以上基本方法引申具體以下幾種算法:
三、并行編程的基本方法這里主要介紹網(wǎng)絡(luò)并行編程的基本模式和負載平衡的基本方法。
(1)網(wǎng)絡(luò)并行編程的基本模式
應(yīng)用標準化環(huán)境進行網(wǎng)絡(luò)并行編程與MPP并行機(如IBMSPZ,
IntelParagon等)在算法設(shè)計和編程邏輯的基本方法上是相同的,它們存在的不同點是:
★任務(wù)管理方式不同,網(wǎng)絡(luò)并行標準化環(huán)境編程要涉及到進程的動態(tài)創(chuàng)建與命名。
★標準環(huán)境不同,網(wǎng)絡(luò)并行編程要求在正式計算前完成語句的初始化。
★粒度選取不同,分布式網(wǎng)絡(luò)并行計算的并行粒度較大。
★計算環(huán)境不同,分布式網(wǎng)絡(luò)并行計算要考慮到異構(gòu)環(huán)境。
從不同計算任務(wù)組織的角度看,分布式編程主要有星形計算模式和樹形計算模式兩種:
三、并行編程的基本方法
▲星形計算模式。由一組相互緊密關(guān)聯(lián)的進程組成,它們可以是執(zhí)行相同的程序,只是數(shù)據(jù)不同,共同執(zhí)行同一計算問題的不同部位。這種計算模式又可以分為兩類:一種是主從式(masterslave),這種計算模式有一個控制程序作為主進程,負責進程的生成、初始化、收集并顯示結(jié)果,其余的進程(slave)執(zhí)行實際計算,從進程的負載或由主進程分配,或由自身分配;另外一種是純結(jié)點模式,這時所有進程都在執(zhí)行單個程序,只是少數(shù)進程(初始時由人工指定)同時負責非計算的功能(如I/O等)。
三、并行編程的基本方法
▲樹形(tree)計算模式。在這種計算模式中,進程通常是在計算過程中以樹形方式動態(tài)生成。在求解組合優(yōu)化問題時常用的一種算法是構(gòu)造性的探索算法,主要思想是對解集合反復進行分支,對每個分支計算最優(yōu)解的界。如果該解符合要求,則繼續(xù)分支以探索更好的解,直到所有的子集合中僅有一個最優(yōu)的解為止。這種方法在人工智能的搜索策略中以及遞歸的“分而治之”算法中也常使用。三、并行編程的基本方法(2)負載平衡的基本方法
各處理器之間的負載是否能做到基本平衡,是并行計算效率能否提高的一個關(guān)鍵。對于網(wǎng)絡(luò)分布式并行計算而言,負載平衡的基本方法有兩個:數(shù)據(jù)分解與功能分解。
數(shù)據(jù)分解方法,有時也稱數(shù)據(jù)分割法,這種方法適應(yīng)于各處理器執(zhí)行相同的任務(wù)、只是數(shù)據(jù)不同的情況。數(shù)據(jù)的分解有靜態(tài)方式和動態(tài)方式的區(qū)別。靜態(tài)方式中每個進程的負載是固定的,而在動態(tài)方式中各進程的負載分配是隨計算過程而改變的。三、并行編程的基本方法功能分解方法。網(wǎng)絡(luò)計算的并行化也可通過把總負載按功能進行分解,分配給各個處理器承擔。最簡單的是把整個計算過程分為輸入數(shù)據(jù)、計算進程和輸出結(jié)果三個部分。當然根據(jù)實際情況這三個部分又可以再進行細分。三.并行計算基本概念
(1)并行算法的目標
并行算法的目標就是以增加空間的復雜性來減少時間的復雜性,即增加空間的維數(shù),增加處理器的臺數(shù),來減少算法實現(xiàn)所需的時間。從算法的結(jié)構(gòu)觀察,通常的串行算法樹“深而窄”,而并行算法樹結(jié)構(gòu)截然不同。為達到把時間的復雜性轉(zhuǎn)化為空間復雜性的目的,并行算法樹采用了“淺而寬”的結(jié)構(gòu)。
(2)并行加速比
并行加速比表示采用多個處理器計算速度所能達到的加速的倍數(shù)。
(3)粒度(granularity)
三.并行計算基本概念粒度是各個多處理機可獨立并行執(zhí)行的任務(wù)大小的度量。大粒度反映可并行執(zhí)行的運算量與程序量大,有時稱粗粒度。任務(wù)級并行的粒度大于語句級的并行。向量機主要是對內(nèi)層Do循環(huán)語句作向量化,所以向量化是一種小粒度(細粒度)并行;在網(wǎng)絡(luò)并行計算中,由于通信開銷比較大,應(yīng)盡量采用粗粒度方式。
(4)可擴展性(Scalability)可擴展性是指并行機和并行算法有效利用多處理機臺數(shù)增加的能力的一個度量。隨著處理機的增加,如果效率曲線基本保持不變,或略有下降,則認為該算法在所用的并行機上擴展性好;否則,其可擴展性差。影響一個并行算法的擴展性因素較多,評判的準則也不盡相同。四.并行算法分類依據(jù)處理對象劃分,并行算法可分為兩類:
●數(shù)值并行算法主要為數(shù)值計算而設(shè)計的并行算法;●非數(shù)值并行算法如神經(jīng)網(wǎng)絡(luò)算法、演化算法、遺傳算法、格子氣算法、格子依據(jù)算法中進程的控制方式劃分,可分為以下兩種:ltzmann算法以及為符號計算而設(shè)計的并行算法。
●同步并行算法(synchronizedalgorithm)。是指某些進程必須等待其他進程的一種并行算法,要求所有進程必須在一個給定時刻同步。SIMD以及共享存儲型MIMD并行機上通常運行同步并行算法。
四.并行算法分類異步并行算法(asynchronizedalgorithm),是指諸進程執(zhí)行相對獨立、不要互相等待的一類算法。其主要特征是在計算的整個過程中都不需要等待,而是根據(jù)當前的最新信息決定進程的繼續(xù)或終止。這種算法通常是針對分布式存儲的MIMD并行機設(shè)計的。另外,還有分布式算法(distributedalgorithm),是指由包括網(wǎng)絡(luò)在內(nèi)的通信鏈路連接的多結(jié)點機或計算機群協(xié)同完成某個計算任務(wù)的算法。五.并行計算模型所謂計算模型,是算法設(shè)計者進行理論分析時所依據(jù)的計算機模型。馮·諾依曼機是理想的串行計算模型。由于并行機在飛速發(fā)展之中,尚未定型,故目前尚沒有所謂的通用并行計算模型。當前,人們將并行計算機的某一些特征抽象出來,形成了各種特定的并行計算理論模型,以便于并行算法的設(shè)計與理論分析。并行機的特征有:消息包的長度或延遲時間、消息包傳遞的開銷、處理器連續(xù)傳遞消息的最小間隔(或通信的帶寬)、處理器個數(shù)等。由諸如此類的參數(shù)構(gòu)成各種特定的并行計算模型。常用的并行計算模型有PRAM、VLSI、BSP、LogP和C3模型。下面我講述幾點經(jīng)典算法。
5.1
平衡樹法
平衡樹法的評估:以平衡樹法求解最大值是一個EREW算法,計算時間tp(n)=O(logn),運用處理器最多為p(n)=n/2,工作量為O(nlogn),不是工作量有效的算法。平衡樹方法的優(yōu)點是在樹中能快速存取信息,對數(shù)據(jù)的傳遞、壓縮、抽取和前綴計算均十分有用。5.2
向量法向量法的基本思想★以向量方式描述計算過程;★以并行方式執(zhí)行向量計算。以矩陣計算為例
對n階矩陣,串行加法的計算量為n2,若動用n個(或n2個)處理器,分別處理每行(或列)的相加運算,則可以得到計算量亦為n2,工作量有效。5.2
向量法以矩陣計算為例矩陣相乘:C=A*B5.2
向量法串行算法:{fori=1tondo forj=1tondo ci,j=0 fork=1tondo ci,j+=ai,k*bj,k
}并行算法:fori=1tondo forallPjj=1tondo ci,j=0 //Ci.=0 fork=1tond //Ci.=∑ai,k*Bk. forallPjj=1tondo ci,j+=ai,k*bk,j5.3
線性代數(shù)方程組法高斯消去法
串行求解算法:for(k=1;i<N;i++){forallPjj=k…NdoA[k][j+1]=A[k][k]; for(i=1;i<=N;i++) if(i!=k) forallPjj=k…Ndo A[i][j+1]=A[i][k]*A[k][j+1];}并行求解算法:for(k=1;i<N;i++){ forallPjj=k…NdoA[k][j+1]=A[k][k]; for(i=1;i<=N;i++) if(i!=k) forallPjj=k…Ndo A[i][j+1]=A[i][k]*A[k][j+1];}5.4
MIMD算法算術(shù)表達式的同步MIMD算法例:(A+B(C+D*E*F))+G變形為:A+G+B*C+B*D*E*FP1P2P3P4a1=A+GP(r1)a1+=a2P(v3)a1+=a3a2=B*CV(r1)a3=B*DP(r2)a3*=a4V(r3)a4=E*FV(r2)5.5
MIMD算法區(qū)間分割法解代數(shù)方程的根求單調(diào)連續(xù)函數(shù)f(x)=0的根。設(shè)已知兩端l~u,對區(qū)間進行n+1等分,令y[0]=f(l),y[n+1]=f(u)。5.5
MIMD算法同步牛頓迭代法解代數(shù)方程的根迭代公式:P0P1while未達到精度{ y=f(x); wait(y’) x=x–y/y’;}while未達到精度{ wait(x) y’=f’(x);}并行進程如下:P0P1y0=f(x0)y0’=f’(x0)x1=x0–y0/y0’y1=f(x1)y1’=f’(x1)x2=x1-y1/y1’…………并行計算過程如下:5.5
MIMD算法異步牛頓迭代法解代數(shù)方程的根P1P2While未達到精度{ y=f(x); x=x–y/y’;}While未達到精度{ y’=f’(x);}5.6
流水線技術(shù)
歸并排序:設(shè)輸入長度為n=2r,用p(n)=r+1個處理器并行完全合并排序的任務(wù)。設(shè)處理器編號從1到r+1,其中首處理器有一個輸入,尾處理器有一個輸出,其他處理器各有兩個輸入和兩個輸出。各處理器同步運行,在一個時間步內(nèi),P1從原始輸入序列中讀取一個數(shù)并將其作為結(jié)果輸出,Pi(i=2…r+1)接收從Pi-1輸出的兩個長度為2i-2的子序列,并將其合并為一個長度為2i-1的子序列。從P1到Pr,每一個處理器交替地在上面和下面兩條輸出線上產(chǎn)生合并子序列。除P1外,每個處理器Pi當其前一個處理器的一條輸出線上已經(jīng)產(chǎn)生了長為2i-2的子序列,另一條輸出線上出現(xiàn)了第一個元素時,就可以開始歸并了。設(shè)Pi和Pi+1之間通過的隊列為q2i和q2i+1,即q2i和q2i+1是Pi的輸出序列,Pi+1的輸入序列。如下圖所示:設(shè)n=2r,p(n)=r+1,算法描述如下:P1:j
2;fork=1tondo{ xk
q1; qj
xk; j=5-j;}Pi:i=2…rj
0;k
1;whilek<=ndo{ ifq2(i-1)+j已裝滿2i-2個元素and q2(i-1)+(1-j)已出現(xiàn)1個元素then { form=1to2i-1do q2i+j
min(q2(i-1)+j,q2(i-1)+(1-j)); j
1-j; k
k+2i-1; }}Pr+1:ifq2r已裝滿2r-1個元素,且q2r+1已出現(xiàn)1個元素then{ form=1to2rdo q2(r+1)
min(q2r,q2r+1);}十五、接力技術(shù)基本思想F:讓兩種算法接力,產(chǎn)生一個求解該問題的新算法,使得既有耗時少的特性又有工作量有效性較高的特性。S:先用需要較少時間(速度較快)的算法求解給定的問題,直到問題的規(guī)模減到某一個閾值為止;L:再用工作量有效性較高的算法,繼續(xù)求解,直到獲得最終的解答。5.8接力技術(shù)求解最大值的常數(shù)時間算法對n個元素的數(shù)組,可以動用n2個處理器,在O(1)的時間內(nèi)求解出最大值。A1A2A3mA1?F?FA2TTTTA3?F?FforallPii=1…ndo m[i]
true;forallPi,ji=1…n,j=1…ndo if(A[i]<A[j])m[i]
false;forallPii=1…ndo if(m[i]==true)max
A[i];216個葉子根28個結(jié)點,每個分28個葉結(jié)點28*24個結(jié)點,每個分24個葉結(jié)點28*24*22個結(jié)點,每個分22個葉結(jié)點28*24*22*2個結(jié)點,每個分2個葉結(jié)點十五、接力技術(shù)求解最大值的重對數(shù)時間算法設(shè)n個元素的序列,定義一棵以n個元素為葉結(jié)點的重對數(shù)深度平衡樹如下:
樹中每一個非葉子結(jié)點u的子結(jié)點的個數(shù)為以u為根的子樹上的葉結(jié)點的個數(shù)的平方根。則第0層為樹根,有一個結(jié)點,第1層為n1/2個結(jié)點,每個結(jié)點為根的子樹上有n/n1/2=n1/2個葉子,所以每個結(jié)點有n1/4個子結(jié)點,可以證明,以第i層上每一個結(jié)點為根的子樹上有個葉子結(jié)點,第i層上共有個結(jié)點,可知這樣一棵樹的高度為loglogn+1,因此稱為重對數(shù)深度平衡樹。在重對數(shù)深度平衡樹上,除第0層外,對每一層按父結(jié)點分組,對每一組用常數(shù)時間算法求解最大值,結(jié)果放在其父結(jié)點中。可證明,共須n個處理器,經(jīng)過loglogn+1個并行步完成計算,時間復雜度為O(loglogn)。5.5、流水線技術(shù)排序問題每個進程一次從前一個進程接收待排序序列中的一個數(shù),保存當前接受到的最大的數(shù)字,把比這個數(shù)小的其他數(shù)傳給下一個進程。第一個進程P0直接從待排序序列接收數(shù)據(jù)。P0P1P2P3P44|3|1|2|512345P0P1P2P3P4-----4|3|1|2|55----4|3|1|25----4|3|1252---4|3152---431531--42542--315431-254321十四、流水線技術(shù)質(zhì)數(shù)生成問題順序解法for(i=2;i<=n;i++) prime[i]=1;for(i=0;i<=sqrt_n;i++) if(prime[i]==1) for(j=i*i;j<=n;j+=i) prime[j]=0;質(zhì)數(shù)生成問題流水線解法:第一個流水線級輸入一系列連續(xù)的數(shù),然后剔出所有2的倍數(shù),并把余下的數(shù)傳遞給第二級流水線;第二級剔出所有3的倍數(shù)并把余下的數(shù)傳遞給第三級流水線;以此類推;流水線的個數(shù)與質(zhì)數(shù)的個數(shù)的方根相同;十四、流水線技術(shù)十五、接力技術(shù)對數(shù)深度樹和重對數(shù)深度樹算法接力第一步,利用對數(shù)深度平衡樹方法向上逐層進行計算,經(jīng)過logloglogn層的選拔后停下來。第二步,以第一步選拔出的最大值候選結(jié)點為葉結(jié)點,按重對數(shù)時間算法進行繼續(xù)計算,直到所求的解。第一步所需時間為O(logloglogn),工作量為O(nlogloglogn),在第一步結(jié)束時,剩下的結(jié)點數(shù)為:n’=n/2logloglogn=n/loglogn。則第二步需要的時間為O(loglogn’)=O(loglogn),工作量為O(n’loglogn)=O(n)。從而進一步提高了工作量的有效性。十二、并行分治分治通過將一個問題分解成若干個性質(zhì)相同的子問題,并遞歸地對子問題進行求解,然后將各子問題的解加以合并構(gòu)造出原問題的解。分治步驟將問題的輸入進行均勻劃分,構(gòu)成規(guī)模大致相等的若干個同類的子問題;遞歸求解各子問題;將各子問題的解歸并成為原問題的解;十二、并行分治并行分治:F(I){ if輸入足夠小then O
Answer(I); else {
分解輸入:I1,…Ik;
forallPii=1…kdo Oi
F(Ii,Oi); O
Combine(O1,…Ok); }}十二、并行分治最近點對問題d1d2d2d十三、劃分法劃分法與分治法相似,劃分原理也是將原問題進行分解,分別求解,再歸并子問題的解。所不同的是,分治法采用簡單的分解方法,因此設(shè)計的難點在于如何歸并子問題的解,而劃分方法則講究分解的方法,以獲得簡單的歸并策略。有序序列歸并:設(shè)A=(a1,a2,…,an),
B=(b1,b2,…,bm),
是U上的單調(diào)增序列,且A∩B=Ф。
將A和B歸并到:
C=(c1,c2,…,cm+n)。十三、劃分法有序序列歸并定義:對U上的有序序列列X=(x1,x2,…,xt),x∈U,x在X上的位序rank(x:X)為X中小于等于x的元素個數(shù)。歸并問題即求rank(x:A∪B),x∈A∪B。分別求出rank(ai:B)和rank(bj:A),即可得到rank(x:A∪B)=rank(x:A)+rank(x:B)。這樣就可以在O(logn)時間內(nèi)用O(nlogn)工作量完成合并的任務(wù)。但這樣的解法不是一個工作量有效的算法。通過進一步劃分,可以得到工作量有效的解法。十三、劃分法有序序列歸并定義:對U上的有序序列列X=(x1,x2,…,xt),x∈U,x在X上的位序rank(x:X)為X中小于等于x的元素個數(shù)。歸并問題即求rank(x:A∪B),x∈A∪B。分別求出rank(ai:B)和rank(bj:A),即可得到r
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新能源充電樁銷售與合作協(xié)議
- 文化傳播品牌授權(quán)使用合同
- 淺談建筑合同管理
- 店面經(jīng)營權(quán)轉(zhuǎn)讓協(xié)議
- 自建房勞務(wù)承包合同
- 鋼筋混凝土施工合同
- 網(wǎng)絡(luò)購物平臺運營合作協(xié)議文本
- 個人倉庫轉(zhuǎn)讓合同6篇
- 非全日制餐飲用工合同5篇
- 仙游縣蓋尾中學學生外宿協(xié)議書8篇
- 中華人民共和國學前教育法-知識培訓
- 2024年四川省宜賓市中考英語試題含解析
- 擔保公司專項檢查方案
- 二級建造師《礦業(yè)工程管理與實務(wù)》試題(100題)
- 養(yǎng)護道班考勤管理制度
- 北師大版(2019)必修第二冊 Unit6 The admirable Lesson 1 A Medical Pioneer名師教學設(shè)計
- 中科曙光公司在線測評題
- GB/T 36187-2024冷凍魚糜
- 消防演練課件教學課件
- 2024年計算機二級WPS考試題庫380題(含答案)
- 桂圓(2023年廣東中考語文試卷記敘文閱讀題及答案)
評論
0/150
提交評論