Fördelning. Fördelningsprinciper. Lastbalansering



Relevanta dokument
Lastbalansering. Fördelningsprinciper. Fördelning. balans. MIMD-parallellt program Ett antal tasks som exekverar seriellt eller parallellt

Installation Site Country/Year Earth Simulator Center Japan/2002 Los Alamos National Laboratory USA/2002. Los Alamos National Laboratory USA/2002

Datastrukturer. föreläsning 8. Lecture 6 1

Översikt. Parallella sökalgoritmer för diskreta optimeringsproblem. 8-pusslet. Problemdefinitioner

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Trädstrukturer och grafer

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Föreläsning 10. Grafer, Dijkstra och Prim

TNK049 Optimeringslära

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Grafer, allmänt. Med datastrukturen graf menas vanligen: en mängd av noder (vertices) och en mängd av bågar (edges).

Sortering. Intern/ extern? Antaganden. Vad kan vi kräva? Rank sort. Rank sort. På en nod/ distribuerad? Jämförelsebaserad/ icke jämförelsebaserad?

Prestanda och skalbarhet

Graphs (chapter 14) 1

Föreläsning 2: Grafer. Exempel på graf

Föreläsning 13 Innehåll

Föreläsning 12+13: Approximationsalgoritmer

Föreläsning Datastrukturer (DAT036)

Synkronisering. Föreläsning 8

Föreläsning 15: Parallella subrutiner. Parallellitet. Varför parallella underprogram?

Föreläsning 5: Dynamisk programmering

Föreläsning Datastrukturer (DAT037)

Föreläsningsanteckningar F6

Föreläsning 2. Kortaste vägar i grafer.

Föreläsning 5: Grafer Del 1

Föreläsning 7 Datastrukturer (DAT037)

Föreläsning 4: Kombinatorisk sökning

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Föreläsning Datastrukturer (DAT036)

Föreläsning 6 Datastrukturer (DAT037)

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

Föreläsning Datastrukturer (DAT036)

Föreläsning 2. Kortaste vägar i grafer.

Trafiksimulering: Grafalgoritmer

Föreläsning Datastrukturer (DAT037)

Avancerad Problemlösning och Programmering i Praktiken

Nät med flera länkar. Vägval. Enklaste formen av kommunikation:

Föreläsning 8 Datastrukturer (DAT037)

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på

Lektion 2: Sökagenter. Robin Keskisärkkä

Operativsystem. Informationsteknologi sommarkurs 5p, Agenda. Slideset 7. Exempel på operativsystem. Operativsystem

Tillämpad Programmering (ID1218) :00-13:00

Datastrukturer och algoritmer

Föreläsning 13 Innehåll

Datastrukturer. föreläsning 8. Maps 1

FÖRELÄSNING 11 DATALOGI I

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Öka prestanda i Shared-Cache multi-core processorer

Datastrukturer och Algoritmer D0041D

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

ETS052 Internet Routing. Jens A Andersson

Datorarkitekturer med operativsystem ERIK LARSSON

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Föreläsning 13. Dynamisk programmering

Tentamen Datastrukturer, DAT037 (DAT036)

Datastrukturer. föreläsning 7. Maps 1

Optimering Kruskal s algoritm Prim-Jarník s algoritm

En överblick. Pseudo-parallell simulering. Snabbköpsexemplet, forts. Två olika sätt att modellera och simulera. Schedulering

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Algoritmer och datastrukturer, föreläsning 11

Föreläsning 2 Datastrukturer (DAT037)

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Spekulativ exekvering i CPU pipelining

Tentamen i Realtidsprogrammering för Au3, D3, E3

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Eulercykel. Kinesiska brevbärarproblemet. Kinesiska brevbärarproblemet: Metod. Kinesiska brevbärarproblemet: Modell. Definition. Definition.

Algoritmer, datastrukturer och komplexitet

Pipelining i Intel Pentium II

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Föreläsning Datastrukturer (DAT036)

Realtidsprogrammering Ordinarie tentamen

Föreläsning 6 Datastrukturer (DAT037)

729G04 - Diskret matematik. Lektion 4

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Aktivitetsschemaläggning för flerkärninga processorer

JAVAUTVECKLING LEKTION 4

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Datastrukturer. föreläsning 9. Maps 1

Programmering II (ID1019) :00-11:00

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl

Realtidssystem. - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

Lösningsförslag till tentamen Datastrukturer, DAT037,

Programmering II (ID1019) :00-17:00

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Grafer MST Top. sortering Starkt samm. komponenter Kortaste avstånd. Grafalgoritmer 1. Douglas Wikström KTH Stockholm

Några svar till TDDC70/91 Datastrukturer och algoritmer

Föreläsning 9: NP-fullständighet

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Datorteknik ERIK LARSSON

Datastrukturer. föreläsning 3. Stacks 1

729G04 - Diskret matematik. Lektion 4

Föreläsning 4 Programmeringsteknik och Matlab DD1312. Logiska operatorer. Listor. Listor, tupler, strängar och forslingor

Transkript:

Fördelning Föreläsning : Lastbalansering MIMD-parallellt program Ett antal tasks som exekverar seriellt eller parallellt Fördelningsproblemet NP-komplett problem (i generella fallet) Fördela tasks på processorer så att minimal exekveringstid erhålls Optimal fördelning Processorallokering + exekveringsordning sådan att exekveringstiden minimeras Fördelningssystem (Konsument, Policy, Resurs) Konsument Schedulerare Policy Resurs Läsanvisning kap. 7 Lastbalansering Fördelningsprinciper Imperfekt balans Perfekt balans Lokal fördelning Tidsdelning mellan jämnlöpande processer på en processor Global fördelning Tilldela processor i //-system arbete Statisk fördelning (innan exekvering, vid kompilering) Dynamisk fördelning (under exekvering) fördelare statisk dynamisk sub-optimal optimal distr icke-distr heuristisk approx kooperativ icke kooper För betraktaren är det längsta exekveringstiden som spelar roll!!! optimal heuristisk sub-optimal approx

Statisk lastbalansering Dynamisk lastbalansering Fördelningsbeslut fattas innan exekvering Uppgiftsgraf känd innan exekvering Varje jobb tilldelas en processor statiskt Optimal fördelning (omöjligt?) Sub-optimal fördelning Heuristik (använda kunskap man fått genom erfarenhet) Exempel: Tasks som kommunicerar mycket på samma processor Approximativ Begränsa maskin-/program-modell Nackdelar Klarar ej ickedeterminism i program, bör ej användas då vi inte vet exakt vad som kommer att hända (ex. DFS-sökning) Fördelningsbeslut under programexekvering Distribuerad Beslut fattas av lokala distribuerade fördelare Kooperativ Lokala fördelare samarbetar global fördelning Icke kooperativ Lokala fördelare samarbetar ej påverkar endast lokal prestanda Icke distribuerad Beslut fattas av en processor (master) Nackdelar Svårt att hitta optimala fördelare Overhead då det sker under exekvering Andra indelningar av fördelning Statisk fördelning Single application / multiple application system Endast en applikation i taget, minimera exekveringstiden för denna applikation Flera parallella applikationer (jfr batch-köhantering), minimera genomsnittsexekveringstiden för alla applikationer Adaptiv / icke adaptiv schedulering Ändrar sig beroende på feedback från systemet Påverkas ej av feedback Preemptive / non-preemptive schedulering Tillåter att process avbryts om den får återkomma senare Tillåter ej att process avbryts nonpreemptive preemptive Grafteoretisk Approach (för program utan loopar och hopp) DAG (directed acyclic graph) = taskgraf Start-node (inga föräldrar), exit-node (inga barn) Maskinmodell Processorer P = {P,..., P m Kopplingsmatris (mxm), komm.-kost. P i,j Processor prestanda S i [instruktioner per sekund] Parallellprogrammodell Tasks T = {T,..., T n exekveringsordning anges av pilarna Kommunikationsmatris (nxn), ant. elem. D i,j Antal instruktioner A i 0 T, A, D 8

Konstruktion av schema Optimala fördelningsalgoritmer Schema: mappning som tilldelar en eller flera disjunkta tidsintervall till varje task så att Exakt en processor tilldelas varje intervall Summan av intervallen lika med exekveringstid för task Olika intervall på samma processor överlappar ej Ordning mellan de olika tasken upprätthållen Någon processor är alltid tilldelad ett jobb Fördelningsproblemet är NP-komplett i det generella fallet Undantag HLF (Highest Level First), CP (Critical Path), LP (Longest Path) List scheduling: prioritetslista över noder och tilldela noderna en och en till processerna. Vid scheduleringen, välj nod med högst prioritet och tilldela till den proc som blir ledig först. Upprepa tills listan tom. Variationer mellan algoritmerna i hur man tilldelar prioritet Trädstrukturerad taskgraf. Förenklingar införs: Alla tasks samma exekveringstid Alla processorer samma prestanda Godtycklig taskgraf på två processorer. Förenkling införs: Alla tasks samma exekveringstid Listfördelning (List scheduling) Fördelning av trädstrukturerad taskgraf Återigen Varje task tilldelas prioritet & placeras i prioritetsordnad lista När processor ledig allokera task med högst prioritet Om två har samma prioritet tag slumpmässig Olika val av prioritet ger olika fördelningar Nivånummer närmast optimal prioritetsordning (HLF) Task #Pr Level 0 Antal anledningar till att jag inte är ready Nivå max antal noder från x till terminalnod Optimal algoritm (HLF) Bestäm varje nods nivå = prioritet När processor ledig tilldela den ready task som har högst prioritet

Godtycklig task graf på två processorer Fördelningsheuristik Algoritm. Tilldela terminal tasks etiketter,,.. j -. Definiera mängden S som alla tasks utan etiketter och där samtliga direkta efterföljare har etiketter.. För varje element x i S Konstruera l(x): En sorterad lista av etiketterna på alla direkta efterföljare till x i fallande ordning. Sortera alla listor l(x) lexikografiskt i stigande ordning Tilldela det x som har lägst l(x) j, näst lägst j +, osv. Om det fortfarande finns tasks utan etiketter goto Komplexiteten ökar om modellen tillåter Tasks med olika exekveringstid Olika snabba kommunikationslänkar Kommunikationskrockar Loopar och hopp Begränsade nätverk Hitta suboptimala lösningar Hitta mha heuristik lösningar som oftast är nära optimala Parallellitet vs Kommunikationsfördröjning Exempel, Trade-off // vs kommunikationstid Fördelning måste baseras på både Kommunikationsfördröjning Tidpunkt då processor redo att arbeta Trade-off mellan maximera parallellitet & minimera kommunikation (max-min problemet) Dx P P Dx P P Dx D D Dx Dy Dy P P D Dx P P D < T, assign T to P Time = T + D + T + Dy + T, or Time = T + T + Dx + T D P Dx > T Dx < T Om min(dx, Dy) > T assign T To P

Kornstorleksproblemet Arbetsduplicering (redundant computing) Hitta bästa klustring av tasks i task graf (minimera exekveringstiden) Grovkornigt Mindre parallellitet Finkornigt Mer fördelningstid Mer kommunikationskonflikter Kan eliminera kommunikationsfördröjningar genom att upprepa arbete P P P P Dynamisk lastbalansering Arbetspooler Lokal fördelning. Exempel: Trådar. Processer. I/O. Global fördelning. Exempel: Vissa simuleringar. Arbetspool / fördelad arbetspool receiver-initiated sender-initiated Kölinjestruktur Centraliserade Decentraliserade Distribuerade Hur välja processor att kommunicera med? Centralized Distributed Decentralized

Arbetsöverföring - distribuerad Arbetsöverföring - distribuerad Mottagaren tar initiativet. Pull En process frågar en annan process om jobb Processen frågar när den har slut på uppgifter, eller har lite att göra. Fungerar bra, även vid höga systemlaster Kan vara dyrt att uppskatta systemlaster Sändaren tar initiativet. Push En process skickar över jobb till en annan process Processen frågar när den har väldigt många uppgifter, eller hög last Fungerar bra vid låga systemlaster Svårt att veta när man ska skicka Arbetsöverföring - decentraliserad Kölinjestruktur Exempel på processval Last (svårt) Round robin Gäller att se till att processerna ej kommer i fas Slumpmässigt (random polling) Bra generator nödvändig?? Se exempel loadbalance.f Kan ha två processer per nod En arbetsprocess som beräknar frågar kön efter jobb En som frågar (till vänster) efter nya jobb om kön är nästan tom får nya jobb från vänster får förfrågningar från höger och från arbetsprocessen som svarar på dessa förfrågningar 6

Trädbaserad kö Exempel Shortest Path Varje process skickar till en av två processer generalisering av föregående teknik Kortaste vägen. Givet en mängd av sammankopplade noder där kanterna mellan noderna är markerade med vikter, hitta den väg från en specifik nod till en annan specifik nod som har den minsta ackumulerade vikten. Hur representera grafen? Exempel Shortest Path Moores algoritm d j =min(d j, d i +w i,j ) Håll en kö, som innehåller hörn att beräkna på. Börja med starthörnet. Håll en lista med kortaste avstånd. Börja med noll för starthörnet, och oändligheten för resten. För varje nod i början på kön, uppdatera listan enligt uttrycket ovan. Om det blev en uppdatering, lägg till det nya hörnet i listan. 7

Sekventiell kod Parallell implementation Antar adjacency matrix. while ((i = next_vertex())!= no_vertex) /* while a vertex */ for (j = ; j < n; j++) /* get next edge */ if (w[i][j]!= infinity) { /* if an edge */ newdist_j = dist[i] + w[i][j]; if (newdist_j < dist[j]) { dist[j] = newdist_j; append_queue(j); /* vertex to queue if not there */ /* no more vertices to consider */ Dynamisk lastbalansering Centraliserad arbetspool. Varje beräkningsnod tar hörn från kön och returnerar nya hörn. Avstånden lagras som lista, kopieras ut till noderna. Parallell implementation Parallell implementation II Kod: while (vertex_queue()!= empty) { recv(pany, source = Pi); v = get_vertex_queue(); send(&v, Pi); send(&dist, &n, Pi);. recv(&j, &dist[j], PANY, source = Pi); append_queue(j, dist[j]); ; recv(pany, source = Pi); send(pi, termination_tag); While(true){ send(pmaster); recv(&v, Pmaster, tag); if (tag!= termination_tag) { recv(&dist, &n, Pmaster); for (j = ; j < n; j++){ if (w[v][j]!= infinity) { newdist_j = dist[v] + w[v][j]; if (newdist_j < dist[j]) { dist[j] = newdist_j; send(&j, &dist[j], Pmaster); else {break; Decentraliserad arbetspool. Varje hörn är en process. Så fort ett hörn får en ny vikt (startnoden sig själv), skickar den nya avstånd till sina grannar. 8

Parallell implementation II Shortest path Kod: recv(newdist, PANY); if (newdist < dist) dist = newdist; /* start searching around vertex */ for (j = ; j < n; j++) /* get next edge */ if (w[j]!= infinity) { d = dist + w[j]; send(&d, Pj); /* send distance to proc j */ Måste hantera meddelande i luften. (MPI_Probe) Måste nog gruppera hörnen, dvs flera hörn/processor. Hörn som ligger nära på samma processor Liten kommunikation Liten parallellism Hörn som ligger långt borta på samma processor (scatter) Mycket kommunikation Stor parallellism Gruppera meddelanden? Hur synkronisera? Terminering. Termineringsalgoritmer Termineringsalgoritmer Ringalgoritm: Låt en process p 0 skicka ut ett token på ringen när p 0 har slut på jobb. När en process tar emot ett token: Om slut på jobb, skicka token vidare Om inte, vänta till slut, skicka sedan vidare När p 0 får tillbaka token, vet p 0 att alla har slut på arbete. Kan då meddela andra. Fungerar inte om processer lånar jobb av varandra. p 0 Dijkstras ringalgoritm: Låt en process p 0 skicka ut ett vit token på ringen när p 0 har slut på jobb. Om en process p i skickar arbete till p j, j < i, blir den svart. När en process tar emot ett token: Om processen är svart, färgas token:et svart Om slut på jobb, skicka token vidare Om inte, vänta till slut, skicka sedan vidare Om p 0 får tillbaka vitt token, vet p 0 att alla har slut på arbete skickar termineringmeddelande (ex. röd token) Om p 0 får tillbaka svart token, skickar p 0 ut ett vitt token. jobb p 0 p j p i 9

Kontrollfrågor Antag att fem (arbets-)processer ska lösa shortest path för grafen till höger med Parallell implementation I. Hur många, och vilka, meddelanden skickas? Antag att fem (arbets-)processer ska lösa shortest path för grafen till höger med Parallell implementation II. Hur många, och vilka, meddelanden skickas? Hitta en optimal tidsfördelning för task-grafen till höger för två processorer. Hitta ett exempel (task-graf) där algoritmen Godtycklig task graf på två processorer inte ger en optimal lösning på tre processorer. 0 7 0 0