39
Comunicarea prin mesaje. Complexitatea algoritmilor distribuiți Ciprian Dobre [email protected]

6. Comunicarea Prin Mesaje. Complexitatea Algoritmilor Distribuiti

Embed Size (px)

DESCRIPTION

municarea Prin Mesaje. Co

Citation preview

Complexitatea algoritmilor paraleli

Comunicarea prin mesaje.Complexitatea algoritmilor distribuiiCiprian [email protected]

1. Comunicarea prin mesaje ndeplinete cele dou funcii:comunicarea - datele ajung de la transmitor la receptorsincronizarea - un mesaj nu poate fi recepionat nainte de a fi transmis

Canalele sunt obiectele puse n comun de procese Programe distribuite Transmiterea de mesaje3Modelulcanalele sunt cozi nelimitate de mesaje operaia send nu este blocant operaia receive este blocantcanalele pstreaz ordinea mesajelorcanalele nu pierd mesajele Canalele sunt declarate globale:Orice proces poate transmite i recepiona pe un canal: cutii potaleDac receptorul este unic: portDac i transmitorul este unic: legtur

Comunicarea asincron prin mesaje (1) 4Canalele cozi nelimitate de mesaje- Deoarece cozile sunt teoretic infinite, operatia send nu este blocantaCand coada este vida, operatia read este intarziata pana la primirea unui mesajCanalele pastreaza ordinea mesajelor, cozi FIFOCutie potal

Port

Legtur SDDDSS SDSSDSComunicarea asincron prin mesaje (2)Declaraie forma generalchan nume_canal (id_1: tip_1, ..., id_n: tip_n)

Grup indexat de canalechan rezultat [1:n](int)

Operaiisend nume_canal (expresie_1, ..., expresie_n)receive nume_canal (variabila_1, ..., variabila_n)empty (nume_canal)Comunicarea asincron prin mesaje (3) chan input (char), output (array [1:Maxl] of char);

co Car_linii:: var line: array [1:Maxl] of char, i: int :=1; do true -> receive input (line[i]); do line[i] CR and i < Maxl -> /* line[1:i] = ultimele i caractere introduse*/ i := i + 1; receive input (line[i]); od send output (line); i := 1; odocExemplu - Filtru7

xyr1Exemplu - Replicated Workers (1)chan sac (a, b, fa, fb, aria: real);chan rezultat (a, b, aria: real);

co Administrator:: var xl, xr, yl, yr, a, b, aria, total: real; /* alte variabile marcare intervale terminate */

yl := f(xl); yr := f(xr); aria := (yl + yr) * (xr - xl) / 2; send sac(xl, xr, yl, yr, aria);

do nu s-a calculat toata aria -> receive rezultat (a, b, aria); total := total + aria; marcheaz intervalul [a, b] terminat; od;ocExemplu - Replicated Workers (2)9co Lucru(i:1..n):: var a, b, m, ya, yb, ym: real; var ariaSt, ariaDr, ariaTot, dif: real; do true -> receive sac (a, b, ya, yb, ariaTot); m := (a + b) / 2; ym := f(m); calculeaz ariaSt i ariaDr; dif := ariaTot - ariaSt - ariaDr; if dif mic -> send rezultat (a, b, ariaTot); [] dif mare -> send sac (a, m, ya, ym, ariaSt); send sac (m, b, ym, yb, ariaDr); fi od;ocExemplu - Replicated Workers (3)10Modelulambele primitive de comunicare sunt blocantesincronizare prin rendez-vous (operaiile executate simultan)

Comunicarea sincron prin mesaje (1)11DestinaieSursDestinaie ! port (e1, ..., en)Surs ? port (v1, ..., vn)Comunicarea sincron prin mesaje (2)Copierea unor valori de la vest la est Copy:: var c: char; do true -> vest ? c; est ! c; odCalculul c.m.m.d.c printr-un proces server CMMDC:: var x, y: int; do true -> CLIENT ? arg (x, y); do x > y -> x := x - y; [] x < y -> y := y x; od CLIENT ! result (x) od

Exemple13Forma general:

B; C -> SExpresie boolean opionalPrimitiv de comunicare opionalLista de instruciuniInstruciuni de comunicare cu gard (1)14Copy:: var buffer: array [1:10] of char;var front := 1, rear := 1, count := 0;do count := count + 1; rear := (rear mod 10) + 1;[] count > 0; est ! buffer [front] -> count := count - 1; front := (front mod 10) + 1;od

count < 10;vest ? buffer[rear] ->B;C SInstruciuni de comunicare cu gard (2)B; C -> S15co CMMDC:: var x, y: int; do (i:1..n) Client(i) ? arg (x,y) -> do x > y -> x := x y; [] x < y -> y := y - x; od Client(i) ! result (x); od Client(i:1..n):: ... CMMDC ! arg (v1, v2); CMMDC ? result (r); ...ocComand cu gard generalizat 162. Complexitatea algoritmilor distribuii (Foster 1995)01234567CalculComunicareInactivOModelul Foster18

Timpul total de execuie19Depinde de:dimensiunea problemei Nnumrul de task-uri sau procesoarecaracteristicile procesoarelor i memoriei

Exemplu:scalarea dimensiunii problemei sau a numrului de procesoare poate modifica performana cache-ului sau eficacitatea pipelining-ului procesorului

20T = timeL = message length21Trebuie tradus pentru a avea o uniformitate.Msurtori experimentale: timp dus-ntors pentru mesaje (RTT)

0EthernetFDDIParagonSPI200040006000800010000Timp (s)Dimensiune mesaj (octei)01000200030004000500022Datorit:lipsei calculelor load balancinglipsei datelor overlapping computation and communication tt+2t+4t+6t+8t+10P1P2P1P2(a)(b)23Model comunicare simplu:Tmsg = ts + twLCompetiie pentru band:Tmsg-b = ts + twSLS = numr de procesoare care comunic concurent pe acelai canal (i n acelai sens) S=1

S=2

S=1P0P1P2P3P0P1P2P3P0P1P2P3

Model revizuit pentru cost comunicare24I[i,j]0 = 0, daca i == jI[i,j]0 = cost(i,j), dac exist muchie i i != jI[i,j]0 = MAX, altfel

fa k := 0 to N - 1 fa i := 0 to N - 1 fa j := 0 to N 1 I[i,j]k+1 := min(I[i,j]k, I[i,k]k + I[k,j]k) af af afT = tc N3Durata unei iteraiiExemplu Sequential Floyd25Bazat pe o descompunere uni-dimensional pe rnduri a matricei I (algoritmul poate folosi cel mult N procesoare)Fiecare task are unul sau mai multe rnduri adiacente din I i rspunde de calculul acestor rnduri

fa k := 0 to N-1 fa i := local_i_start to local_i_end fa j := 0 to N-1 I[i,j]k+1 := min(I[i,j]k, I[i,k]k + I[k,j]k) af af afExemplu Parallel Floyd 1 (1)n pasul k, procesele au nevoie de linia k din matricea I. Procesorul cu aceast linie o difuzeaz tuturor n log P pai folosind o structur arborescent.Deoarece fiecare mesaj are N cuvinte, timpul de difuzare a unei linii este: log P (ts + twN)

a)b)kExemplu Parallel Floyd 1 (2)27Timpul algoritmului secvenial mprit la numrul de procesoareTimpul de comunicare

Exemplu Parallel Floyd 1 (3)Descompunere bi-dimensional a matricelor. Folosete pn la N2 procesoare.

fa k := 0 to N - 1 fa i := local_i_start to local_i_end fa j := local_j_start to local_j_end I[i,j]k+1 := min(I[i,j]k, I[i,k]k + I[k,j]k) af af af

Exemplu Parallel Floyd 2 (1)kka)b)Exemplu Parallel Floyd 2 (2)30

Exemplu Parallel Floyd 2 (3)31Schimba parantezele cu unele din equation, ca cele de pe randul de mai sus.L - latency sau ntrzierea de transmitere a unui mesaj mic de la surs la destinataro - overhead, durata pentru care procesorul este angajat n transmiterea sau recepia fiecrui mesajg - gap, intervalul minim de timp ntre dou transmiteri succesive sau dou recepii succesive la acelai modulP - numrul de module procesor / memorie.Gap TOverhead TOverhead RP0P1Latency

Gap R

Modelul LogP32PMPMPMReea de interconectareoverhead ooverhead ogap glatency LL - latency sau ntrzierea de transmitere a unui mesaj mic de la surs la destinataro - overhead, durata pentru care procesorul este angajat n transmiterea sau recepia fiecrui mesajg - gap, intervalul minim de timp ntre dou transmiteri succesive sau dou recepii succesive la acelai modulP - numrul de module procesor / memorie.Modelul LogP33Poza parca e ceruta de prof .. ai putea sa ii dai un pic de "stralucire" + trebuie coborat textul si micsorata imaginea care ajunge pana la titlu.Exemplu - Difuzarea unei valori (1)P0P4P2P6P1P5P3P746810121416182022242628302Timp (uniti de timp)ProcesoareOverhead TgapOverhead ROverhead TP0 -> P1: 2u = OVERHEAD trimitere P0; 6u = LATEN; 2u = OVERHEAD primire P1Dup ce P0 trimite, sunt 2u pentru GAP dintre dou trimiteri succesive. Apoi se reia procesul.35Pentru modelul LogP, fiecare proces transmite imediat ce are o valoare.Timpul total este de 24 de uniti.

Exemplu - Difuzarea unei valori (2)TIMP0P010P114P618P222P420P32424P7P5Drum P0 P1Overhead transmitere: 2 unitiLaten: 6 unitiOverhead recepie: 2 unitiTOTAL: 10 uniti Am modificat acest slide i cel de dup pentru a pstra acelai tabel ca n prima animaie (aceeai ordine a procesoarelor) i a se evidenia mai bine diferenele dintre PRAM i LogP.NOT: consider c acest arbore ar fi mai bun DUP animaie, ca s se neleag mai bine.36P0P4P2P6P1P5P3P746810121416182022242628302Timp (uniti de timp)ProcesoareComunicarea prin mesajeComunicarea asincron prin mesajeComunicarea sincron prin mesajeInstruciuni de comunicare cu gardComplexitatea algoritmilor distribuiiModelul FosterModelul LogPSumarntrebri?