Descargar la presentación
La descarga está en progreso. Por favor, espere
1
8. Begizten Paralelizazioa eta Atazen Banaketa
Arkitektura Paraleloak IF - EHU 8. Begizten Paralelizazioa eta Atazen Banaketa - Sarrera - Begizten paralelizazioa - Sinkronizazio-mekanismoak - Optimizazio nagusiak - Iterazioen (atazen) banaketa - Atal paraleloak
2
Sarrera Helburua: programak P aldiz azkarrago exekutatzea; kasu partikular bat: begiztak. Paraleloan exekuta daitezkeen atazak identifikatu behar dira (dependentzien analisia). Prozesuak sinkronizatu behar dira. Prozesuak prozesadoreetara banatu behar dira. Adi: eraginkortasuna!
3
Sarrera Paralelismo motak (1) (a) Datu-paralelismoa P0 P1 P2
do i = 1, 3000 A(i) = fun(i) enddo do i = 1, 1000 do i = 1001, 2000 do i = 2001, 3000 A(i) = fun(i) A(i) = fun(i) A(i) = fun(i) enddo enddo enddo P0 P1 P2
4
Sarrera Paralelismo motak (1) (b) Funtzio-paralelismoa P0 P1 F1 F2
5
▪ ale xehea (fine grain) ataza “txikiak” ▪ ale ertaina
Sarrera Paralelismo motak (2) ▪ ale xehea (fine grain) ataza “txikiak” komunikazio asko ▪ ale ertaina ▪ ale larria (coarse grain) ataza “handiak” komunikazio gutxi
6
Atazen arteko dependentziak?
Sarrera Atazen arteko dependentziak? P0 P1 F1 F2 F3 F4 Sinkronizazioa - globala (hesiak) - gertaerak (puntutik puntura)
7
▪ SPMD (Single-Program-Multiple-Data)
Sarrera Bi eredu: ▪ Nagusi/Morroi Hari (thread) nagusiak P hari sortzen ditu une jakin batean, paraleloan exekuta daitezen; ataza bukatutakoan, “hiltzen” dira. ▪ SPMD (Single-Program-Multiple-Data) Programaren P kopia (berdinak) exekutatzen dira. Atazak bereizteko, prozesuen identifikado-reak erabiltzen dira (pid).
8
ale xehea / ertaina Sarrera Begizten paralelizazioa
begiztaren iterazioen banaketa dependentzien analisia Modu eraginkorrean. Programatzailea edo konpiladorea?
9
Sarrera Eskuarki, eta salbuespenak salbuespen, kodearen paralelizazioa (dependentzien analisia, lan-banaketa…) programatzaileak berak egin behar du. Hori dela eta, begiztak eraginkorki paraleliza-tzeko ohiko aukerak analizatu behar ditugu.
10
Sarrera Kodearen frakzio handi bat exekutatu behar da paraleloan; ez ahaztu Amdahl-en legea. Kodearen paralelizazioak (bektorizazioak bezalaxe) begiztaren aginduen jatorrizko ordena aldatzen du. Beraz, aginduen arteko datu-dependentziak kontuan hartu behar dira.
11
Sarrera Adibidez: Paraleloan do i = 0, N-1 A(i) = A(i) + 1 enddo
L S0 L S1 L S2 ... P0: L S0 P1: L S1 P2: L S2 … ... Paraleloan L2 L0 +2 L S2 S1 S0 ...
12
Sarrera: datu-depend. i: A = ... j: = A i: = A ... j: A = WAW i: A =
benetako dependentziak izen-dependentziak dependentzia RAW i: A = ... j: = A antidependentzia WAR i: = A ... j: A = irteera-dependentzia WAW i: A = ... j: A = i j
13
Sarrera: datu-depend. Begiztak + Dependentzia-grafoak
+ Dependentziaren distantzia do i = 2, N-2 1 A(i) = B(i) + 2 2 C(i) = A(i-2) + A(i+1) enddo A(2) = B(2) + 2 C(2) = A(0) + A(3) A(3) = B(3) + 2 C(3) = A(1) + A(4) A(4) = B(4) + 2 C(4) = A(2) + A(5) A(5) = B(5) + 2 C(5) = A(3) + A(6) 1 2 A, 2 A, 1
14
Sarrera: depend.-grafoak
1 2 3 4 5 A, 0 A, 2 do i = 2, N-31 1 A(i) = B(i) + 2 2 C(i) = A(i-2) 3 D(i+1) = C(i) + C(i+1) 4 B(i+1) = B(i) + 1 5 D(i+30) = A(i) enddo B, 1 C, 0 C, 1 D, 29 B, 1
15
Sarrera: depend.-grafoak
+ Iterazio-espazioa i j do i = 2, N-1 do j = 1, N-2 1 A(i,j) = A(i,j-1) * 2 2 C(i,j) = A(i-2,j+1) + 1 enddo 1 2 A 2,-1 A 0,1
16
Sarrera: depend.-proba
Dependentzia-proba automatikoa: begiztaren indizearen funtzio linealak soilik. a*i+b L1 L2 i c*i+d do i = L1, L2 X(a*i+b) = = X(c*i+d) enddo i1 i2 d - b ZKH(c,a) Z → ez dago depend.
17
Begizten paralelizazioa
Begizten iterazioak prozesadoreen artean banatu behar dira, baina, jakina, datu-dependentziak errespetatu behar dira. Arazoa distantzia > 0 duten dependentziak dira, eta, batik bat, dependentzia-grafoan zikloak osatzen dituztenak.
18
Begizten paralelizazioa
Begiztak beti exekuta daitezke P prozesadore erabiliz, dependentziak errespetatzeko behar den sinkronizazioa gehituta… …baina horrek ez du esan nahi beti egin behar denik, kostu orokorra kontuan hartu behar baita: kalkulua + sinkronizazioa (komunikazioa).
19
Helburuak: Begizten paralelizazioa
Begizten iterazioak prozesadoreetara banatzea, “aldi berean” exekuta daitezen. Ahal bada, prozesuen arteko sinkronizazioa erabili behar izan gabe (0 distantziako depen-dentziak). Makinaren ezaugarrien arabera (komunikazio-sarea, lan-banaketa…), tamaina jakin bateko atazak sortzea.
20
Begizten paralelizazioa
Agian, prozesadore kopuru mugatua erabili beharko da. Adi eraginkortasunari (ad., cache memoriaren erabilera).
21
Begizten paralelizazioa
> Adibideak do i = 0, N-1 A(i) = A(i) + 1 B(i) = A(i) * 2 enddo P0 P1 P2 P3
22
? Begizten paralelizazioa > Adibideak do i = 0, N-2 A(i) = B(i) + 1
B(i+1) = A(i) * 2 enddo P0 P1 P2 P3 ?
23
Begizten paralelizazioa
> Adibideak P P0 P P1 do i = 0, N-3 A(i+2) = A(i) + 1 enddo
24
Begizten paralelizazioa
> Adibideak i j do i = 0, N-1 do j = 1, M-1 A(i,j) = A(i,j-1) + 1 enddo P0 P1 P2 P3
25
Begizten paralelizazioa
> Adibideak i j P0 P1 P2 P3 do i = 0, N-1 do j = 1, M-1 A(i,j) = A(i,j-1) + 1 enddo
26
Begizten paralelizazioa
Aginduen arteko dependentziak 0 distantziakoak baldin badira, hau da, iterazioak independenteak badira, iterazioak nahi den moduan bana daitezke prozesadoreetara, sinkronizazioa erabili gabe: doall. Iterazioen arteko dependentziak baldin badaude, baina denak “aurrerantz” badoaz, sinkronizazio-hesiak erabil daitezke: forall (edo doall + barrier). Dependentzia-zikloak baldin badaude, puntutik pun-turako sinkronizazioa erabili behar da: doacross.
27
Doall begiztak Iterazioak independenteak dira, eta banaketa nahi den moduan egin daiteke: doall. do i = 0, N-1 C(i) = C(i) * C(i) A(i) = C(i) + B(i) D(i) = C(i) / A(i) enddo doall i = 0, N-1 C(i) = C(i) * C(i) A(i) = C(i) + B(i) D(i) = C(i) / A(i) enddoall 1 2 3 C, 0 A, 0 i=
28
Forall begiztak Iterazioen arteko dependentziak daude, baina denak aurrerantz doaz: forall. Dependentzia bakoitza hesi baten bidez sinkroniza daiteke: prozesuek zain geratuko dira agindu jakin bat denok exekutatu arte. Behar dena baino sinkronizazio gehiago gehitzen da, baina oso metodo sinplea da.
29
Forall begiztak do i = 1, N-1 C(i) = C(i) * C(i) A(i) = C(i) + B(i)
D(i) = C(i-1) / A(i) enddo forall i = 1, N-1 C(i) = C(i) * C(i) A(i) = C(i) + B(i) HESIA (...) D(i) = C(i-1) / A(i) endforall 1 2 3 C, 0 A, 0 C, 1 i= hesia
30
Forall begiztak doall i = 1, N-1 C(i) = C(i) * C(i) A(i) = C(i) + B(i)
enddoall [ HESIA (...) ] D(i) = C(i-1) / A(i) do i = 1, N-1 C(i) = C(i) * C(i) A(i) = C(i) + B(i) D(i) = C(i-1) / A(i) enddo 1 2 3 C, 0 A, 0 C, 1 i= hesia
31
Dependentziak sinkronizatzeko, gertaera-bektoreak:
Doacross begiztak Dependentziek zikloak osatzen dituzte: doacross, ekoizle/kontsumitzaile motako sinkronizazioa. Dependentziak sinkronizatzeko, gertaera-bektoreak: post (gA,i) gA(i) := 1 wait (gA,i) itxaron gA(i) = 1 izan arte gA(i) = 0 bada, oraindik ez da exekutatu sinkronizatzen ari den aginduaren i iterazioa.
32
Doacross begiztak do i = 2, N-2 A(i) = B(i-2) + 1 doacross i = 2, N-2
B(i+1) = A(i-2) * 2 enddo doacross i = 2, N-2 wait (gB,i-3) A(i) = B(i-2) + 1 post (gA,i) wait (gA,i-2) B(i+1) = A(i-2) * 2 post (gB,i) enddoacross 1 2 A,2 B,3 i=
33
Doacross begiztak do i = 2, N-2 A(i) = B(i-2) + 1 doacross i = 2, N-2
B(i+1) = A(i-2) * 2 enddo doacross i = 2, N-2 wait (gB,i-3) A(i) = B(i-2) + 1 post (gA,i) wait (gA,i-2) B(i+1) = A(i-2) * 2 post (gB,i) enddoacross , 3 1 2 A,2 B,3 ... P P P2
34
?? Doacross begiztak ADI: paralelizatzea ez da beti egokia
do i = 0, N-2 A(i) = B(i) + C(i) B(i+1) = A(i) / 2 enddo doacross i = 0, N-2 wait (gB,i-1) A(i) = B(i) + C(i) B(i+1) = A(i) / 2 post (gB,i) enddoacross 1 2 p w … ?? 1 2 A,0 B,1
35
Bi dimentsioko gertaera-bektoreak
Doacross begiztak Bi dimentsioko gertaera-bektoreak do i = 0, N-2 do j = 0, N-2 A(i+1,j+1) = A(i+1,j) + 1 B(i,j) = A(i,j) enddo doacross i = 0, N-2 do j = 0, N-2 A(i+1,j+1) = A(i+1,j) + 1 post (gA,i,j) wait (gA,i-1,j-1) B(i,j) = A(i,j) enddo enddoacross P0 P1 P2 P3
36
Antidependentziak / Irteera-dependentziak
Beste dependentziak Antidependentziak / Irteera-dependentziak Prozesuen artean baldin badira, sinkronizatu egin behar dira. do i = 0, N-3 A(i) = B(i+2) / A(i) B(i) = B(i) + C(i) enddo doacross i = 0, N-3 A(i) = B(i+2) / A(i) post (gB,i) wait (gB,i-2) B(i) = B(i) + C(i) enddoacross LD B(i+2) post ... wait ST B(i) 1 2 B,2
37
If aginduak If motako aginduak do i = 1, N-1 if (B(i) > 0) then
A(i) = A(i) + B(i) C(i) = A(i-1) / 2 endif enddo doacross i = 1, N-1 if (B(i) > 0) then A(i) = A(i) + B(i) post (gA,i) wait (gA,i-1) C(i) = A(i-1) / 2 endif enddoacross else post (gA,i) endif 1 2 A,1
38
Sinkroniz.-mekanismoak
Nola sinkronizatu aginduak? • gertaera-bektoreen bidez (post/wait) - hasieratzea - tamaina (memoria) - adi! partekatze faltsua • kontagailuen bidez
39
Sinkroniz.-kontagailuak
Sinkronizazio-kontagailu bat dependentzia bakoitzeko - prozesuek ordena hertsian gehitzen dute kontagailua, agindu horren exekuzioa bukatu dela adierazteko. - kA = j j arteko iterazio guztiak bukatu dira, baina j+1 iterazioa ez. i = gA(i) = kA = 2
40
Sinkroniz.-kontagailuak
Nola sinkronizatu dependentzia bat kontagailu baten bidez: - i iterazioa exekutatu ondoren, itxaron egin behar da kontagailua i-1 izan arte (hau da, agindu horren exekuzioa i-1 iteraziora heldu arte): wait (kA,i-1) → itxaron kA = i-1 izan arte - gero, gehitu kontagailua, i iterazioa ere exekutatu dela adierazteko: post (kA,i) → kA := kA + 1 (kA := i)
41
Sinkroniz.-kontagailuak
do i = 3, N-1 C(i) = C(i) * D(i-3) A(i) = C(i) + B(i) D(i) = C(i-1) / A(i) enddo doacross i = 3, N-1 wait (gD,i-3) C(i) = C(i) * D(i-3) post (gC,i) A(i) = C(i) + B(i) wait (gC,i-1) D(i) = C(i-1) / A(i) post (gD,i) enddoacross doacross i = 3, N-1 wait (kD,i-3) C(i) = C(i) * D(i-3) wait (kC,i-1) post (kC,i) A(i) = C(i) + B(i) D(i) = C(i-1) / A(i) wait (kD,i-1) post (kD,i) enddoacross 1 2 3 C, 0 A, 0 C,1 D,3
42
Sinkroniz.-kontagailuak
do i = 3, N-1 C(i) = C(i) * D(i-3) A(i) = C(i) + B(i) D(i) = C(i-1) / A(i) enddo doacross i = 3, N-1 C(i) = C(i) * D(i-3) wait (kC,i-1) post (kC,i) A(i) = C(i) + B(i) D(i) = C(i-1) / A(i) enddoacross P0 1 2 3 C, 0 A, 0 C,1 D,3 Sinkronizazioa minimizatu
43
Adibide bat doacross i = ... doacross i = ... [ 1 ] forall i = ...
post (gA,i) wait (gA,i-1) [ 2 ] post (gC,i) [ 3 ] wait (gC,i-2) [ 4 ] enddoacross doacross i = ... [ 1 ] wait (kA,i-1) post (kA,i) [ 2 ] wait (kC,i-1) post (kC,i) [ 3 ] [ 4 ] enddoacross forall i = ... [ 1 ] hesia(...) [ 2 ] [ 3 ] [ 4 ] endforall 1 2 3 A, 1 C, 2 B,0 A,0 4
44
Optimizazio nagusiak 0. Konstanteen definizioak eta indukzio-aldagaiak desegitea. 1. Berezkoak ez diren dependentzia guztiak ezabatzea. Esaterako, do i = 0, N-1 X = A(i) * B(i) C(i) = SQRT(X) D(i) = X - 1 enddo doall i = 0, N-1 X(i) = A(i) * B(i) C(i) = SQRT(X(i)) D(i) = X(i) - 1 enddoall X aldagaia pribatua bihurtu ez da bektore bat erabilli behar, nahikoa da X aldagaia pribatua dela adieraztea
45
Optimizazio nagusiak 2. Begiztaren fisioa.
Seriean exekutatu behar den zati bat baldin badago, zatitu begizta bi partetan (edo gehiago), ahal dena paraleloan exekutatzeko. do i = 1, N-1 A(i) = A(i-1) / 2 D(i) = D(i) + 1 enddo do i = 1, N-1 A(i) = A(i-1) / 2 enddo doall i = 1, N-1 D(i) = D(i) + 1 enddoall
46
3. Dependentziak ordenatzea (aurrerantz).
Optimizazio nagusiak 3. Dependentziak ordenatzea (aurrerantz). do i = 1, N-1 A(i) = D(i-1) / 2 D(i) = C(i) + 1 enddo forall i = 1, N-1 D(i) = C(i) + 1 HESIA (...) A(i) = D(i-1) / 2 endforall 1 2 D, 1 2………….1 2………1 2…….1 1…2.. ??
47
4. Dependentziak lerrokatzea: peeling.
Optimizazio nagusiak 4. Dependentziak lerrokatzea: peeling. do i = 1, N-1 A(i) = B(i) C(i) = A(i-1) + 2 enddo C(1) = A(0) + 2 doall i = 1, N-2 A(i) = B(i) C(i+1) = A(i) + 2 enddoall A(N-1) = B(N-1) 1 2 A, 1
48
Optimizazio nagusiak do i = 2, N-1 1 A(i) = B(i)
C(i) = A(i-1) + A(i-2) enddo 1 2 A, 2 A, 1 do i = 2, N-1 A(i) = B(i) X(i) = B(i) C(i) = X(i-1) + A(i-2) enddo C(2) = A(1) + A(0) C(3) = B(2) + A(1) doall i = 2, N-3 A(i) = B(i) X(i+1) = B(i+1) C(i+2) = X(i+1) + A(i) enddoall A(N-2) = B(N-2) A(N-1) = B(N-1) 1’ 2 A, 2 X, 1 1
49
5. Hari independenteak sortzea
Optimizazio nagusiak 5. Hari independenteak sortzea do i = 0, N-3 A(i+1) = B(i) + 1 B(i+2) = A(i) * 3 C(i) = B(i+2) - 2 enddo B(2) = A(0) * 3 C(0) = B(2) - 2 doall k = 0, 2 do i = pid, N-4, 3 A(i+1) = B(i) + 1 B(i+3) = A(i+1) * 3 C(i+1) = B(i+3) – 2 enddo enddoall A(N-2) = B(N-3) + 1 1 2 3 B,0 B,2 A,1
50
6. Sinkronizazioa minimizatzea
Optimizazio nagusiak 6. Sinkronizazioa minimizatzea 1 2 3 B,0 B,1 A,1 4 5 C,1 C,2 D,0 do i = 2, N-1 B(i) = B(i) + 1 C(i) = C(i) / 3 A(i) = B(i) + C(i-1) D(i) = A(i-1) * C(i-2) E(i) = D(i) + B(i-1) enddo doacross i = 2, N-1 B(i) = B(i) + 1 C(i) = C(i) / 3 post (gC,i) wait (gC,i-1) A(i) = B(i) + C(i-1) post (gA,i) wait (gA,i-1) D(i) = A(i-1) * C(i-2) E(i) = D(i) + B(i-1) enddoacross i=2 3 4 ...
51
7. Bi dimentsioko begiztak: begizta-trukea.
Optimizazio nagusiak 7. Bi dimentsioko begiztak: begizta-trukea. do j do_par i do i do_par j do_par i do j do_par j do i
52
Optimizazio nagusiak Adibidez: do i = 1, N-1 do j = 0, N-1
2 3 4 do i = 1, N-1 do j = 0, N-1 A(i,j) = A(i-1,j) + 1 enddo do i = 1, N-1 doall j = 0, N-1 A(i,j) = A(i-1,j) + 1 enddoall enddo
53
Optimizazio nagusiak Adibidez: do i = 1, N-1 do j = 0, N-1
2 3 4 do i = 1, N-1 do j = 0, N-1 A(i,j) = A(i-1,j) + 1 enddo doall j = 0, N-1 do i = 1, N-1 A(i,j) = A(i-1,j) + 1 enddo enddoall
54
8. Bi dimentsioko begiztak: noranzko-aldaketa.
Optimizazio nagusiak 8. Bi dimentsioko begiztak: noranzko-aldaketa. do i = 1, 100 do j = 0, 2 A(i,j) = A(i,j) - 1 D(i) = A(i-1,j+1) * 3 enddo j= i=1 2 3 4 do j = 2, 0, -1 doall i = 1, 100 A(i,j) = A(i,j) - 1 D(i) = A(i-1,j+1) * 3 enddoall enddo
55
Optimizazio nagusiak 9. Skew do i = 1, N do j = 1, N
A(i,j) = A(i-1,j) + A(i,j-1) enddo do j = 1, 2N-1 doall i = max(1,j-N+1), min(j,N) A(i,j-(i-1)) = A(i-1,j-(i-1)) + A(i,j-1-(i-1)) enddoall enddo
56
10. Ohiko beste zenbait optimizazio:
Optimizazio nagusiak 10. Ohiko beste zenbait optimizazio: Alearen tamaina handitzeko eta paralelizazioaren gainkarga arintzeko. - Bi begizta batean bildu (esanahia mantentzen bada!): fusioa. - Bi dimentsioko begizta dimentsio bakarreko begizta bihurtu: kolapsoa edo koalestzentzia. - …
57
Baina iterazio baino prozesadore gutxiago badago?
Iterazioen banaketa Nola banatzen dira begizten iterazioak (atazak, oro har) prozesadoreen artean? Iterazio adinako prozesadore badago, agian bat prozesadoreko. Baina iterazio baino prozesadore gutxiago badago? Banaketa (scheduling) izan daiteke: estatikoa: programa konpilatzen denean. dinamikoa: programa exekutatzen ari denean.
58
Iterazioen banaketa Helburua: banatzen diren atazen exekuzio-denborak berdintsuak izatea, hutsarteak saihesteko (load balancing). Nolanahi ere den, adi dependentziei (sinkronizazioa), ale-tamainari, atzipenen lokaltasunari, eta banaketaren kostuari.
59
Iterazioen banaketa Banaketa estatikoa
Programa konpilatzen denean erabakitzen da zer exekutatuko duen prozesu bakoitzak. Beraz, erabakita dago exekuzioa hasi baino lehen. Prozesuek aldagai pribatu bana erabiltzen dute identifikadore gisa: pid (0..P-1). Oinarrizko bi aukerak: ondoz ondokoa eta tartekatua.
60
▪ Ondoz ondokoa ▪ Tartekatua Iterazioen banaketa
▪ Tartekatua hasi = pid * N/P buka = (pid+1) * N/P – 1 do i = hasi, buka ... enddo do i = pid, N, P ... enddo - Ez zaio gainkargarik gehitzen prozesuen exekuzioari. - Baina ez da prozesuen arteko lan-kargaren oreka ziurtatzen. - Cache memoriako atzipenen lokaltasuna kontrola daiteke.
61
Iterazioen banaketa Lan-kargaren oreka estatikoa (finkoa)
do i = 1, 80 if (A(i) > 0) kalkulatu() enddo beste ataza baten esleipen dinamikoa 1-20 21-40 41-60 61-80 estatikoa (finkoa) 1-10 21-30 11-20 31-40 Tex Tex
62
Iterazioen banaketa Banaketa dinamikoa
Lan-karga orekatuta mantentzeko, “ataza ilara” bat antolatzen da. Prozesu batek ataza baten exekuzioa bukatzen duenean (begiztaren zati bat), beste bat hartzen du ilaratik. Oinarrizko bi aukera: banatzen diren begizta zatiak tamaina berdinekoak dira beti, edo, exekuzioa aurrera joan ahala, gero eta txikiagoak dira.
63
Self / Chunk scheduling
Iterazioen banaketa Self / Chunk scheduling Iterazioak banan-banan banatzen dira, edo multzoka. LOCK (S); nik = i; i = i + Z; Z = 1 self UNLOCK (S); while (nik <= N-1) endwhile Gainkarga gehitzen zaio begiztaren exekuzioari. Alderatu behar dira exekuzio-denbora eta esleipenarena. do j = nik, min(nik+Z-1, N-1) ... enddo LOCK (S) nik = i; i = i + Z; UNLOCK (S)
64
▪ Guided exekutatzeko falta den zatiaren parte proportzionala:
Iterazioen banaketa Guided / Trapezoid scheduling Banatzen diren begizta zatiak gero eta txikiagoak dira, bukaerara hurbiltzen den neurrian. ▪ Guided exekutatzeko falta den zatiaren parte proportzionala: Zs = (N – i) / P (goiko zenbaki osoa) edo, baliokidea dena, Zs = Zs-1 (1 - 1/P)
65
Iterazioen banaketa ▪ Trapezoid zatien tamaina konstante batez txikiagotzen da: Zs+1 = Zs - k esleipen-eragiketa Z1 Zn 1 k 2 i Z2
66
Iterazioen banaketa Oro har, atazen exekuzio-denbora berdintsua izatea bilatzen du banaketa dinamikoak, baina: - banaketaren kostua (overhead) kontuan hartu behar da, atazen exekuzioarekin alderatuta. - datu-atzipenen lokaltasuna eta partekatze faltsuaren arazoak ere kontuan hartu behar dira.
67
▪ trapezoid (Z1 = 76, Zn = 4 >> k = 3)
Iterazioen banaketa Adibide bat (1.000 iterazio independente, 4 prozesadore): ▪ chunk (Z = 100) (10) ▪ guided falta dira: … banatzen dira: … (22) ▪ trapezoid (Z1 = 76, Zn = 4 >> k = 3) … (25)
68
Prozedura- edo funtzio-mailako paralelismoa:
Atal paraleloak Prozedura- edo funtzio-mailako paralelismoa: - Fork / Join eredua - Parallel sections Fork F1 F2 Join F3 F4 F5 doall k = 0, 1 if (pid = 0) then F1 if (pid = 1) then F2 endoall [hesia] if (pid = 0) then F3 if (pid = 1) then F4 F5 F2 F3 F1 F4 F5
69
Beg. Par. | Atal Paraleloak
Arkitektura Paraleloak IF - EHU Beg. Par. | Atal Paraleloak Prozedura- edo funtzio-mailako paralelismoa: - Fork / Join eredua - Parallel sections F2 F3 F1 F4 F5 Fork Join doall k = 0, 1 if (pid=0) then F1 if (pid=1) then F2 endoall [hesia] if (pid=0) then F3 if (pid=1) then F4
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.