940 likes | 1.15k Views
A RKITEKTURA P ARALELOAK Abiadura Handiko Konputazioa Agustin Arruabarrena agustin.arruabarrena@ehu.es www.sc.ehu.es/arpar K onputagailuen A rkitektura eta T eknologia saila I nformatika F akultatea – E uskal H erriko U nibertsitatea. Arkitektura Paraleloak. IF - EHU. 0 . Sarrera .
E N D
ARKITEKTURA PARALELOAK AbiaduraHandikoKonputazioa Agustin Arruabarrena agustin.arruabarrena@ehu.es www.sc.ehu.es/arpar KonputagailuenArkitektura eta Teknologiasaila Informatika Fakultatea – EuskalHerrikoUnibertsitatea Arkitektura Paraleloak IF - EHU
0.Sarrera. • 1.Bektore-konputagailuak. • 2.Konputagailu paraleloak (oinarrizko kontzeptuak). • 3.Datuen koherentzia (SMP). • 4.Prozesuen sinkronizazioa (SMP). • 5.Memoriaren kontsistentzia. • 6. Komunikazio-sarea. Mezu-ematea. • 7.Datuen koherentzia (DSM). • 8.Begiztenparalelizazioa eta atazen banaketa. • 9.Abiadura handiko konputagailu paraleloak. Programazio paraleloa: OpenMP eta MPI (sarrera).
Konputagailuen eboluzioa azaltzeko, hiru faktore kontuan hartu behar dira: aurrerapenak teknologia elektronikoan. aurrerapenak sistemaren arkitekturaren diseinuan. aurrerapenak sistemaren softwarearen garapenean.
Aurrerapenak teknologia elektronikoan transistore kopurua > 1.000 M erloju-maiztasuna > 1 GHz kommutazio-abiadura integrazio- eta paketatze-teknologia memoria-edukiera osagaien/txipen arteko komunikazio-denborak
Aurrerapenak sistemaren arkitekturan RISC arkitekturak memoria-hierarkia unitate funtzional bereziak erregistroak segmentazioa (ILP) desordena (Tomasulo) supereskalarrak - VLIW / espekulazioa - aurreikuspena multithreading nukleo (core) asko txipean kalkulurako gune bereziak: txartel grafikoak
Aurrerapenak sistemaren eta aplikazioen softwarean OpenMP MPI UPC OpenCL / Cuda ... list scheduling loop unrolling software pipelining trace scheduling EPIC …
Prozesadore eskalarren kalkulu-abiadura > 1 Gflop/s 109 koma higikorreko eragiketa segundoko Gogoratu: Mega (M) 106 Giga (G) 109 Tera (T) 1012 Peta (P) 1015 mikro (µ) 10-6 nano (n) 10-9 pico (p) 10-12 femto (f) 10-15 Abiadura hori ez da nahikoa hainbat aplikazio tekniko/zientifikotarako meteorologia, genetika, astrofisika, aeronautika, geofisika, ingeniaritza, materialak, datu-base handiak...
Hennessy – Patterson, 4. arg. % 20 urteko % 52 urteko
Irtenbidea: paralelismoa - Multicore(2-8 prozesadore txip batean) - Prozesadore asko (?) batera elkarlanean P = 10.000 proz. → 10.000 GF/s?? Nola erabili P prozesadore? sare bat / errepikapen hutsa / sistema paraleloa
Datu-jarioak 1asko SIMD array processors bektore-konputagailuak 1 Agindu- jarioak MIMD memoria partekatua memoria pribatua asko Flynn-en sailkapena SISD
1. Bektore-konputagailuak - Sarrera - Datu-dependentziak - Egiturazko dependentziak - Kalkulu-abiadura - Bektore-kodea
Kode eskalar arrunta Sarrera do i = 0, N-1 C(i) = A(i) + B(i) enddo beg: FLD F1,A(R1) FLD F2,B(R1) FADD F3,F2,F1 FST C(R1),F3 ADDI R1,R1,#8 SUBI R2,R2,#1 BNZ R2,beg TE≈ 7Nziklo
Bektore-kodea LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 Sarrera do i = 0, N-1 C(i) = A(i) + B(i) enddo Bektoreak: - hasiera-helbidea - luzera - pausoa (stride) 2000 – 2008 – 2016 – 2024 – ... – 2116 hasiera-helb. = 2000 / luzera = 16 / pausoa = 8
Sarrera LV V1,A(R1) BD Ir AM M M M Id AM M M M Id AM M M M Id ... ... AM M M M Id BD Ir AM M M M Id Id ... ... Id
N th Sarrera LV V1,A(R1) LV V2,B(R1) ADDV V3,V1,V2 SV C(R1),V3 BD Ir AMMMMId ... ... Id BD IrAMMMMId ... ... Id BD ....IrAAId ......Id BDIrAM....Ir MMMId......Id N = 128, th = 14 TE = 896 ziklo TB = 142 ziklo TB≈ th + Nziklo TE ≈ 7N ziklo
Sarrera LV V1,A(R1) LV V2,B(R1) ADDV V3,V1,V2 SV C(R1),V3 BD Ir AMMMMId ... ... Id BD IrAMMMMId ... ... Id BD ....IrAAId ......Id BDIrAM....Ir MMMId......Id Arazoak Memoria: segmentatuta / bus kop. / moduluak Unitate funtzionalak: segmentatuta / asko Bektore-erreg.: tamaina / kopurua / atzipena
Sarrera Arazoak Programak: dena bektore-eragiketak? beti bektoriza daitezke? Jatorrizko kodea desordenatu eginbehar da! do i = 0, N-1 A(i) = A(i) + 1 enddo eskalarki: L0 +0 S0 / L1 +1 S1 / ... / LN-1 +N-1 SN-1 bektorialki: L0 L1 ... LN-1 / +0 +1 ... +N-1 / S0 S1 ... SN-1
Unitate funtzion. Erregistroak Erregistroak Prozesadore eskalarra (osoa) Memoria (erag.) Bektore-prozesadoreko kontrola Helbide- unitatea (datuak) Sarrera Bektore-arkitekturaren eskema logikoa (tomasulo)
Sarrera Makina-lengoaia LV Vi,A(Rj) Vi:= M(A+Rj) SV A(Rj),Vi M(A+Rj):= Vi OPV Vi,Vj,Vk Vi:= Vj OP Vk OPVS Vi,Vj,Fk Vi:= Vj OP Fk OPVI Vi,Vj,#k Vi:= Vj OP #k VL→ bektoreen luzera VS→ bektoreen pausoa MOVI VL,#64 MOVI VS,#8 LV V1,A(R1)
Datu-dependentziak Bektore-agindu batek aurreko agindu baten emaitza behar du. LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 do i = 0, N-1 A(i) = A(i) + 1 enddo - itxaron bektore osoa erregistroan kargatu arte, eta gero irakurri. - egin Id → Irzirkuitulaburra, eta irakurri bektore-osagaiak ahal bezain laster: KATEAKETA (chaining)
LV ADDVI N SV N N Datu-dependentziak Kateaketa egin gabe LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 BD Ir AM M M M Id ... Id BD. . . . . ... . Ir A A Id ... Id BDIrAM.. ... .. ... ... .IrMMMId... TB = 13 + 3N
LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 BD Ir AM M M M Id ... ... ... ...Id LV ADDVI SV N Datu-dependentziak Kateaketa eginez BD . . . . IrA A Id ... ... ... Id BDIrAM.. . . IrM M M Id ... ... TB = 13 + N
BD Ir AM M M M Id ... ... ... ... Id BDIrAMM M M Id ... ... ... ... Id Datu-dependentziak Kateaketa bi agindurekin: C = A + B LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 BD . . . . IrA A Id ... ... ... Id BDIrAM. . . . Ir M M M Id ... ... Oro har, eragigai bat unitate funtzional batetik eta bestea erregistro-multzotik (idazten ari da, edo idatzita dago).
Datu-dependentziak Exekuzio-taulak (A=A+1) kateaketaez Ex.has. UFlat. 1.dat N.dat LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 3 3 6+1 6+N 6+N+1 2 9+N+1 9+2N 9+2N+1 3 13+2N+1 13+3N kateaketabai Ex.has. UFlat. 1.dat N.dat LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 3 3 6+1 6+N [7] 2 9+1 9+N [10] 3 13+1 13+N
Ex.has. UFlat. 1.dat N.dat LV V1,A(R1) LV V2,B(R1) ADDV V3,V1,V2 SV C(R1),V3 kateaketa ez Ex.has. UFlat. 1.dat N.dat LV V1,A(R1) LV V2,B(R1) ADDV V3,V1,V2 SV C(R1),V3 kateaketa bai Datu-dependentziak Exekuzio-taulak (C=A+B) 3 3 6+1 6+N 4 3 7+1 7+N 7+N+1 2 10+N+1 10+2N 10+2N+1 3 14+2N+1 14+3N 3 3 6+1 6+N 4 3 7+1 7+N [8] 2 10+1 10+N [11] 3 14+1 14+N
Egiturazko dependentziak Baliabideaklibre al daude? -unitate funtzionalak adi: N ziklo okupatuko dira. -bektore-erregistroak adi: irakurketa/idazketarako bus nahikoak. -memoriako busak -memoria-moduluak Okupatuta badaude, ziklo asko (N) galduko dira.
LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 BD Ir AM M M M Id ... ... ... ... Id BD . . . . IrA A Id ... ... ... Id LV ADDVI SV Egiturazko dependentziak Memoriako busak Zenbat bus daude memoriarekin lan egiteko? bus bakar bat BDIrAM.. . . ? ...IrM M MId ... busa okupatuta TB≈2N
Egiturazko dependentziak Memoria-bus bakarra (A = A + 1) kateaketa bai Ex.has. UFlat. 1.dat N.dat LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 3 3 6+1 6+N [7] 2 9+1 9+N [6+N] 3 9+N+1 9+2N
3 3 6+1 6+N 6+N 3 9+N+1 9+2N 2 12+N+1 12+2N 3 12+2N+1 12+3N LV LV TB≈3N ADDV SV Egiturazko dependentziak Memoria-bus bakarra (C = A + B) Ex.has. UFlat. 1.dat N.dat LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 kateaketa bai [10+N] [9+2N]
Ex.has. UFlat. 1.dat N.dat LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 3 3 6+1 6+N 4 3 7+1 7+N kateaketa bai [8] 2 10+1 10+N [6+N] 3 9+N+1 9+2N LV LV TB≈2 N ADDV SV Egiturazko dependentziak Bi memoria-bus (C = A + B)
Egiturazko dependentziak Memoria-moduluak Libre al daude erabili behar diren memoria-moduluak? Okupatuta badaude, LV/SV aginduak zain geratuko dira. Arazoak: - memoria-agindu bat bere buruarekin. - memoria-agindu bat beste batzuekin.
Egiturazko dependentziak Memoria-eragiketa bakarra m0 m1 m2 m3 tm = 3 ziklo mk = 4 s = 1 M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M Zenbat modulu erabiltzen dira? mk / ZKH(mk,s) Beraz, ez dago arazorik baldin mk / ZKH(mk,s) ≥ tm
m0 m1 m2 m3 m0 m1 m2 m3 A00 A01 A02 A03 - A10 A11 A12 A13 -A20 A21 A22 A23 -A30 A31 A32 A33 - A00 A01 A02 A03 A10 A11 A12 A13 A20 A21 A22 A23 A30 A31 A32 A33 Egiturazko dependentziak Padding s = 1 arazorik ez s = 1 arazorik ez Errenkadak: s = 4 arazo asko s = 5 arazorik ez Zutabeak: s = 5 arazorik ez s = 6 arazoak Diagonal n.: s = 3 arazorik ez s = 4 arazoak Diagonal tx.:
- - - M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M Egiturazko dependentziak Memoria-eragiketa bat baino gehiago Ex.has. UFlat. 1.dat N.dat LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 3 3 6+1 6+N [7] 2 9+1 9+N [10] 4 5 6 7 8 910 11 12 13 14 15 16 17 18 19 m0 m1 m2 m3 m4 m5 m6 m7 M M M M M M M M M M M
Egiturazko dependentziak Zenbat ziklo itxaron behar da, erabili behar den memoria-modulua libre izan arte (s=1)? Erabili ezin diren moduluen zerrenda osatu behar da: 1.Kalkulatu zein modulutan hasiko den memoriako aurreko agindua (j): (hk – hj) + hasiera-moduluaj 2.Gehitu aurretik eta atzetik tm-1 modulu. 3.k aginduak erabili behar duen modulua zerrenda horretan badago, itxaron zerrendako posizioko adinako ziklo.
Egiturazko dependentziak Ex.has. Mod.ok. Itx. UFlat. 1.dat N.dat LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 3 3 6+1 6+N [7] 2 9+1 9+N 3 17+1 17+N [10] 4 5, 6 - 7 - 0, 1
Egiturazko dependentziak Erregistroen tamaina (Lmax) - zer egin bektoreak luzeagoak badira? strip mining do i = 0, N-1 A(i) = A(i) + 1 enddo MOVI VS,#1 MOVI R1,#N segi: MOV VL,R1 LV V1,A(R2) ADDVI V2,V1,#1 SV A(R2),V2 ADDI R2,R2,#Lmax SUBI R1,R1,#Lmax BGTZ R1,segi TB =N/Lmax(th + tbeg) + tb N TB = 30 + 3N; N = 500; Lmax = 64; tbeg = 10 → 8×(30+10) + 1.500 = 1.820 (+ % 19)
Kalkulu-abiadura Hiru parametro erabili ohi dira “abiadura” adierazteko: - Exekuzio-denbora(ziklotan zein segundotan). - Kalkulu-abiadura: exekutatu diren koma higikorreko eragiketen kopurua, segundoko. - Azelerazio-faktorea(speed-up): zenbat bider azkarragoa den bektore-exekuzioa exekuzio eskalarra baino.
300 TB 250 200 malda = tb 150 100 TB = 30 + 2N 50 th N 0 0 25 50 75 100 125 150 Kalkulu-abiadura Exekuzio-denbora (N-ren arabera) esk.: TE = te N bekt.: TB = th + tb N ADI: zikloak! segundotan emateko, erloju-periodoaz (T) biderkatu behar da.
RB R∞ R∞/2 N N1/2 Kalkulu-abiadura Kalkulu-abiadura (N-ren arabera) [ ] × EragKop ×F MF/s RB = N / TB = N / (th + tbN) R∞ = [1 / tb]× EK × F N1/2 → R∞ / 2 N1/2= th / tb
Kalkulu-abiadura Azelerazio-faktorea (speed-up) KB = TE / TB = te N / (th + tbN) K∞ = te / tb Bektore-luzera minimoa TE = TB te NB = th + tb NB → NB = N1/2 / (K∞– 1)
Kalkulu-abiadura Kode eskalarraren eragina: Amdahl-en legea. Kode zati bat, f, bektorialki, eta bestea, 1–f, eskalarki. TBE = f TB + (1-f) TE KBE = TE / TBE = TE / (f TB + (1–f) TE) = KB / (KB – f (KB–1))
16 14 (KB = 2, 4, 8, 16) 12 10 azelerazio-faktorea (speed-up) 8 6 KB = ∞ 4 2 0 0 0.2 0.4 0.6 0.8 1 f (bektorizazio-faktorea) Kalkulu-abiadura Amdahl-en legea KBE = KB / (KB – f (KB–1))
Kalkulu-abiadura Amdahl-en legea Kalkulu-abiadura: RBE = N / TBE = N / (f TB + (1-f) TE) = = N / (f (th + tb N) + (1-f) te N) = = N / (f (th + tb N) + (1-f) K∞ tb N) [× EK × F]
16 14 tb = 5 ns te = 66,6 ns 12 10 azelerazio-faktorea 8 6 tb = 10 ns te= 33,3 ns 4 2 0 0 0.2 0.4 0.6 0.8 1 f Kalkulu-abiadura Amdahl-en legearen eragina CRAY X-MP tb = 10 ns te = 66,6ns → K∞ = 6,6
1. Bektore-konputagailuak - Sarrera - Datu-dependentziak - Egiturazko dependentziak - Kalkulu-abiadura - Bektore-kodea - datu-dependentziak - bektorizazioa - optimizazioak
Datu-dependentziak • Begizta bat bektorialki exekutatu ahal izateko, aginduen jatorrizko ordena aldatu behar da. eskalarki: L0 +0 S0 / L1 +1 S1 / ... / LN-1 +N-1 SN-1 bektorialki: L0L1 ... LN-1 / +0 +1 ... +N-1 / S0 S1 ... SN-1 Adi: ordena-aldaketak egin daitezke, baina aginduen arteko datu-dependentziak errespetatu egin behar dira, beti!
dependentzia RAW i: A = ... j: = A antidependentzia WAR i: = A ... j: A = irteera-dependentzia WAW i: A = ... j: A = ij ij i j Datu-dependentziak benetako dependentziak izen-dependentziak Gogoratu: dependentzia batek eragiketen arteko ordena-erlazio jakin bat ezartzen du.
Datu-dependentziak • Begiztekin lan egin behar denez, dependentziak edozein iteraziotako aginduen artean eman daitezke. • i1 eta i2 iterazioko aginduen arteko dependentzia bat badago, i2 – i1 distantziakoa dela esaten da. Dependentziak bi graforen bidez adierazi ohi dira: dependentzia-grafoa eta iterazio-espazioa izenekoak.