1 / 31

Algoritmi paraleli pentru grafuri

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

mostyn
Download Presentation

Algoritmi paraleli pentru grafuri

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algoritmi paraleli pentru grafuri

  2. 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

  3. Algoritmul lui Prim - secvential Din: [Grama,Gupta,Kumar&Karypis]

  4. Din: [Grama,Gupta,Kumar&Karypis]

  5. 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.

  6. Din: [Grama,Gupta,Kumar&Karypis]

  7. Algoritmul lui Prim – paralel: Evaluarea performantelor • 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).

  8. Algoritmul lui Dijkstra - secvential Din: [Grama,Gupta,Kumar&Karypis]

  9. 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

  10. 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

  11. 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

  12. Algoritmul lui DijkstraSource Parallel • Fiecare dintre cele n probleme de drumuri minime cu origine unica este rezolvata in paralel => se pot folosi pana la n2procesoare • 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)

  13. 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).

  14. Algoritmul lui Floyd - secvential Din: [Grama,Gupta,Kumar&Karypis]

  15. 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]

  16. Algoritmul lui Floyd – Paralel, 2D • 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 Din: [Grama,Gupta,Kumar&Karypis]

  17. Algoritmul lui Floyd – Paralel, 2D Din: [Grama,Gupta,Kumar&Karypis]

  18. Algoritmul lui Floyd – Paralel, 2D Evaluarea performantelor • In fiecare iteratie, procesele de pe linia k si coloanak 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:

  19. Algoritmul lui Floyd – Paralel, 2D Evaluarea performantelor • 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

  20. Algoritmul lui Floyd – 2D Pipeline • 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

  21. Din: [Grama,Gupta,Kumar&Karypis]

  22. Exemplu pipeline

  23. Exemplu pipeline

  24. Algoritmul lui Floyd – Paralel Pipeline • 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)

  25. Algoritmul lui Floyd – Paralel Pipeline • Timpul de calcul paralel: • Cost-optimal pentru O(n2) procesoare

  26. Comparatie intre metodele de determinare in paralel a drumurilor minime corespunzatoare tuturor perechilor de noduri Din: [Grama,Gupta,Kumar&Karypis]

  27. Maximal Independent Set 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 Din: [Grama,Gupta,Kumar&Karypis]

  28. Determinarea MIS Algoritm secvential: • Initializeaza MIS cu multimea vida, initializeaza multimea nodurilor candidat C cu multimea nodurilor grafului • Adauga un nod v din C la MIS • Sterge toate nodurile adiacente lui v din C • 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

  29. Determinarea MIS • Algoritm secvential paralelizabil: utilizeaza tehnica randomizarii pentru cresterea potentialului de concurenta (algoritmul lui Luby de colorare a grafurilor) • Initializeaza MIS cu multimea vida, initializeaza multimea nodurilor candidat C cu multimea nodurilor grafului • Genereaza si atribuie numere aleatoare unice fiecarui nod din C • Adauga la MIS toate nodurile v din C care au numarul aleator mai mic decat numarul tuturor vecinilor lor • Sterge din C toate nodurile adiacente nodurilor v trecute in MIS la pasul 3 • 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.

  30. Din: [Grama,Gupta,Kumar&Karypis]

  31. 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

More Related