Algoritmi paraleli pentru grafuri
description
Transcript of Algoritmi paraleli pentru grafuri
![Page 1: Algoritmi paraleli pentru grafuri](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/1.jpg)
Algoritmi paraleli pentru grafuri
![Page 2: Algoritmi paraleli pentru grafuri](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/2.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/3.jpg)
Algoritmul lui Prim - secvential
Din: [Grama,Gupta,Kumar&Karypis]
![Page 4: Algoritmi paraleli pentru grafuri](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/4.jpg)
Din: [Grama,Gupta,Kumar&Karypis]
![Page 5: Algoritmi paraleli pentru grafuri](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/5.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/6.jpg)
Din: [Grama,Gupta,Kumar&Karypis]
![Page 7: Algoritmi paraleli pentru grafuri](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/7.jpg)
• 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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/8.jpg)
Algoritmul lui Dijkstra - secvential
Din: [Grama,Gupta,Kumar&Karypis]
![Page 9: Algoritmi paraleli pentru grafuri](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/9.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/10.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/11.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/12.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/13.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/14.jpg)
Algoritmul lui Floyd - secvential
Din: [Grama,Gupta,Kumar&Karypis]
![Page 15: Algoritmi paraleli pentru grafuri](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/15.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/16.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/17.jpg)
Din: [Grama,Gupta,Kumar&Karypis]
Algoritmul lui Floyd – Paralel, 2D
![Page 18: Algoritmi paraleli pentru grafuri](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/18.jpg)
• 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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/19.jpg)
• 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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/20.jpg)
• 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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/21.jpg)
Din: [Grama,Gupta,Kumar&Karypis]
![Page 22: Algoritmi paraleli pentru grafuri](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/22.jpg)
Incepe iteratia K=1
Incepe iteratia K=2
Exemplu pipeline
![Page 23: Algoritmi paraleli pentru grafuri](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/23.jpg)
Exemplu pipeline
Incepe iteratia K=3
![Page 24: Algoritmi paraleli pentru grafuri](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/24.jpg)
• 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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/25.jpg)
• Timpul de calcul paralel:
• Cost-optimal pentru O(n2) procesoare
Algoritmul lui Floyd – Paralel Pipeline
![Page 26: Algoritmi paraleli pentru grafuri](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/26.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/27.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/28.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/29.jpg)
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](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/30.jpg)
Din: [Grama,Gupta,Kumar&Karypis]
![Page 31: Algoritmi paraleli pentru grafuri](https://reader035.fdocuments.net/reader035/viewer/2022081417/56814881550346895db58e9b/html5/thumbnails/31.jpg)
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