Mergesort Paralel

Page 1

MERGESORT PARALEL T.G. Structuri Multiprocesor 10. 01. 2012


Prezentarea problemei MergeSort: algoritm de tip divide et impera, de complexitate O(n log n) pentru sortarea unui vector  Pasi: 7 3 6 12 

7 3 7

6 12 3

6

3 7

12 6 12

3 6 7 12 MERGESORT PARALEL

2


Paralelizare in MPI Numar fix de noduri, dat de la tastatura  Fiecare nod (thread) se poate ocupa de cate un subsir al setului de baza • adancimea arborelui este fixa 1000 elem • comunicatia prin mesaje: de sus NOD 0 in jos la transmiterea datelor & 500 elem 500 elem de jos in sus la transmiterea NOD 1 NOD 2 rezultatelor 250 elem 250 elem 250 elem 250 elem • nodurile-frunza: aplica NOD 3 NOD 4 NOD 5 NOD 6 quicksort pentru a-si sorta sau: elementele 

1000 elem

NOD 0 500 elem

500 elem

NOD 0 250 elem

NOD 0

NOD 2 250 elem

NOD 1

250 elem

NOD 2

250 elem

• 4 noduri in loc de 7 • fiecare nod realizeaza o munca aproximativ egala

NOD 3 MERGESORT PARALEL

3


Paralelizare in OpenMP    

Numar variabil de thread-uri, in functie de cat este nevoie Fiecare thread lucreaza pe propriul subsir din sir, interclasand cele doua jumatati (sortate) ale acestuia Memorie partajata: nu mai este nevoie de transmiterea datelor intre fire de executie; pe un “arbore” se porneste de jos in sus Fara quicksort! 8 elem Thread 0 4 elem

4 elem

Thread 0 2 elem

Thread 1 2 elem

Thread 0

Thread 1

2 elem

Thread 2

2 elem

Thread 3

14 426 6317 7471 6 237 327 778 88 Thrd 0 ThrdThrd 1 Thrd 0 2 Thrd 3

Thrd 0

Thrd 1

MERGESORT PARALEL

4


Paralelizare in pthread Algoritm asemanator OpenMP  Numarul initial de thread-uri este 2^n (cea mai mica putere a lui 2 >= n) si ajunge in final la 1  Fork/join pentru lansarea si reunirea thread-urilor 

MERGESORT PARALEL

5


MPI

Rezultate OpenMP

3.8 3.7 3.6 3.5 3.4

100 500 1000 10000 elemente elemente elemente elemente

2 1.5 1 0.5 0

pthread 3 2 1 0

MERGESORT PARALEL

6


Rezultate comparative 4 3.5 3 2.5

100 500 1000 10000

2 1.5 1 0.5

0 MPI

OpenMP

pthread

MERGESORT PARALEL

7


Concluzii Timpul rularii in MPI cu un numar fix de 100 noduri se mentine constant, in jur de 3 secunde  OpenMP si pthread s-au dovedit a fi mult mai rapide in fiecare caz  OpenMP este mai rapid decat pthread: este modelul de programare cu cele mai bune rezultate 

MERGESORT PARALEL

8


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.