Abiadura Handiko Konputazioa

Slides:



Advertisements
Presentaciones similares
HBSP/PREE Bidelaguna ZUZENDARIEN MINTEGIA APIRILAREN 14AN.
Advertisements

ZATIKIAK: SARRERA DBH 1. Esanahia eta adierazpena Zenbakitzailea: Zenbat zati hartu ditugun adierazten du. Izendatzailea: Osoa zenbat zatitan banatu dugun.
ARKITEKTURA PARALELOAK 05-06
ATOMOAREN EGITURA TXINGUDI BHI.
ATOMOAREN EGITURA.
ZENBAKI OSOAK, ZENBAKI ARRUNTAK, MULTIPLOAK ETA ZATITZAILEAK
DISOLUZIOAK.
Datuen azterketarako oinarrizko funtzioak
HIGIDURA.
Nola eman behar genuke euskaraz lentes progresivas / verres progressifs, erabileremu teknikoan, optikan esaterako? EHULKUren aholkua (Leiar progresiboak)
CERN: PARTIKULEN FISIKA IKERTZEKO ZENTROA
CPR-Ejea de los Caballeros, noviembre de 2009
Lehen ordenako ekuazio diferentzialak
Nondik dator Eguzkiaren Energia?
1.GAIA IZAKI BIZIDUNAK NOLAKOAK DIREN
Paula, Maider eta Maialen
EGUZKI ENERGIA FOTOVOLTAIKA
ZUZENBIDE ZIBILA:SARRERA
III. PROBABILITATEA PROBABILITATEAREN DEFINIZIOAK
HIGIDURA ZUZEN UNIFORMEA (HZU)
ADIERAZPEN ALGEBRAIKOAK
(Hartuko dugu kafe bat?)
10:00etatik 12:00etara eta 14:00etatik 17:30era.
Zazpi enpresaren diru-kontuak aztertu dituzte.
DESKRIPZIOA.
Patinak.
8. Begizten Paralelizazioa eta Atazen Banaketa
Ebazteko kasu bat.
Integrazio-metodoak koadraturen bidez:
Abiadura handiko konputagailuak (top500 zerrenda).
IZEN SINTAGMA 2019/01/17.
Beritzegune Nagusia / Arloak
Geometria-elementuak
UHIN ELEKTROMAGNETIKOAK
16. Bitez R-ren gaineko 4 dimentsioko V bektore espazioa eta O bere
Egilea: Gorka Arrien Arruti Taldea: BATX 2-D
Gaztelaniazko diferente izenondoa ez da beti desberdintasuna adierazteko erabiltzen (eta distinto, diverso sinonimoak ere ez). EHULKUren aholkua (Desberdin.
oinarria den ala ez. Izatekotan kalkulatu berarekiko (-5, -4, 6)
animalia hiltzailea / animalia-hiltzailea
TERMODINAMIKA I: KONTZEPTU OROKORRAK LEHEN PRINTZIPIOA
Euskara zerbitzuak errebisatutako testua da
Higidura, Ibilbidea eta Desplazamendua
David Beckhamek € kobratuko du eguneko.
Hezkuntza Premia Berezia - H.P.B.
PARTIKULAREN ZINEMATIKA
balioetsi, balioztatu…
Komunikazioaren elementuak
ENERGIA NUKLEARRA EGILEA: MARKEL URANGA.
BERREKETAK, ERROAK, ZATIKIAK ETA HAMARTARRAK
Arauaren egituraz eta izendapenaz
2. Konputagailu Paraleloak
Edukiera-unitateak.
4. Prozesuen Sinkronizazioa SMP Konputagailuetan
Ahoko zitostatikoak: zer jakin beharko genuke
ZELULA AMAK.
2004 EKAINA G-3 EREMU MAGNETIKOA
Zein desberdintasun dago psikiatriaren eta psikologiaren artean?
{sin(klx), cos(klx)} oinarria: Fourier-en serieak
Egileak: Julen, Borja eta
GALAXIAK.
URAK KUTSATUTA DAUDE!!! Garbi ibili eta ez bota zikinik!
7. Datuen Koherentzia DSM Konputagailuetan
Abantailak Worpressek dituen abantailak asko dira. Guk zenbait aukeratu ditugu zuekin partekatzeko. Lehenik eta behin, wordpressek oso kudeaketa erreza.
FILOSOFIAren HISTORIA
Energia Nuklearra ITSASO MENDIKUTE.
Gorren taldeko kideak: Maritxu, Ainhoa eta Marisol
23. Bedi f : R > R3 endomorfismoa, non
INTEGRAL MUGAGABEAK.
Bolumena ala edukiera?.
Zer da epaiketako bitartekotza?
Transcripción de la presentación:

Abiadura Handiko Konputazioa Arkitektura Paraleloak IF - EHU ARKITEKTURA PARALELOAK Abiadura Handiko Konputazioa Agustin Arruabarrena agustin.arruabarrena@ehu.es www.sc.ehu.es/arpar Konputagailuen Arkitektura eta Teknologia saila Informatika Fakultatea – Euskal Herriko Unibertsitatea

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. Begizten paralelizazioa eta atazen banaketa. 9. Abiadura handiko konputagailu paraleloak. Programazio paraleloa: OpenMP eta MPI (sarrera).

0. 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  list scheduling loop unrolling software pipelining trace scheduling EPIC …  OpenMP MPI UPC OpenCL / Cuda ...

 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

 Flynn-en sailkapena SISD SIMD MIMD Datu-jarioak 1 asko 1 Agindu- array processors bektore-konputagailuak MIMD memoria partekatua memoria pribatua

1. Bektore-konputagailuak - Sarrera - Datu-dependentziak - Egiturazko dependentziak - Kalkulu-abiadura - Bektore-kodea

Sarrera TE ≈ 7N ziklo 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 Kode eskalar arrunta TE ≈ 7N ziklo

Sarrera Bektoreak: - hasiera-helbidea - luzera - pausoa (stride) do i = 0, N-1 C(i) = A(i) + B(i) enddo LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 Bektore-kodea 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 ... ... ... ... BD Ir AM M M M Id Id ... ... Id

Sarrera th N TB ≈ th + N ziklo TE ≈ 7 N ziklo N = 128, th = 14 LV V1,A(R1) LV V2,B(R1) ADDV V3,V1,V2 SV C(R1),V3 BD Ir AM M M M Id ... ... Id BD Ir AM M M M Id ... ... Id BD . . . . Ir A A Id ... ... Id BD Ir AM . . . . Ir M M M Id ... ... Id th N TB ≈ th + N ziklo TE ≈ 7 N ziklo N = 128, th = 14 TE = 896 ziklo TB = 142 ziklo

Sarrera  Arazoak Memoria: segmentatuta / bus kop. / moduluak LV V1,A(R1) LV V2,B(R1) ADDV V3,V1,V2 SV C(R1),V3 BD Ir AM M M M Id ... ... Id BD Ir AM M M M Id ... ... Id BD . . . . Ir A A Id ... ... Id BD Ir AM . . . . Ir M M M Id ... ... 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? do i = 0, N-1 A(i) = A(i) + 1 enddo Jatorrizko kodea desordenatu egin behar da! 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

Bektore-prozesadoreko kontrola Sarrera  Bektore-arkitekturaren eskema logikoa (tomasulo) Erregistroak Unitate funtzion. Prozesadore eskalarra (osoa) Memoria Bektore-prozesadoreko kontrola Helbide- unitatea (datuak) (erag.) Erregistroak

Sarrera  Makina-lengoaia VL → bektoreen luzera VS → bektoreen pausoa 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)

 Bektore-agindu batek aurreko agindu baten emaitza behar du. Datu-dependentziak  Bektore-agindu batek aurreko agindu baten emaitza behar du. do i = 0, N-1 A(i) = A(i) + 1 enddo LV V1,A(R1) ADDVI V2,V1,#1 SV A(R1),V2 - itxaron bektore osoa erregistroan kargatu arte, eta gero irakurri. - egin Id → Ir zirkuitulaburra, eta irakurri bektore-osagaiak ahal bezain laster: KATEAKETA (chaining)

Datu-dependentziak  Kateaketa egin gabe LV TB = 13 + 3N ADDVI SV 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 BD Ir AM . . ... . . . . . ... . Ir M M M Id ... TB = 13 + 3N LV N ADDVI N SV N

Datu-dependentziak  Kateaketa eginez LV TB = 13 + N ADDVI SV 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 BD Ir AM . . . . Ir M M M Id ... ... LV TB = 13 + N ADDVI SV N

 Kateaketa bi agindurekin: C = A + B 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 Ir AM M M M Id ... ... ... ... Id BD . . . . Ir A A Id ... ... ... Id BD Ir AM . . . . Ir M M M Id ... ... Oro har, eragigai bat unitate funtzional batetik eta bestea erregistro-multzotik (idazten ari da, edo idatzita dago).

 Exekuzio-taulak (A = A + 1) Datu-dependentziak  Exekuzio-taulak (A = A + 1) kateaketa ez Ex.has. UF lat. 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 kateaketa bai Ex.has. UF lat. 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

 Exekuzio-taulak (C = A + B) Datu-dependentziak  Exekuzio-taulak (C = A + B) Ex.has. UF lat. 1. dat N. dat LV V1,A(R1) LV V2,B(R1) ADDV V3,V1,V2 SV C(R1),V3 kateaketa ez 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 kateaketa bai Ex.has. UF lat. 1. dat N. dat LV V1,A(R1) LV V2,B(R1) ADDV V3,V1,V2 SV C(R1),V3 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  Baliabideak libre 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.

Egiturazko dependentziak  Memoriako busak Zenbat bus daude memoriarekin lan egiteko? bus bakar bat 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 BD Ir AM . . . . ? ... Ir M M M Id ... LV ADDVI SV busa okupatuta TB ≈ 2 N

Egiturazko dependentziak  Memoria-bus bakarra (A = A + 1) kateaketa bai Ex.has. UF lat. 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

Egiturazko dependentziak  Memoria-bus bakarra (C = A + B) Ex.has. UF lat. 1. dat N. dat LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 3 6+1 6+N 6+N 3 9+N+1 9+2N kateaketa bai [10+N] 2 12+N+1 12+2N [9+2N] 3 12+2N+1 12+3N TB ≈ 3 N LV ADDV SV

Egiturazko dependentziak  Bi memoria-bus (C = A + B) kateaketa bai Ex.has. UF lat. 1. dat N. dat LV V1,A(R1) LV V2,B(R1) ADDV V3,V2,V1 SV C(R1),V3 3 6+1 6+N [8] 2 10+1 10+N [6+N] 9+N+1 9+2N 4 7+1 7+N TB ≈ 2 N LV ADDV SV

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

Egiturazko dependentziak  Padding 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 - m0 m1 m2 m3 Errenkadak: s = 1 arazorik ez s = 1 arazorik ez Zutabeak: s = 4 arazo asko s = 5 arazorik ez Diagonal n.: s = 5 arazorik ez s = 6 arazoak Diagonal tx.: s = 3 arazorik ez s = 4 arazoak

Egiturazko dependentziak  Memoria-eragiketa bat baino gehiago Ex.has. UF lat. 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 9 10 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. UF lat. 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] 5, 6 - 7 - 0, 1 4 3 17+1 17+N

TB = N/Lmax (th + tbeg) + tb N 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)

 Hiru parametro erabili ohi dira “abiadura” adierazteko: 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.

 Exekuzio-denbora (N-ren arabera) Kalkulu-abiadura  Exekuzio-denbora (N-ren arabera) 50 100 150 200 250 300 25 75 125 N TB = 30 + 2N TB esk.: TE = te N bekt.: TB = th + tb N th malda = tb ADI: zikloak! segundotan emateko, erloju-periodoaz (T) biderkatu behar da.

 Kalkulu-abiadura (N-ren arabera) RB = N / TB = N / (th + tbN) [ ] × EragKop × F MF/s N R∞ RB R∞/2 N1/2 R∞ = [1 / tb] × EK × F N1/2 → R∞ / 2 N1/2 = th / tb

 Azelerazio-faktorea (speed-up) 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)

 Kode eskalarraren eragina: Amdahl-en legea. 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))

Kalkulu-abiadura  Amdahl-en legea KBE = KB / (KB – f (KB–1)) 2 4 6 8 10 12 14 16 0.2 0.4 0.6 0.8 1 azelerazio-faktorea (speed-up) f (bektorizazio-faktorea) (KB = 2, 4, 8, 16) KB = ∞

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]

 Amdahl-en legearen eragina Kalkulu-abiadura  Amdahl-en legearen eragina 2 4 6 8 10 12 14 16 0.2 0.4 0.6 0.8 1 azelerazio-faktorea f tb = 5 ns te = 66,6 ns tb = 10 ns te = 33,3 ns 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: L0 L1 ... 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!

Datu-dependentziak 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 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.

 Dimentsio bakarreko begiztak Datu-dependentziak  Dimentsio bakarreko begiztak do i = 2, N-2 1: A(i) = B(i) + 2 2: C(i) = A(i-2) + A(i+1) enddo Dependentzia-grafoa 1 2 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) A,2 A,1 i Iterazio-espazioa

 Bi dimentsioko begiztak Datu-dependentziak  Bi dimentsioko begiztak 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 i j A(0,1) 1 2 A,(2,-1)

Datu-dependentziak  Beste adibide bat do i = 2, N-31 enddo 1 2 3 4 5 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 C,0 C,1 D,29 B,1

 Ikus dezagun nola sortu bektore-kodea zenbait adibideren bidez. Bektorizazioa  Ikus dezagun nola sortu bektore-kodea zenbait adibideren bidez. 1. adibidea do i = 0, N-1 A(i) = B(i) + C(i) enddo MOVI VL,#N MOVI VS,#1 LV V1,B(R1) LV V2,C(R1) ADDV V3,V1,V2 SV A(R1),V3

Bektorizazioa 2. adibidea MOVI VL,#N do i = 0, N-1 MOVI VS,#1 enddo 1: A(i) = B(i) + C(i) 2: D(i) = A(i) enddo MOVI VL,#N MOVI VS,#1 (1) LV V1,B(R1) LV V2,C(R1) ADDV V3,V1,V2 SV A(R1),V3 (2) SV D(R1),V3 1 2 i A,0

Bektorizazioa 3. adibidea MOVI VL,#N-1 do i = 1, N-1 MOVI VS,#1 enddo 1: A(i) = B(i) + C(i) 2: D(i) = A(i-1) enddo MOVI VL,#N-1 MOVI VS,#1 (1) LV V1,B+1(R1) LV V2,C+1(R1) ADDV V3,V1,V2 SV A+1(R1),V3 (2) LV V4,A(R1) SV D+1(R1),V4 1 2 i A,1

Bektorizazioa 4. adibidea MOVI VL,#N-1 do i = 0, N-2 MOVI VS,#1 enddo 1: A(i) = B(i) + C(i) 2: D(i) = A(i+1) enddo MOVI VL,#N-1 MOVI VS,#1 (2) LV V1,A+1(R1) SV D(R1),V1 (1) LV V2,B(R1) LV V3,C(R1) ADDV V4,V2,V3 SV A(R1),V4 1 2 i A,1

Bektorizazioa 5. adibidea do i = 1, N-1 do i = 3, N-1 1: A(i) = B(i-1) + 1 2: B(i) = A(i) enddo do i = 3, N-1 A(i) = A(i-3) * 3 enddo 1 2 1 A,3 B,1 A,0

Bektorizazioa 6. adibidea: bi dimentsioko bektoreak (errenk.) s=1 A do i = 0, N-1 do j = 0, M-1 A(i,j) = B(i,j) + C(i,j) enddo MOVI R2,#N MOVI VL,#M MOVI VS,#1 beg: LV V1,B(R1) LV V2,C(R1) ADDV V3,V1,V2 SV A(R1),V3 ADDI R1,R1,#M SUBI R2,R2,#1 BNZ R2,beg A s=1 0,0 0,1 ... 0,M-1 1,0 1,1 ... 1,M-1 ... ... ... ... N-1,0 N-1,1 ... N-1,M-1 A+M

Bektorizazioa 6. adibidea: bi dimentsioko bektoreak (zutab.) A A+1 s=M do i = 0, N-1 do j = 0, M-1 A(i,j) = B(i,j) + C(i,j) enddo MOVI R2,#M MOVI VL,#N MOVI VS,#M beg: LV V1,B(R1) LV V2,C(R1) ADDV V3,V1,V2 SV A(R1),V3 ADDI R1,R1,#1 SUBI R2,R2,#1 BNZ R2,beg A s=M A+1 0,0 0,1 ... 0,M-1 1,0 1,1 ... 1,M-1 ... ... ... ... N-1,0 N-1,1 ... N-1,M-1

 Begizta bat bektorizatu ahal izateko baldintza: Bektorizazioa  Begizta bat bektorizatu ahal izateko baldintza: Dependentziek ez dute ziklorik osatzen dependentzia-grafoan.  Oro har, begizta baten agindu batzuk bektore gisa exekuta ahal izango ditugu, baina agian beste batzuk ez (“fisioa”):

Bektorizazioa do i = 1, N-1 MOVI VL,#N-1 MOVI VS,#1 enddo 1: A(i) = B(i) 2: B(i) = B(i-1) enddo MOVI VL,#N-1 MOVI VS,#1 (1) LV V1,B+1(R1) SV A+1(R1),V1 (2) MOVI R3,#N-1 beg: FLD F1,B(R2) FST B+1(R2),F1 ADDI R2,R2,#1 SUBI R3,R3,#1 BNZ R3,beg 1 2 B,0 B,1

 Automatikoki, begiztaren indizearen funtzio linealak soilik. Dependentzia-proba  Nork analizatu behar ditu dependentziak? Programatzaileak edo konpiladoreak?  Automatikoki, 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.

Dependentzia-proba i L1 L2 i L1 L2 i L1 L2

Dependentzia-proba wr: A0 ... A95 rd: A100 ... A290 do i = 1, 100 A(2*i) = ... ... = A(2*i+1) enddo (1 – 0) / ZKH(2, 2) = 1/2 → ez do i = 5, 100 A(i-5) = ... ... = A(2*i+90) enddo (90 – (-5)) / ZKH(2, 1) = 95 → bai? wr: A0 ... A95 rd: A100 ... A290

Dependentzia-proba wr: A103 ... A400 rd: A1 ... A199 wr: A9 ... A603 do i = 1, 100 A(3*i+100) = ... ... = A(2*i-1) enddo (100 – (-1)) / ZKH(2, 3) = 101 → bai? wr: A103 ... A400 rd: A1 ... A199 i=1, wr A103 i=52, rd A103 do i = 1, 100 A(6*i+3) = ... ... = A(3*i+81) enddo (81 – 3) / ZKH(6, 3) = 26 → bai? wr: A9 ... A603 rd: A84 ... A381 i=1, rd A84 i=14, wr A84 i=26, rd A159 i=26, wr A159 i=27, wr A165 i=28, rd A165

Dependentzia-proba  Adi: memoria-atzipenen pausoa bi tokitan adieraz daiteke: begiztaren mugen definizioan, edo aginduetan bertan. ZKH proba erabili baino lehen, begiztak “normalizatu” behar dira (begiztaren pausoa, 1). do i = 1, 100, 2 A(i) = ... B(2*i+5) = ... enddo do k = 1, 50 A(2*k-1) = ... B(4*k+3) = ... enddo

Bektorizazioa  Labur Begiztak bektore moduan exekuta daitezkeen jakiteko, aginduen arteko dependentziak analizatu behar dira. Bektore-konpiladoreak analizatuko ditu dependentziak, atzipenen pausoa konstantea den kasuetan. Dependentzia dagoen jakiteko, ZKH proba erabil daiteke. Aginduak bektoriza daitezke, baldin eta dependentzia-ziklo batean sartuta ez badaude.

Optimizazioak  Dependentzien analisi automatikoa ez da sinplea. Konpiladorea dependentzia dagoen ala ez erabakitzeko gauza ez bada, badaezpada ere, dependentzia dagoela erabakiko du.  Bestalde, oso garrantzitsua da bektorizazio-frakzio handiak eskuratzea (Amdahl!). Beraz, hainbat eraldaketa edo optimizazio erabiltzen dira bektorizatze-prozesua errazteko. Hona hemen optimizazio nagusiak:

1 Aurreranzko ordezkapen globala Optimizazioak 1 Aurreranzko ordezkapen globala Dependentzien analisia errazteko, egindako definizio guztiak ordezkatu egin behar dira. NP1 = L+1 NP2 = L+2 ... do i = 1, L B(i) = A(NP1) + C(i) A(i) = A(i) – 1 do j = 1, L D(j,NP1) = D(j-1,NP2)*C(j) +1 enddo L+1 L+2

Optimizazioak 2 Indukzio-aldagaiak Begiztaren barruan progresio aritmetikoan aldatzen diren aldagaiak ordezkatu behar dira. j = 2 k = 2 do i = 1, L j = j + 5 R(k) = R(j) + 1 k = k + 3 enddo i = 1 2 3 4 5 ... j = 7 12 17 22 27 ... k = 2 5 8 11 14 ... j = 5*i + 2 k = 3*i - 1 do i = 1, L R(3*i-1) = R(5*i+2) + 1 enddo

Optimizazioak 3 Antidependentziak do i = 0, N-2 enddo do i = 0, N-2 1: A(i) = B(i) + C(i) 2: D(i) = A(i) + A(i+1) enddo do i = 0, N-2 0: [T(i)] = A(i+1) 1: A(i) = B(i) + C(i) 2: D(i) = A(i) + [T(i)] enddo 1 2 1 2 A,0 A,1 T,0 A,1 A,0

Optimizazioak 3 Antidependentziak do i = 0, N-2 MOVI VL,#N-1 1: A(i) = B(i) + C(i) 2: D(i) = A(i) + A(i+1) enddo MOVI VL,#N-1 MOVI VS,#1 (2/0) LV V1,A+1(R1) (1) LV V2,B(R1) LV V3,C(R1) ADDV V4,V3,V2 SV A(R1),V4 (2) ADDV V5,V1,V4 SV D(R1),V5 1 2 A,0 A,1

4 Irteera-dependentziak Optimizazioak 4 Irteera-dependentziak do i = 0, N-3 1: A(i) = B(i) + C(i) 2: A(i+2) = A(i) * D(i) enddo do i = 0, N-3 1: [T(i)] = B(i) + C(i) 2: A(i+2) = [T(i)] * D(i) 3: A(i) = [T(i)] enddo 2 3 1 1 2 A,0 A,2 T,0 T,0 A,2

4 Irteera-dependentziak Optimizazioak 4 Irteera-dependentziak do i = 0, N-3 1: A(i) = B(i) + C(i) 2: A(i+2) = A(i) * D(i) enddo MOVI VL,#N-2 MOVI VS,#1 (1) LV V1,B(R1) LV V2,C(R1) ADDV V3,V2,V1 (2) LV V4,D(R1) MULV V5,V3,V4 SV A+2(R1),V5 (1/3) SV A(R1),V3 1 2 A,0 A,2

Optimizazioak 5 Begizta-trukea ez bai zutabe bat do i = 0, N-1 do j = 1, N-1 A(i,j) = A(i,j-1) + 1 enddo i j ez do j = 1, N-1 do i = 0, N-1 A(i,j) = A(i,j-1) + 1 enddo zutabe bat bai

Optimizazioak 5 Begizta-trukea do i = 1, N-1 do j = 1, N-2 enddo j i 1 1: A(i,j) = B(i-1,j+1) + 1 2: B(i,j) = A(i,j-1) enddo i j 1 2 B,(1,-1) A,(0,1)

Optimizazioak 5 Begizta-trukea Begiztak trukatu daitezke, baldin eta dependentzien distantzia-bektore berrietan 0 ez den pisu handieneko lehen osagaia positiboa bada. Adibidez, (0, 1) → (1, 0) ondo da (1, -1) → (-1, 1) ezin da

1 → errenkadaka; eta gero, 2 → zutabeka Optimizazioak 5 Begizta-trukea Zenbait kasutan, trukea eta fisioa batera erabili behar dira: i j 2 B,(0,1) 1 A,(1,0) do i = 1, N-1 do j = 1, N-1 1: A(i,j) = A(i-1,j) + 1 2: B(i,j) = B(i,j-1) * 2 enddo 1 → errenkadaka; eta gero, 2 → zutabeka

Optimizazioak 5 Begizta-trukea Beste kasu batzuetan, eraginkortasuna dela eta merezi du begiztak trukatzea. A0,0 ... A0,9 ... ... A99,0 .. A99,9 do i = 0, 99 do j = 0, 9 A(i,j) = A(i,j) + 1 enddo Ahalik eta bektorerik luzeenak prozesatu (erregistroen tamaina kontuan hartuz).

Optimizazioak 6 Hedapen eskalarra Begiztan aldagai eskalar laguntzaileak erabiltzen direnean, bektorizazioa galaratzen duten hainbat dependentzia sortzen dira. do i = 0, N-1 batura = A(i) + B(i) C(i) = batura * batura D(i) = batura * 2 enddo (i) Adi, bukaeran: batura = batura(N-1)

Optimizazioak 7 Begizten fusioa Aukera badago, egokia da bi begizta bat bihurtzea (hasiera-denborak, gainkargak... aurrezteko). do i = 0, N-1 A(i) = B(i) + C(i) enddo D(i) = E(i) * 5 do i = 0, N-1 A(i) = B(i) + C(i) D(i) = E(i) * 5 enddo Adi, esanahiari (dependentziei!) eutsi behar zaio.

Optimizazioak 7 Begizten fusioa ??? Ez da gauza bera! do i = 0, N-2 A(i) = B(i) + C(i) enddo D(i) = A(i+1) + 1 do i = 0, N-2 A(i) = B(i) + C(i) D(i) = A(i+1) + 1 enddo ??? Ez da gauza bera!

Optimizazioak 8 Begizten kolapsoa Bi dimentsioko begizta dimentsio bakarreko begizta bihurtzea, bektore luzeagoak prozesatzeko. float A(10,10) do i = 0, 9 do j = 0, 9 A(i,j) = A(i,j) * 2.0 enddo float A(100) do i = 0, 99 A(i) = A(i) * 2.0 enddo

Optimizazioak  Begiztaren exekuzioa bukatu ondoren, aldagai laguntzaileen azken balioak (begizta eskalarki exekutatzean hartuko lituzketenak) sortu behar dira: begizta-indizeak indukzio-aldagaiak eskalarrak ...

 Ohiko irtenbidea: maskarak (VM, vector mask). Maskara-erregistroa  Ohikoa da, kalkulua egiten denean, bektore baten osagai bakar batzuk baino ez prozesatu behar izatea: do i = 0, N-1 if (B(i) > 5.0) A(i) = A(i) + 1.5 enddo  Ohiko irtenbidea: maskarak (VM, vector mask). VM erregistroan: 1 – osagai hori prozesatu behar da 0 – osagai hori “maskaratu” behar da

Maskara-erregistroa  Lehenik, maskara sortzen da, eskuarki konparazio-eragiketa baten bidez; gero, bektore-eragiketa egiten da, maskara-erregistroa haintzat hartuz. MOVI VL,#N MOVI VS,#1 MOVI F1,#5.0 LV V1,B(R1) SGTVS V1,F1 LV V2,A(R1) ADDVI V3,V2,#1.5 SV A(R1),V3 CVM - VM kargatzeko (konparazioa) SxxV V1,V2 (ad. set equal) SxxVS V1,F1 - VM hasieratzeko (denak 1) CVM - VM-ren 1ekoak kontatzeko POP R1,VM

 Pauso konstanteko (VS) bektoreak bakarrik prozesatu ditugu. Indize-bektoreak  Pauso konstanteko (VS) bektoreak bakarrik prozesatu ditugu. LV V1,A(R1) VL osagai, VS distantziara, A+R1 helbidetik aurrera  Hainbat kasutan, ordea, pauso aldakorreko bektoreak prozesatu behar dira. s=3 5 14 4 1 8 Nola?

Indize-bektoreak  Pauso aldakorreko bektoreak prozesatzeko, indize-bektoreak erabili ohi dira (eta helbideratze-modu indizeduna): LVI V1,A(V2) V2 indize-erregistroa da, eta prozesatu behar diren osagaien posizioak adierazten ditu. SVI V1,A(V2) CVI V1,R1 0, R1, 2R1... indize-bektorea sortu.

Indize-bektoreak do i = 0, M A(i*i) = B(i*i) + 1 enddo MOVI VL,#M+1 MOVI R1,#1 CVI V4,R1 MULV V5,V4,V4 LVI V1,B(V5) ADDVI V2,V1,#1 SVI A(V5),V2  Oro har, atzipen indizedunen exekuzio-denbora atzipen arrunten (pauso konstanteen) bidez egindakoena baino handiagoa ohi da (ez da zikloko osagai bat lortzen).

 Helbideratze indizeduna “maskara gisa” Indize-bektoreak  Helbideratze indizeduna “maskara gisa” MOVI VL,#N MOVI VS,#1 MOVI F1,#5.0 LV V1,B(R1) SGTVS V1,F1 MOVI R2,#1 CVI V2,R2 POP R1,VM MOV VL,R1 CVM LVI V3,A(V2) ADDVI V4,V3,#1.5 SVI A(V2),V4 do i = 0, N-1 if (B(i) > 5.0) A(i) = A(i) + 1.5 enddo VM = 1 0 0 1 1 1 0 1 V2 = 0 3 4 5 7 R1 = 5

Laburpena  Bektore-prozesadoreak bektoreak prozesatzeko arkitektura berezi eta oso eraginkorrak dira. Ezaugarri hauek dituzte: ▪ Makina-lengoaia berezia, bektoreak agindu bakar batez prozesatu ahal izateko. ▪ Memoria irakurtzeko/idazteko banda-zabalera handia. ▪ Unitate funtzional segmentatu asko. ▪ Aginduen exekuzioa kateatu egiten da. ▪ Bektore-kodea sortzeko konpiladore onak.

Laburpena  Duela gutxi arte, superkonputagailuak bektore-konputagailuak ziren. Gaur, ordea, MIMD motako konputagailu paraleloak dira azkarrenak. Salbuespenak badaude; adib., Earth Simulator konp.  Bektore-prozesadoreak MIMD sistema paraleloen nodo bereziak izan daitezke, bektoreak prozesatzen espezializatuta.  Bestalde, oraingo prozesadore guztiek badituzte “bektore-eragiketak” agindu-multzoan. Adibidez (PA-RISC): FMAC, multiply-accumulate.

please, don’t forget exercices! Arkitektura Paraleloak IF - EHU BK | Laburpena  Duela gutxi arte, superkonputagailuak bektore-konputagailuak ziren. Gaur, ordea, MIMD motako konputagailu paraleloak dira azkarrenak. Salbuespenak badaude; adib., Earth Simulator konp.  Bektore-prozesadoreak MIMD sistema paraleloen nodo bereziak izan daitezke, bektoreak prozesatzen espezializatuta.  Bestalde, oraingo prozesadore guztiek badituzte “bektore-eragiketak” agindu-multzoan. Adibidez (PA-RISC): FMAC, multiply-accumulate. please, don’t forget exercices!