Download - Algoritmi paraleli pentru grafuri

Transcript
Page 1: Algoritmi paraleli  pentru grafuri

Algoritmi paraleli pentru grafuri

Page 2: Algoritmi paraleli  pentru grafuri

Algoritmi paraleli pentru grafuri

• Arbori de acoperire minimi– Algoritmul lui Prim

• Drumuri minime cu origine comuna– Algoritmul lui Dijkstra

• Drumurile minime corespunzatoare tuturor perechilor de noduri– Algoritmul lui Dijkstra– Algoritmul lui Floyd

• Maximal independent set– Algoritmul lui Luby

Page 3: Algoritmi paraleli  pentru grafuri

Algoritmul lui Prim - secvential

Din: [Grama,Gupta,Kumar&Karypis]

Page 4: Algoritmi paraleli  pentru grafuri

Din: [Grama,Gupta,Kumar&Karypis]

Page 5: Algoritmi paraleli  pentru grafuri

Algoritmul lui Prim - paralel• Algoritmul contine un ciclu exterior cu n iteratii (liniile 8-14) .

– Fiecare iteratie adauga un nou nod la arborele de acoperire minim. – Aceste iteratii nu pot fi executate in paralel – nu se poate selecta mai mult de un

nod odata, pentru ca valorile d[v] se actualizeaza de fiecare data cand un nou nod u este adaugat la arborele de acoperire

• Se paralelizeaza ciclul interior • p procese, n noduri. => se partitioneaza nodurile, fiecare procesor

primeste n/p noduri • In fiecare pas, fiecare procesor selecteaza un minim local din segmentul d

pe care il detine, apoi il transmite la P0 unde se calculeaza u ca fiind minimul global dintre acestea (all-to-one reduction)

• Nodul u se adauga la arbore, se transmite alegerea prin broadcast la toate procesoarele. Fiecare procesor isi actualizeaza distantele d[v], tinand cont de nodul u adaugat.

• Procesorul care detine nodul v trebuie sa acceseze ponderea arcului (u,v) => fiecare proces detine coloanele din matricea de adiacenta corespunzatoare setului de noduri pe care le detine

• Matricea de adiacente se partitioneaza 1-D pe coloane la fel si vectorul d.

Page 6: Algoritmi paraleli  pentru grafuri

Din: [Grama,Gupta,Kumar&Karypis]

Page 7: Algoritmi paraleli  pentru grafuri

• Timpul pentru selectarea minimului: O(n/p + log p).

• Timpul pentru o operatie de broadcast : O(log p).

• Timpul pentru actualizarea locala a vectorului d: O(n/p).

• Timpul paralel pentru o iteratie (un nod adaugat la arbore): O(n/p + log p).

• Timpul total paralel: O(n2/p + n log p).

Algoritmul lui Prim – paralel: Evaluarea performantelor

Page 8: Algoritmi paraleli  pentru grafuri

Algoritmul lui Dijkstra - secvential

Din: [Grama,Gupta,Kumar&Karypis]

Page 9: Algoritmi paraleli  pentru grafuri

Algoritmul lui Dijkstra - paralel

• Similar cu algoritmul lui Prim in paralel• Matricea de adiacente este partitionata pe

blocuri 1D• Performanta paralela este identica cu cea

determinata la algoritmul lui Prim

Page 10: Algoritmi paraleli  pentru grafuri

Drumurile minime intre toate perechile de noduri

• Executa de n ori algoritmul lui Dijkstra de determinare a drumurilor minime cu origine comuna – cu fiecare nod ca sursa

• Complexitatea secventiala: O(n3). • Strategii de paralelizare:

– source partitioned (partitionare a surselor): Fiecare procesor executa o rulare a algoritmului lui Dijkstra-secvential, avand alt nod ca sursa

– source parallel(sursa in paralel): Fiecare nod e asignat unui set de procese si se utilizeaza formularea paralela a algoritmului lui Dijkstra

Page 11: Algoritmi paraleli  pentru grafuri

Algoritmul lui Dijkstra – Source Partitioned

• Utilizeaza n procesoare, fiecare procesor Pi gaseste drumurile minime de la nodul vi la toate celelalte noduri, executand algoritmul lui Dijkstra in forma secventiala.

• Presupune replicarea matricii de adiacente pe fiecare procesor

• Nu se fac comunicatii interprocese. • Timpul paralel: O(n2). • Algoritmul este cost-optimal: W=n*Tp=O(n3)• Dezavantaj: nu poate folosi mai mult de n procesoare

Page 12: Algoritmi paraleli  pentru grafuri

Algoritmul lui DijkstraSource Parallel

• Fiecare dintre cele n probleme de drumuri minime cu origine unica este rezolvata in paralel => se pot folosi pana la n2 procesoare

• Se utilizeaza p > n procesoare, fiecare problema de drumuri minime cu origine unica este rezolvata utilizand p/n procesoare

• Timpul paralel:

• Cost optimal daca p = O(n2/log n)

Page 13: Algoritmi paraleli  pentru grafuri

Algoritmul lui Floyd

Distanta minima intre nodurile i si j este fie arcul direct fie trece printr-un nod k:

Relatia trebuie calculata pentru toate perechile de noduri si pentru toti k = 1, n.

Complexitatea seriala W=O(n3).

Page 14: Algoritmi paraleli  pentru grafuri

Algoritmul lui Floyd - secvential

Din: [Grama,Gupta,Kumar&Karypis]

Page 15: Algoritmi paraleli  pentru grafuri

Algoritmul lui Floyd – Paralel, 2D

• Matrice D(k) este impartita in p blocuri de dimensiune (n / √p) x (n / √p). • Fiecare procesor actualizeaza partea sa din matrice in fiecare iteratie

Din: [Grama,Gupta,Kumar&Karypis]

Page 16: Algoritmi paraleli  pentru grafuri

Din: [Grama,Gupta,Kumar&Karypis]

• Pentru a calcula dl(,kr-1) procesorul Pi,j are nevoie de dl

(,kk-1) si dk

(,kr-1).

• In general, in iteratia k , fiecare din cele √p procese de pe linia k trimite valorile tuturor celor √p - 1 procese de pe coloana sa

• Similar, fiecare din cele √p procese de pe coloana k trimite valorile tuturor celor √p - 1 procese de pe aceeasi linie

Algoritmul lui Floyd – Paralel, 2D

Page 17: Algoritmi paraleli  pentru grafuri

Din: [Grama,Gupta,Kumar&Karypis]

Algoritmul lui Floyd – Paralel, 2D

Page 18: Algoritmi paraleli  pentru grafuri

• In fiecare iteratie, procesele de pe linia k si coloana k fac o operatie de one-to-all broadcast pe coloanele/liniile lor.

• Dimensiunea datelor difuzate m= n/√p elemente,• Timpul de comunicatie intr-o iteratie k: O((n log p)/ √p). • Calculele efectuate de un proces intr-o iteratie k:

Θ(n2/p). • Timpul de calcul paralel:

Algoritmul lui Floyd – Paralel, 2D Evaluarea performantelor

Page 19: Algoritmi paraleli  pentru grafuri

• Cost-optimal daca p=O(n2 / log2 n)

• Functia de izoeficienta: O(p1.5 log3 p).

• Algoritmul paralel poate fi imbunatatit daca se elimina sincronizarea dupa fiecare iteratie

Algoritmul lui Floyd – Paralel, 2D Evaluarea performantelor

Page 20: Algoritmi paraleli  pentru grafuri

• Se elimina sincronizarea din linia 7 a algoritmului. • Un proces incepe calculele la iteratia k dupa ce a terminat calculele

la iteratia (k-1) si a primit partile necesare din matricea Dk-1

• Procesul Pij in iteratia k:• daca a terminat calculele la iteratia (k-1) si are elemente de pe linia

k, trimite partea lui din matricea Dk-1 proceselor Pi-1,j si Pi+1,j (in loc de broadcast pe coloana, trimite numai la vecini)

• daca a terminat calculele la iteratia (k-1) si are elemente de pe coloana k, trimite partea lui din matricea Dk-1 proceselor Pi,j-1 si Pi,j+1 (in loc de broadcast pe linie, trimite numai la vecini)

• Daca au sosit date Dk-1 de pe linie, le transmite mai departe pe linie in partea opusa de unde au sosit

• Daca au sosit date Dk-1 de pe coloana, le transmite mai departe pe coloana in partea opusa de unde au sosit

Algoritmul lui Floyd – 2D Pipeline

Page 21: Algoritmi paraleli  pentru grafuri

Din: [Grama,Gupta,Kumar&Karypis]

Page 22: Algoritmi paraleli  pentru grafuri

Incepe iteratia K=1

Incepe iteratia K=2

Exemplu pipeline

Page 23: Algoritmi paraleli  pentru grafuri

Exemplu pipeline

Incepe iteratia K=3

Page 24: Algoritmi paraleli  pentru grafuri

• Iteratia k=1:– In fiecare pas:

• n/√p elemente de pe prima linie sunt trimise “in jos” de la un proces la altul• n/√p elemente de pe prima coloana sunt trimise “la dreapta” de la un proces

la altul• Acest tip de comunicatii dureaza O(n/√p).

– Dupa O(√p) pasi, procesul P√p ,√p primeste elementele de pe prima linie si prima coloana -> dupa un timp O(n)

• Pentru procesul P√p ,√p valorile urmatoarelor linii si coloane (urmatoarele k iteratii) sosesc la intervale de timp de Θ(n2/p)

• Procesul P√p ,√p termina calculele sale finale in timp Θ(n3/p) + Θ(n). • Cand procesul P√p ,√p termina iteratia k=(n-1), transmite segmentele

din linia si coloana n pe care le detine la celelalte procese. Acestea ajung la P0,0 in timp O(n)

Algoritmul lui Floyd – Paralel Pipeline

Page 25: Algoritmi paraleli  pentru grafuri

• Timpul de calcul paralel:

• Cost-optimal pentru O(n2) procesoare

Algoritmul lui Floyd – Paralel Pipeline

Page 26: Algoritmi paraleli  pentru grafuri

Comparatie intre metodele de determinare in paralel a drumurilor minime corespunzatoare tuturor

perechilor de noduri

Din: [Grama,Gupta,Kumar&Karypis]

Page 27: Algoritmi paraleli  pentru grafuri

Maximal Independent Set

Din: [Grama,Gupta,Kumar&Karypis]

Set independent de noduri: o multime de noduri in care nici o pereche de noduri nu este conectata de un arc

Set independent maximal (MIS): un set independent de noduri la care nu mai poate fi adaugat nici un alt nod fara a incalca principiul de independenta

Page 28: Algoritmi paraleli  pentru grafuri

Determinarea MIS

Algoritm secvential: 1. Initializeaza MIS cu multimea vida, initializeaza multimea

nodurilor candidat C cu multimea nodurilor grafului

2. Adauga un nod v din C la MIS

3. Sterge toate nodurile adiacente lui v din C

4. Repeta pasii 2-3 pana cand multimea nodurilor candidat C ajunge vida

• Algoritmul acesta este intrinsec serial !• Punctul slab din punct de vedere al

paralelizarii este pasul 2 – la o iteratie nu se poate trece mai mult de un nod din C in MIS

Page 29: Algoritmi paraleli  pentru grafuri

Determinarea MIS • Algoritm secvential paralelizabil: utilizeaza tehnica randomizarii

pentru cresterea potentialului de concurenta (algoritmul lui Luby de colorare a grafurilor)

1. Initializeaza MIS cu multimea vida, initializeaza multimea nodurilor candidat C cu multimea nodurilor grafului

2. Genereaza si atribuie numere aleatoare unice fiecarui nod din C3. Adauga la MIS toate nodurile v din C care au numarul aleator mai mic

decat numarul tuturor vecinilor lor4. Sterge din C toate nodurile adiacente nodurilor v trecute in MIS la pasul 35. Repeta pasii 2-4 pana cand multimea nodurilor candidat C ajunge vida

• Nodurile care sunt selectate la pasul 3 si incluse in MIS sunt intr-adevar independente: daca nodul v a fost selectat, inseamna ca are numarul aleator cel mai mic dintre vecinii sai => nici un vecin de care este conectat prin arc nu mai este selectat in cadrul aceluiasi pas

• In medie, algoritmul va face O(log n ) iteratii.

Page 30: Algoritmi paraleli  pentru grafuri

Din: [Grama,Gupta,Kumar&Karypis]

Page 31: Algoritmi paraleli  pentru grafuri

Determinarea MIS - paralel

• Paralelizarea: se partitioneaza multimea nodurilor candidat C la mai multe procese -> fiecare proces cauta in partitia sa noduri v care se trec la MIS.

• Implementarile difera: – Memorie comuna– Comunicare prin mesaje