Daaberendeeser Föreläsning 12: Berendeanalys för aumaisk vekrisering ch parallellisering av seriella prgram Idé: Klla för vilka värden på index vå saser refererar samma elemen i array fr i = 1, N A(5*I + 2) =...... = A(2*I + 3) End Fr För vilka värden x respekive y på indexvariabeln i är 5x + 2 = 2y + 3, inm de akuella mråde L x,y U dvs 1 x,y N Exaka eser: Talar m a de finns/ine finns lösning i de akuella mråde Inexaka eser: Talar m a de finns e berende men ine m de gäller de akuella mråde Difanisk Analys Hia helalslösning ill berendeekvain GCD greaes cmmn divisr a, b helal, b delar a mm de exiserar helal x sådan a a = bx GCD(i 1, i 2,.., i n ) = sörsa helal sm delar i 1, i 2,.., i n Exempel GCD(14, 21, 42) = 7 Linjär Difanisk ekvain Σa i x i = c där i = 1,.., n, n 1, c, a i för alla i lösning exiserar då GCD(a) C Exempel: Har följande difaniska ekv en helalslösning? 16x+ 3 = 2y+21 a = (16, -2), C = 21-3 = 18 16x - 2y = 18 GCD(16, -2) = 2 18 Ja, de exiserar en helalslösning GCD ese (Inexak) Sruna i inervall alar m a de finns lösning men ej m de är i de inressana inervalle alar m a de ej finns lösning för resrikiv d i = 1, N d j = 1, N A(2i + 2j) =... = A(4i -6j + 3) d d d i = 1, N A(2*I)=...... = A(3*I + 198) d berendeekvain 2x + 2y - 4z + 6w = 3 GCD(2, 2, 4, 6) = 2 delar ej 3 Exiserar ej berende berendeekvain 2x - 3y = 198 GCD(2, 3) = 1 delar 198 Exiserar berende 1
Exak es Uökad Euklides algrim Lös difanisk ekvain Om lösning exiserar i inervalle exiserar berende annars ej Fungerar bra då anale bekana är vå, för dyr i övriga fall Anag a vi vill hia ax+by=gcd(a,b). Då är (x,y) = s n x + n y, där s n ch n definieras rekursiv sm: kd d I = 1, 101 A(2*I)=...... = A(3*I + 198) d Lösning ill difanisk ekv. x = 3 + 396 y = 2 + 198 1 x,y 101 1 3 + 396 101-131 -99 1 2 + 198 101-98 -49 Difanisk ekv. 2x - 3y = 198-98 <= <= -99 s j = s j-2 - q j-1 s j-1 fr j=2,,n s 0 = 1 s 1 = 0 j = j-2 - q j-1 j-1 fr j=2,,n 0 = 0 1 = 1 Där q j ch r i kmmer från Euklides algrim. Uökad Euklides algrim Difaniska ekvainer Exempel: a=252, b=198 Genm a räkna u s ch samidig sm q ch r, finner vi a 4 252-5 198=18 j q j r j s j j 0 252 1 0 1 1 198 0 1 2 3 54 1-0 1=1 0-1 1=-1 3 1 36 0-1 3=-3 1-(-1) 3=4 4 2 18 1-(-3) 1=4-1-4 1=-5 Vi har nu hia parikulärlösningen x=x 0, y=y 0. Alla lösningar har frmen: x=x 0 +bn/d, y=y 0 -an/d 5 0 2
Kdgenerering Sandardransfrmainer Frward Daaberendegrafer kan vekriseras mm alla dess berenden är framå (frward) S: A(I) =.. S : C(I) = A(I) I Backward S: C(I) = A(I-2) S : A(I) =.. I Lå S ch S vara saser i en lp. E berende S δ S sägs vara backward mm S bef S annars frward. Varje backward dependence är lpbure. A lp can be vecrized by a sequence f valid saemen rerdering ransfrmains iff is dependence graph is eiher acyclic r cnains nly elemenary lps Primära uppgif a nrmalisera prgram för a möjliggöra vidare analys, ransfrmering, // & vekrisering Exempel på ransfrmainer d-lp-nrmalisering Subskrip-nrmalisering Framåsubsiuin av skalärer Subsiuin av indukinsvariabler Wrap Arund -variabelsubsiuin Sandardisering av subskrip-uryck By namn på skalärer Opimeringsransfrmainer D-lp nrmalizain Transfrmainer för lika ändamål Vekrisering, parallellisering, minska minnesrafik, ec. Två lika klasser av ransfrmainer Eliminera berenden på e semanisk krrek sä Saemen rerdering, lp inerchange, scalar expansin, variable cpying Hia idim Prgrammönser sm ex. summering, dprduker, ec nrmalisera så a lp sarar på 1 ch har sride 1 L: d I = 1000, 1, -1 A(I) =... nrmalisera Lnrm: d $I = 1, ((1-1000+(-1)/(-1) A(1000 + ($I-1)*(-1)=... I = 1000 + MAX((1-1000+(-1))/(-1)),0)*(-1) förenkla Lnrm : d $I = 1, 1000 A(1001 -$I) =... I = 0 3
Inducin variable subsiuin Scalar renaming Byer indukinsvariabel m linjär uryck i lpvar möjliggör berendeanalys ch ransfrmainer K = 1 K = K - 2 A(K) = Inducin variable subsiuin K = 1 K = K - 2 A(1-2*I) = kan vara död kd Ger en variabel e ny namn i varje regin Delvis knverering ill single assignmen Eliminerar vissa berenden REAL X, Y, A S1: A = COS(Y)... S2: X = A S3: Y = -1.23*A... S4: A = REAL X, Y, A, $A S1: $A = COS(Y)... S2: X = $A S3: Y = -1.23*$A... S4: A = Villkr för valid saemen rerdering Lp inerchange Saemen rerdering av saser S ch S inm en lp L är valid mm de ine finns någ lp-berende berende från S ill S S: A(I) =... S :...= A(I-1) I S: A(I) =... S :...= A(I) I lp-dependen rue -> rue lp-independen rue -> ani S :...= A(I-1) S: A(I) =... I S :...= A(I) S: A(I) =... I bya plas på vå lpars nivåer i e näse ex: cyklisk berende på nivå 2 efersm de saknas berende på nivå 1 kan lparna bya plas Denna lp saknar berende på level 2 -> kan vekriseras D I = 1, N D J = 1, N S: A(I,J+1) = A(I,J)*B(I,J) End D J End D I D J = 1, N D I = 1, N S: A(I,J+1) = A(I,J)*B(I,J) End D I End D J D J = 1, N S: A(1:100,J+1) = A(1:100,J) *B(1:100,J) End D J 4
Ierain Space Graph Sä a använda lp inerchange d i = 1, 3 d j = 1, 3 A(i,j) = A(i-1, j +1) d d i-lp yers S 1,1 S 1,2 S 1,3 S 2,1 S 2,2 S 2,3 S 3,1 S 3,2 S 3,3 i-lp yers j-lp yers S 1,1 S 1,2 S 1,3 S 2,1 S 2,2 S 2,3 S 3,1 S 3,2 S 3,3 j-lp yers Placera längsa lpen på pimal sälle Vekrisering: Vill flya lpar med cykliska berenden uå ch lpar uan berenden inå D I = 1, 10000 D J = 1, 5 S: A(J,I) = B(J,I)*C(J-1,I+1) End D J End D I D J = 1, 5 D I = 1, 10000 S: A(J,I) = B(J,I)*C(J-1,I+1) End D I End D J d i = 1, 3 d j = 1, 3 A(i,j) = A(i-1, j -1) d d S 1,1 S 1,2 S 1,3 S 2,1 S 2,2 S 2,3 S 3,1 S 3,2 S 3,3 S 1,1 S 1,2 S 1,3 S 2,1 S 2,2 S 2,3 S 3,1 S 3,2 S 3,3 Parallellisering: Flya parallelliserbara lpar uå ch flya lpar med cykliska berenden inå Minnesaccess: Öka lkalie Scalar expansin Nde spliing För a reducera berenden så skapas en kpia av skalär variabel för varje ierain, (skalär expanderas ill array) D I = 1, 100 S1: A = B(I)*C(I) S2: D(I) = A + 1 S3: E(I) = A*(D(I)-2) End D I Efer expansin av A ill $A så försvinner cyklisk berende, vekrisering således möjlig D I = 1, 100 S1: $A(I) = B(I)*C(I) S2: D(I) = $A(I) + 1 S3: E(I) = $A(I)*(D(I)-2) End D I 1 a 1 a S1 S2 S3 S'1 S'2 S'3 inf 1 Splia saserna i mindre saser D I = 1, N S : B(I) = A(I) + C(I)*D(I) S : A(I+1) = B(I) * (D(I)-C(I)) End D I Inför T1 ch T2 ch splia D I = 1, N S1: T1(I) = C(I)*D(I) S2: T2(I) = D(I)-C(I) S3: B(I) = A(I) +T1(I) S4: A(I+1)= B(I)*T2(I) End D I Lpdisribuin & vekrisering T1(1:N) = C(1:N)*D(1:N) T2(1:N) = D(1:N)-C(1:N) D I = 1, N S3: B(I) = A(I) + T1(I) S4: A(I+1)= B(I)*T2(I) End D I 5
Lp disribuin E exempel på felakig lp disribuin Lpdisribuin mrganiserar insanser av saser så a varje sas exekveras för alla dess elemen i indexmängden innan någn annan sas sm följer exuell exekveras d J = 1, 100 d I = 1, 100 C(I,J) = 0.0 d K = 1, 100 C(I,J) = C(I,J) + A(I,K) * B(K,J) K I and J Lp disribuin d J = 1, 100 d I = 1, 100 C(I,J) = 0.0 I and J d J = 1, 100 d I = 1, 100 d K = 1, 100 C(I,J) = C(I,J) + A(I,K) * B(K,J) K I and J S: C(I) = A(I-2) S : A(I) =.. I Lp-disribuin försör lpbure berende S: C(I) = A(I-2) I S : A(I) =.. I När är vekrisering semanisk k? Berenden sm ej förhindrar vekrisering vekrisering OK m alla berenden bibehålls! d I = 1, 100 S: A(I) = 0 inga berenden allså OK! genererad vekrsas A(1:100) = 0 d I = 1, 100 S: A(I+1) = A(I) + B(I) S(1): A(2)= A(1) * B(1) S(2): A(3)= A(2) * B(2) vekrisering INTE OK y lpbure berende L: d I = 1, 100 S: D(I) = A(I-1) *D(I) S : A(I) = B(I) + C(I) Ändra exuell rdning på S ch S lp disribuin ill vå lpar L21: d I = 1, 100 S : A(I) = B(I) + C(I) A(1:100) = B(1:100) + C(1:100) D(1:100) = A(0:99) *D(1:100) L1: d I = 1, 100 S : A(I) = B(I) + C(I) S: D(I) = A(I-1) *D(I) L22: d I = 1, 100 S: D(I) = A(I-1) *D(I) vekrisera resula 6
Exempel på vekrisering Exempel på pariell vekrisering d 10 J = 2, N s1: A(J) = B(J) s2: C(J) = A(J) + B(J-1) s3: E(J) = C(J+1) s4: B(J) = A(J) + 2 d s1: A(2) = B(2) s2: C(2) = A(2) + B(1) s3: E(2) = C(3) s4: B(2) = A(2) + 2 s1: A(3) = B(3) s2: C(3) = A(3) + B(2) s3: E(3) = C(4) s4: B(3) = A(3) + 2 s1 s2 s3 s4 d 10 J = 2, N s1: A(J) = B(J) s2: C(J) = A(J) + B(J-1) s3: E(J) = C(J+1) s4: B(J) = C(J) + 2 d s1: A(2) = B(2) s2: C(2) = A(2) + B(1) s3: E(2) = C(3) s4: B(2) = C(2) + 2 s1: A(3) = B(3) s2: C(3) = A(3) + B(2) s3: E(3) = C(4) s4: B(3) = C(3) + 2 s1 s2 s3 s4 s1 / s3 s4 s2 s1: A(2:N) = B(2:N) s3: E(2:N) = C(3:N+3) s4: B(2:N) = A(2:N) + 2 s2: C(2:N) = A(2:N) + B(1:N-1) s1 s3 s2 s4 s1: A(2:N) = B(2:N) s3: E(2:N) = C(3:N+3) d 10 J = 2, N s2: C(J) = A(J) + B(J-1) s4: B(J) = C(J) + 2 d Vekrisering av innerlp rs berenden på yerlp Parallellisering av lpar Cyklisk berende på nivå 1, inge berende på innerlpen d J = 1, M S: C(I,J) = C(I-1, J) - D(I-1, J+1) J I Om yerlpen ej mdifieras bibehålls berendena, innerlpen kan således vekriseras S: C(I,1:N) = C(I-1, 1:N) - D(I-1, 2:N+1) I Mål - minimera en lps exekveringsid Medel - unyja parallellie mellan ierainer lika ierainer på lika prcessrer Begränsningar Daaberende mellan ierainer Lasbalans ierainer måse fördelas jämn på prcessrer OH pga kmmunikain & synkrniseringar 7
Saisk Schedulering Dynamisk lp-schedulering wrap mapping av n ierainer på p prcessrer n ierainer indelas i (n div p) +1 rundr alla rundr um den sisa uför p ierainer parallell P1 P2 P3 P4 1 2 3 4 5 6 7 8 9 10 par g := 1, P fr i = g, N sep P s(i) end fr end par blck mapping av n ierainer på p prcessrer m (me <= n md p) ag (n div p) +1 ierainer annars m (me > n md p) ag n md p ierainer P1 P2 P3 P4 1 4 7 9 2 5 8 10 3 6 Prcessr ar ierainer från prcesskö nera a dea ksar exra pga köhanering par g := 1, P i = p() while n empy() d s(i) i = p() end while end par ierainer Lp-spreading (berende saser) Lp-spreading (berende saser) Balansera disribuin av saser då anale prcessrer ej mulipel av anale ierainer par g := 1, 4 s1(i); s2(i); s3(i); end par s j+1 (i) berende av s j (i) kan ge upphv ill fel resula vid lpspreading par g := 1, 4 s1(i); s2(i); s3(i); end par s2 berr av s1, s3 berr av s2 s1(1) s2(1) s3(1) s1(4) s2(4) s3(4) s1(2) s2(2) s3(2) s1(3) s2(3) s3(3) s1(1) s2(1) s3(1) s1(2) s2(2) s3(2) s1(3) s2(3) s3(3) s1(4) s2(4) s3(4) s1(1) s2(1) s3(1) s1(2) s2(2) s3(2) s1(3) s2(3) s3(3) s1(4) s2(4) s3(4)!#"$&% -.0/1. 2 s1(4) /43 53 6 ')( 6 6 *+, " + s2(4) 8
' När jänar man på lpspreading av berende saser? Knrllfrågr Då N > p lönar sig lpspreading, annars ej flera ierainer än prcessrer gör a berende saser hamnar i lika rundr s j (i) körs mins en runda innan s j+1 (i) rdning upprähållen mha sync(i,j), wai(i,j) % s1(1) s1(2) s1(3) s1(4) s2(1) s2(2) s2(3) s2(4) s3(1) s3(2) s3(3) s3(4) Är dessa lpar vekriserbara direk eller efer någn ransfrmain? 1. d i = 1, N A(i+1) = A(i) * B(i) 2. d i = 1, N A(i-1) = A(i) * B(i) 3. d i = 1, N A(i+k) = A(i) * B(i) 4. d i = 1, N d j = 1, N A(i,j) = B(i,j) * C(i,j) Ta fram berendegrafen för följande kdsnu, ch visa hur evenuella ani- eller upuberenden kan elimineras. A(I) = B C(I) = A(I) + 1 B= A(I+1) + 7 9