200 likes | 374 Views
Vzporedni algoritmi - primeri. Da bi praktično preverili opisan model opravilo-kanal in ostale omenjene lastnosti bomo malo podrobneje predstavili tri tipične vzporedne postopke (algoritme) :
E N D
Vzporedni algoritmi - primeri • Da bi praktično preverili opisan model opravilo-kanal in ostale omenjene lastnosti bomo malo podrobneje predstavili tri tipične vzporedne postopke (algoritme): • Študij parametrov (določeno število opravil z različnimi funkcijami, brez skupnih podatkov, brez komunikacije), • Končne razlike (določeno število opravil z enakimi funkcijami in nekaj skupnimi podatki, z manj komunikacije), Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Kako gre to v praksi? Začnemo s spoznavanjem in opisom problema.D. Problem razdelimo,K. Najdemo potrebno komunikacijo,Z. Združimo posamezna opravila, P. Preslikamo združena opravila na procesorje. D K Z P Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Študij parametrov Opredelitev problema: • Vnaprej znano število N neodvisnih in enako obsežnih programov z različnimi vhodnimi podatki. • Delitev po funkcijah • večinoma enake funkcije – računanje (W) in dve dodatni funkciji razdeljevanje vhodnih podatkov (I) in zbiranje izhodnih rezultatov (O). • Uporabimo model opravilo-kanal in naredimo delitev (D) O W W W . . . W W W W W I Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Študij parametrov - komunikacija Najdemo potrebno komunikacijo (K) med opravili: • Izhodni kanali iz I in vhodni v W – vhodni podatki • Vhodni kanali v O in izhodni iz W - rezultati • Med W-ji ni komunikacije O W W W . . . W W W W W I Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Študij parametrov - algoritem • Opravilo I izračuna vhodne parametre in jih odpošlje ustreznim W-jem • W-ji izvedejo račun in pošljejo rezultate opravilu O, ki naredi končno poročilo. if (myID = I) generate input parameters for all W tasks; send input parameters to W tasks; if (myID = O) receive results from W tasks; generate final report; if (myID = W) wait for input parameters message until (message-dest-aadd is my-add) then accept input parameters; start calculation; send results to O task; Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Študij parametrov - združevanje • Program bo enak za vsa opravila (Single Program Multiple Data). • Opravili I in O se izvajata ob različnih časih zato ju lahko združimo. • Združimo (Z) ju lahko tudi zato, ker imamo dvosmerne komunikacijske kanale med procesorji. O&I W W W . . . W W W W W Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Študij parametrov - preslikovanje • Vsa opravila (W) se lahko izvajajo neodvisno (ni komunikacije med W). • Vrstni red končanja opravil W ni predpisan. • Torej lahko preslikamo več W-jev na en procesor O&I pa na poseben procesor. • Če so procesorji enako zmogljivi naj bo število W-jev za vsakega od njih enako. O&I W W W . . . W W W W W Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Študij parametrov - preslikovanje • Imamo N opravil in P procesorjev. P<N. • Kako se bo izvajalo več opravil na enem procesorju? • Kaj če N ni deljiv s P? • Kaj če so opravila W različno zahtevna za različne vhodne podatke? • Kako izračunamo pričakovano učinkovitost algoritma? O&I W W W . . . W W W W W Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Študij parametrov – analiza zahtevnosti • Čas računanja na enem procesorju: Tr = tFP*n*N , kjer je n število FP potrebnih za izvedbo opravila W. • Čas komunikacije: Tk = N*((ts +LI*tw)+ *(ts +Lo*tw)) • Če čakanja naj bo v začetku 0. Predpostavimo enako dolžino W in enako dolžino priprave parametrov in branja rezultatov. Iz tega sledi, da komunikacija med O in W poteka sočasno (se ne prekriva). • Potem bo W, ki je prvi prejel parametre od I, končal prvi in odposlal rezultate O-ju. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Študij parametrov – analiza zahtevnosti • čas računanja vzporednega programa je: Tr = tFP*n*N/P • čas izvajanja vzporednega programa pa : Tp = (Tr + Tk) / P = N/P* (tFP*n + ((ts +LI*tw)+ *(ts +Lo*tw))) ker se bo tudi čas komunikacije krajšal, če bomo povečali P. • Pohitritev: S= Tr/ Tp= P*(tFP*n) / (tFP*n + ((ts +LI*tw)+ *(ts +Lo*tw))) je linearna in malo manjša kot P. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Končne razlike - opredelitev Parcialne diferencialne enačbe (PDE) – matematični model. Najenostavnejši primer: 1-D advekcijska enačba u/t = -c u/x u=u(t,x) in začetni pogoj u(0,x) = u0(x). Ker je primer tako enostaven lahko izračunamo tudi analitično rešitev: u(t,x) = u0(x-ct) Preverimo: d(u0(x-ct))/dt = -c*u0 in d(u0(x-ct))/dx = u0 t u0(x-ct1) t1 u0(x) 0 x Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Končne razlike - diskretizacija 1-D advekcijska enačba (struna): u/t = -c u/x Numerična rešitev: Aproksimacija časovnega odvoda(1. red): (ut+1-ut)/Δt Aproksimacija prostorskega odvoda (2.red): (ui+1-ui-1)/2Δx Vstavimo za vsako točko ui Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Končne razlike - izračun Postavimo robne pogoje u0 = uN-1= 0 (ut+1-ut)/Δt = -c * (ui+1-ui-1)/2Δx uit+1 = ui + (c Δt / 2Δx) (ui-1 – ui+1) Dobimo sistem enačb: ut+1 = A*ut Matrika A ima tri diagonale. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Končne razlike • Nova vrednost ut+1bo izračunana, ko bodo vsa opravila izračunala svoje vrednosti ut, in pridobila vrednosti svojega desnega soseda. • Vrednosti u0inuN-1so robne vrednosti in postavljene na vnaprej znano vrednost (v splošnem so lahko tudi funkcija časa). • Na začetku imajo vse točke začetno vrednost u0. • Vsaka točka je opravilo (D). • Komunikacija je potrebna z desnim in levim sosedom (K) • V vsaki točki izračunamo v vsakem časovnem koraku: ut+1 = c Δt (ui-1t + uit – ui+1t )/ 2Δx 3 FP, konstante izračunamo vnaprej . Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Končne razlike – vzporeden model • Imamo Nopravil, vsako je odgovorno za izračun u0, u1, ..., uN-1, v vsakem časovnem koraku, ki jih je T / Δt • Opravili 0 in N-1 sta robni in imata fiksne vrednosti, ki jih ni treba računati (sta malo drugačna od vseh ostalih). • Vzporeden model z opravili in kanali potrebuje dvosmerne kanale do levega in desnega soseda. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Končne razlike – združevanje, preslikava • Spet bomo združili (Z) opravila glede na število procesorjev in glede na delitev domene. • Preslikava (P) bo enostavna (upoštevati deljivost N/P). Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Vzporedno računanje in komunikacija Procesor 2 u4,u5,u6 Procesor 1 u1,u2,u3 Potek izračuna: procesor 1 procesor 2 stanje v času t t t t t t t t t t t t t ( ( ) ) ( ( ) ) ( ( ) ) ( ( ) ) ( ( ) ) ( ( ) ) T u T u u T u T u T u T u T u T 1 1 6 6 2 2 3 3 3 3 4 4 4 4 5 5 izračun + + D D + + D D + + D D + + D D t t t t t t t t t t ( ( ) ) t t t t t t t t t t ( ( ) ) ( ( ) ) ( ( ) ) ( ( ) ) ( ( ) ) u T T u komunikacija u T T u T u u T T u T u 1 1 6 6 2 2 4 4 3 3 3 3 4 4 5 5 Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 + + D D + + D D + + D D + + D D + + D D + + D D stanje v času t+Δt t t t t t t t t t t t t t t t t t t t t ( ( ) ) t t t t ( ( ) ) ( ( ) ) ( ( ) ) ( ( ) ) ( ( ) ) u T u T u T T u T u u T u T T u 1 1 6 6 2 2 3 3 3 3 4 4 4 4 5 5
Končne razlike - algoritem • Vsako opravilo izvede naslednji algoritem v vsakem časovnem koraku: Initialization if (taskID not 0 or N-1) { send local data ut to left and right outports; receives ut from its left and right inports; use these values to compute ut+1;} else ut+1 = ut ; • Program bo enak za vsa opravila (Single Program Multiple Data). • Vsa opravila se lahko izvedejo neodvisno. • Izvedba koraka je možna šele, ko so izračuni v prejšnjem koraku končani. Ne moremo izračunati nove vrednosti, če niso izračunane stare (sinhronizacija). Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Končne razlike – analiza zahtevnosti • Spet vzemimo enake vrednosti za analizo zahtevnosti, N točk in P procesorjev. • Predpostavimo da je obremenitev enaka na vseh procesorjih (vsak ima N/P točk). • Vsak procesor izvaja enake računske operacije (izjema sta procesorja z robnima vrednostma). • Celoten čas izvajanja zaporednega programa je Tr = tFP*3*N • Čas komunikacije: Tk = P*(ts +L*tw) ker vsak procesor izmenja eno točko z vsakim sosednjim procesorjem (dve dvosmerni sporočili – vse se lahko zgodi sočasno v času enega sporočila) Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13
Končne razlike – analiza zahtevnosti • Čas izvajanja vzporednega programa pa : Tp = (Tr + Tk) / P = tFP*3*N /P + (ts +L*tw) • Komunikacija potrebuje konstanten čas. Računanje pa se krajša z O(1/P). Če je P velik, bo delež računanja proti komunikaciji manjši in zato pohitritev manjša. • Pohitritev: S= Tr/ Tp= tFP*3*N / (tFP*3*N /P + (ts +L*tw)) = P*(tFP*3*N) / (tFP*3*N + P*(ts +L*tw)) Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13