Side om side Trettende forelesning 1
Det finnes mange modeller for parallellitet. Her får dere en liten smak av én av dem som er ment å modellere trådbasert parallellitet/ multicoreprogrammering. Parallellitet 2
Fib(n) 1 if n 1 2 return n 3 else x = Fib(n 1) 4 y = Fib(n 2) 5 return x + y 3
Dokumentasjonen på nett spawner begge kallene; i det nye kapitlet i Cormen et al. spawnes bare ett av dem. P-Fib(n) 1 if n 1 2 return n 3 else x = spawn Fib(n 1) 4 y = Fib(n 2) 5 sync 6 return x + y 4 Dette er logisk parallellitet ikke faktisk. Hvor ting faktisk kjøres i parallell kommer an på scheduler og antall prosessorer. (Tilsvarende fork/join i UNIX, men med tråder.)
Hver runding kalles en strand (i originaldokumentasjonen, thread, men det kan kanskje være litt forvirrende). De lyse boksene er spawnede, mens de mørke er kalt på vanlig vis. P-Fib(4) P-Fib(3) P-Fib(2) P-Fib(2) P-Fib(1) P-Fib(1) P-Fib(0) P-Fib(1) P-Fib(0) 5 Avhengighetsgrafen er (naturlig nok) en DAG. En viktig del av den er spawntreet. Her er også den kritiske stien uthevet.
Når man analyserer algoritmer er det gjerne denne man vil beskrive: Kjøretiden, som funksjon av problemstørrelsen. T (n) 6
Den eneste endringen her er egentlig at vi legger til antall prosessorer, P, som parameter. T P (n) 7
For enkelhets skyld dropper jeg n som eksplisitt parameter i T P 8
Work T 1 Den tiden det tar på én prosessor; evt., antall noder i DAG-en. 9
Span T Tiden det tar med uendelig mange prosessorer. Evt., den lengste stien fra start til slutt (critical path). 10
A B T 1 (A B) =T 1 (A)+T 1 (B) T (A B) =T (A)+T (B) 11
A B T 1 (A B) =T 1 (A)+T 1 (B) T (A B) = max(t (A),T (B)) 12
Fibonacci T 1 (n) = T (n) =T (n 1) + T (n 2) + (1) = ( n ) T (n) = max(t (n 1),T (n 2)) + (1) = T (n 1) + (1) = (n) For P-Fib har vi altså eksponentielt arbeid med lineært spenn. 13
Det er ikke så enkelt å finne eksakte formler for Tp derfor er det nyttig å kunne bruke noen nedre beskrankninger, og kunne holde oss til T1, Tinf og P, som er lettere å finne. Ulikheter 14
The Work Law T T 1 P P 15 Tiden det tar kan ikke være lavere enn gjennomsnittsarbeidet per prosessor. (Går du under snittet hos én må du gå over hos en annen )
The Span Law T P T 16
Speedup T 1 T P Hvis vi går fra 1 til P prosessorer, hvor mye fortere går det? 17
The Work Law gir oss T 1 P T P Hvis vi går fra 1 til P prosessorer kan det maksimalt gå P ganger så fort. 18
Lineær speedup T 1 T P (P ) 19
Perfekt speedup P ganger så fort med P prosessorer. Så: I tillegg til at vi vil at kjøretiden skal vokse langsomt som funksjon av n så vil vi at speedup-en skal vokse fort (helst lineært) som funksjon av P. Dvs., vi vil at algoritmen skal utnytte ekstra prosessorer så bra som mulig (i hvert fall opp til et visst antall). T 1 = P T P Men siden vi har problemer med å finne Tp så må vi gå noen omveier 20
Parallellitetsgrad (parallelism) T 1 T Kan sees på (i hvert fall) tre måter: (1) Gjennomsnittlig arbeid per trinn i kritisk sti (2) maksimal speedup 21 (3) grense for mulig perfekt speedup (Mer om det om en liten stund.)
Fibonacci T 1 (n) n T (n) = n Vokser dramatisk som funksjon av n. Med andre ord, selv med enormt mange prosessorer skal det ikke noen stor n til før man har nærmest perfekt speedup. M.a.o.: Algoritmen kan nyttiggjøre seg alle kjernene du kan kaste etter den. 22
Flere pros. enn parallellitetsgrad T 1 T 1 T P T <P Perfekt speedup er da ikke lenger mulig. 23
Mange pros. ifht. parallellitetsgrad P T 1 T T 1 T P P 24 Så parallellitetsgraden er bra eller dårlig i forhold til antall prosessor. Forholdet mellom parallellitetsgraden og antall prosessorer er altså viktig.
Scheduling Scheduleren fordeler strands mellom prosessorer mens programmet kjører uten forhåndskunnskap (dvs. on-line ). For å gjøre analysen enkel, brukes her en sentralisert, grådig scheduler. Ikke optimal, men ikke så veldig langt ifra Grådig scheduling: Utfør så mange strands som mulig i hvert trinn. 25
Grådig sched. på ideell par. maskin: T T 1 P P + T 26
Korollar T P T 1 P + T T P 2T P En tidsdobling er en del men for asymptotisk analyse spiller det jo ingen rolle. (Grunnen til at vi bruker grådig scheduling her er først og fremst at det er greit å analysere.) 27
Enda et korollar T P T 1 P + T P T 1 T T P T 1 P 28
Ekvivalent konklusjon T 1 P T P Altså: Ved høy parallellitet ifht. antall prosessorer gir grådig scheduling nesten perfekt speedup. 29