1 / 69

Arkitektura Paraleloak

Arkitektura Paraleloak. 8. Begizten Paralelizazioa eta Atazen Banaketa. - Sarrera - Begizten paralelizazioa - Sinkronizazio-mekanismoak - Optimizazio nagusiak - Iterazioen (atazen) banaketa - Atal paraleloak. Arkitektura Paraleloak. IF - EHU. Sarrera.

etta
Télécharger la présentation

Arkitektura Paraleloak

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arkitektura Paraleloak 8.Begizten Paralelizazioa eta Atazen Banaketa - Sarrera - Begizten paralelizazioa - Sinkronizazio-mekanismoak - Optimizazio nagusiak - Iterazioen (atazen) banaketa - Atal paraleloak Arkitektura Paraleloak IF - EHU

  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. P0 P2 P1 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 Sarrera • Paralelismo motak (1) (a) Datu-paralelismoa do i = 1, 3000 A(i) = fun(i) enddo

  4. P0 P1 F1 F3 F2 F4 Sarrera • Paralelismo motak (1) (b) Funtzio-paralelismoa

  5. Sarrera • Paralelismo motak (2) ▪ale xehea (fine grain)ataza “txikiak” komunikazio asko ▪ ale ertaina ▪ale larria(coarse grain)ataza “handiak” komunikazio gutxi

  6. P0 P1 F1 F3 F2 F4 Sarrera • Atazen arteko dependentziak? Sinkronizazioa - globala (hesiak) - gertaerak (puntutik puntura)

  7. 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. Sarrera • Begizten paralelizazioa ale xehea / ertaina 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. L0+0S0L1+1S1L2+2S2 ... L2L0+2L1+0+1S2S1S0 ... P0: L0+0S0 P1:L1+1 S1 P2: L2+2S2 … ... Paraleloan Sarrera • Adibidez: • do i = 0, N-1 • A(i)=A(i)+1 • enddo

  12. dependentzia RAW i: A = ... j: = A antidependentzia WAR i: = A ... j: A = irteera-dependentzia WAW i: A = ... j: A = ij ij i j Sarrera: datu-depend. benetako dependentziak izen-dependentziak

  13. 1 A, 2 2 A, 1 Sarrera: datu-depend. do i = 2, N-2 1 A(i) = B(i) + 2 2 C(i) = A(i-2) + A(i+1) enddo • Begiztak • + Dependentzia-grafoak • + Dependentziaren distantzia 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)

  14. 1 A, 2 2 C, 0 A, 0 C, 1 3 B, 1 4 D, 29 B, 1 5 Sarrera: depend.-grafoak 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

  15. j i A0,1 1 A2,-1 2 Sarrera: depend.-grafoak • + Iterazio-espazioa 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 enddo

  16. a*i+b c*i+d i L2 L1 d-b Z→ez dago depend. ZKH(c,a) Sarrera: depend.-proba • Dependentzia-proba automatikoa: begiztaren indizearen funtzio linealak soilik. do i = L1, L2 X(a*i+b) = = X(c*i+d) enddo i1i2

  17. Begizten paralelizazioa • Begizten iterazioak prozesadoreen artean banatu behar dira, baina, jakina, datu-dependentziak errespetatu behar dira. • Arazoa distantzia> 0duten 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. Begizten paralelizazioa • Helburuak: Begizten iterazioak prozesadoreetara banatzea, “aldi berean” exekuta daitezen. Ahal bada, prozesuen arteko sinkronizazioaerabili 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. P0 P1 P2 P3 Begizten paralelizazioa • >Adibideak do i = 0, N-1 A(i) = A(i) + 1 B(i) = A(i) * 2 enddo

  22. P0 P1 P2 P3 ? Begizten paralelizazioa • >Adibideak do i = 0, N-2 A(i) = B(i) + 1 B(i+1) = A(i) * 2 enddo

  23. P1 P1 P0P0 Begizten paralelizazioa • >Adibideak do i = 0, N-3 A(i+2) = A(i) + 1 enddo

  24. P0 P1 P2 P3 Begizten paralelizazioa • >Adibideak j do i = 0, N-1 do j = 1, M-1 A(i,j) = A(i,j-1) + 1 enddo enddo i

  25. P0 P1 P2 P3 Begizten paralelizazioa • >Adibideak j do i = 0, N-1 do j = 1, M-1 A(i,j) = A(i,j-1) + 1 enddo enddo i

  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. 1 i=0 1 2 3 C,0 2 A, 0 3 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

  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. 1 i=1 2 3 4 C,0 C,1 2 A, 0 hesia 3 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

  30. 1 i=1 2 3 4 C,0 C,1 2 A, 0 hesia 3 Forall begiztak doall i = 1, N-1 C(i) = C(i) * C(i) A(i) = C(i) + B(i) enddoall [ HESIA (...) ] doall i = 1, N-1 D(i) = C(i-1) / A(i) enddoall 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

  31. Doacross begiztak • Dependentziek zikloak osatzen dituzte: doacross, ekoizle/kontsumitzaile motako sinkronizazioa. Dependentziak sinkronizatzeko, gertaera-bektoreak: post(gA,i) gA(i):= 1 wait(gA,i)  itxarongA(i)=1izan arte gA(i)=0 bada, oraindik ez da exekutatu sinkronizatzen ari den aginduaren i iterazioa.

  32. i=2 3 4 5 6 7 1 111 . . . 222 . . . 111 222 A,2 B,3 2 Doacross begiztak do i = 2, N-2 A(i) = B(i-2) + 1 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

  33. ,3 P0 P1 P2 12 13 14 22 23 24 15 16 17 25 26 27 ... 1 A,2 B,3 2 Doacross begiztak do i = 2, N-2 A(i) = B(i-2) + 1 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

  34. 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 p w 1 … 1 A,0 B,1 2 ?? 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

  35. P0 P1 P2 P3 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 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

  36. 1 B,2 2 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)

  37. 0 1 A,1 2 If aginduak • Ifmotako 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 elsepost (gA,i) endif

  38. Sinkroniz.-mekanismoak • Nola sinkronizatu aginduak? • gertaera-bektoreen bidez (post/wait) - hasieratzea - tamaina (memoria) - adi! partekatze faltsua • kontagailuenbidez

  39. Sinkroniz.-kontagailuak • Sinkronizazio-kontagailu bat dependentzia bakoitzeko - prozesuek ordena hertsian gehitzen dute kontagailua, agindu horren exekuzioa bukatu dela adierazteko. - kA = jj arteko iterazio guztiak bukatu dira, baina j+1 iterazioa ez. i = 0 1 2 3 4 5 6 7 8 9... gA(i) = 1 1 1 0 1 0 1 1 0 0... 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, gehitukontagailua, i iterazioa ere exekutatu dela adierazteko: post(kA,i) → kA:=kA+1(kA:= i)

  41. 1 1 1 2 2 2 3 3 3 1 1 1 2 2 2 3 3 3 1 D,3 C, 0 2 C,1 A, 0 3 Sinkroniz.-kontagailuak 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 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 (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

  42. P0 1 1 1 2 2 2 3 3 3 1 1 1 2 2 2 3 3 3 1 D,3 P0 C, 0 2 C,1 A, 0 3 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 Sinkronizazioa minimizatu

  43. A, 1 1 2 A,0 3 B,0 C, 2 4 Adibide bat doacross i = ... [ 1 ] 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 ] hesia(...) [ 4 ] endforall

  44. Xaldagaia pribatua bihurtu 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 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. 1 1…2.. 1…2.. 1…2.. 2………….1 2………1 2…….1 D, 1 2 ?? 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

  47. 1 A, 1 2 Optimizazio nagusiak • 4.Dependentziaklerrokatzea: 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)

  48. 1 A, 2 A, 1 2 1 1’ A, 2 X, 1 2 Optimizazio nagusiak do i = 2, N-1 A(i) = B(i) C(i) = A(i-1) + A(i-2) enddo 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)

  49. 1 A,1 B,2 2 B,0 3 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 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3

  50. 1 B,0 2 C,1 3 C,2 A,1 i=2 3 4 ... 4 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 B,1 D,0 5 Optimizazio nagusiak • 6.Sinkronizazioa minimizatzea 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

More Related