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

Relevanta dokument
Fördelning. Fördelningsprinciper. Lastbalansering

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

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

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

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

Prestanda och skalbarhet

Trädstrukturer och grafer

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

Graphs (chapter 14) 1

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

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

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

Föreläsning Datastrukturer (DAT036)

Föreläsning 12+13: Approximationsalgoritmer

TNK049 Optimeringslära

Föreläsning 13 Innehåll

Föreläsningsanteckningar F6

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

Föreläsning Datastrukturer (DAT037)

Föreläsning 7 Datastrukturer (DAT037)

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

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

Synkronisering. Föreläsning 8

Föreläsning 5: Grafer Del 1

Föreläsning 6 Datastrukturer (DAT037)

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

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

Föreläsning Datastrukturer (DAT036)

Trafiksimulering: Grafalgoritmer

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 13 Innehåll

Föreläsning Datastrukturer (DAT036)

Föreläsning 5: Dynamisk programmering

Avancerad Problemlösning och Programmering i Praktiken

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

Föreläsning Datastrukturer (DAT037)

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

Föreläsning 4: Kombinatorisk sökning

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

Datastrukturer. föreläsning 8. Maps 1

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

Datastrukturer. föreläsning 7. Maps 1

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

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

Realtidsprogrammering Ordinarie tentamen

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

Datorarkitekturer med operativsystem ERIK LARSSON

FÖRELÄSNING 11 DATALOGI I

Tentamen i Realtidsprogrammering för Au3, D3, E3

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

Föreläsning 6 Datastrukturer (DAT037)

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

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

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

Datorteknik ERIK LARSSON

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

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

Öka prestanda i Shared-Cache multi-core processorer

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

Föreläsning 2 Datastrukturer (DAT037)

Datastrukturer och Algoritmer D0041D

Algoritmer och datastrukturer, föreläsning 11

Optimering Kruskal s algoritm Prim-Jarník s algoritm

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

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

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

Föreläsning Datastrukturer (DAT036)

JAVAUTVECKLING LEKTION 4

Datastrukturer. föreläsning 9. Maps 1

Datastrukturer och algoritmer

Föreläsning 8 Datastrukturer (DAT037)

Pipelining i Intel Pentium II

ETS052 Internet Routing. Jens A Andersson

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.

Spekulativ exekvering i CPU pipelining

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

Föreläsning 4 Datastrukturer (DAT037)

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

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen Datastrukturer, DAT037 (DAT036)

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

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

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

Lösningsförslag till tentamen Datastrukturer, DAT037,

Datastrukturer. föreläsning 3. Stacks 1

Algoritmer, datastrukturer och komplexitet

de var svåra att implementera och var väldigt ineffektiva.

Programmerbar logik och VHDL. Föreläsning 4

Extend för Dummies Teknologer

Kapitel 9: Grafalgoritmer

Hyper-Threading i Intelprocessorer

Aktivitetsschemaläggning för flerkärninga processorer

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

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

Föreläsning 13. Dynamisk programmering

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

Schemaläggningsmetodik för multi-core inom Windows 7 OS Vad är scheduling och hur schemalägger Windows OS sina processer?

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation.

Transkript:

Lastbalansering Föreläsning : Lastbalansering Imperfekt balans balans Perfekt För betraktaren är det längsta exekveringstiden som spelar roll!!! Fördelning 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 Fördelningsprinciper Lokal fördelning Tidsdelning mellan jämnlöpande processer på en processor (s.k. timesharing) Global fördelning Tilldela processor i //-system arbete Statisk fördelning (innan exekvering, vid kompilering) Dynamisk fördelning (under exekvering) sub-optimal heuristisk statisk optimal approx fördelare distr kooperativ optimal heuristisk dynamisk icke-distr icke kooper sub-optimal approx

Statisk 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, gar. suboptimalt 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) Andra indelningar av 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 Dynamisk lastbalansering 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 Statisk fördelning 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 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 Listfördelning (List scheduling) Å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 Optimala fördelningsalgoritmer Fördelningsproblemet är NP-komplett i det generella fallet Undantag HLF (Highest Level First), CP (Critical Path), LP (Longest Path) ger i de flesta fallen optimal fördelning 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 Fördelning av trädstrukturerad taskgraf 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 HLF kan också misslyckas Kan alltid konstruera exempel som inte funkar Stämmer för de flesta algoritmer

Fördelningsheuristik 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 D Exempel, Trade-off // vs kommunikationstid D Dy Dy P P D P P D < T, assign T to P Time = T + D + T + Dy + T, or Time = T + T + + T Om min(, Dy) > T assign T To P D P Parallellitet vs Kommunikationsfördröjning 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) P P P P Kornstorleksproblemet Hitta bästa klustring av tasks i task graf (minimera exekveringstiden) Grovkornigt Mindre parallellitet Finkornigt Mer fördelningstid Mer kommunikationskonflikter > T < T

Arbetsduplicering (redundant computing) Kan eliminera kommunikationsfördröjningar genom att upprepa arbete Centraliserade Decentraliserade Distribuerade Arbetspooler Centralized P P P P Hur välja processor att kommunicera med? Decentralized Distributed Dynamisk lastbalansering 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 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

Arbetsöverföring - distribuerad Kölinjestruktur 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 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 Arbetsöverföring - decentraliserad 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 Trädbaserad kö Varje process skickar till en av två processer generalisering av föregående teknik 6

Exempel Shortest Path 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? d j =min(d j, d i +w i,j ) Moores algoritm 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. Exempel Shortest Path Sekventiell kod 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 */ 7

Parallell implementation 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 II 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. 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; 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) 8

Shortest path 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 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 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 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. 0 7 0 9