SlideShare a Scribd company logo
1 of 13
Download to read offline
Parallel QuickSort
Sylwia Dzikiewicz
Marta Leniewska
Mikołaj Olszewski
Marcin Woch
Michał Żelazowski
Podstawowe założenia
 MPI

|| PVM
 C++ || C
 Parametry:
• N liczb całkowitych Int32
• p komputerów = p procesów, gdzie p ≅ 12
Ogólny schemat
 Etap

0 – sprawy organizacyjne
 Etapy 1,...,m-1
–
–
–

Przygotowanie do podziału grupy procesorów według
elementu dzielącego
Procesor – nadzorca grupy określa podział
Wykonanie podziału  2 podgrupy

 Etap
–
–

m – zakończenie

Grupy złożone z pojedyńczych procesorów
Sortowanie sekwencyjne elementów procesów
Etap 0 – sprawy organizacyjne
 Proces

nr. 1 (pierwszy uruchomiony) – master
 Rola mastera:
–
–
–
–

Przyjęcie zgłoszeń pozostałych procesów
Początkowe ponumerowanie pozostałych procesów
Wysłanie odpowiednich porcji danych do procesów 2,
3, ..., p
Funkcja pierwszego nadzorcy (dla całości danych)
Przygotowanie do podziału – etap k
dla k<m
 Wybranie

przez nadzorcę elementu dzielącego
– mediana z 5 elementów
 Wysłanie przez nadzorcę elementu dzielącego
do wszystkich procesów w swojej grupie
 Każdy z procesów w grupie tworzy dwa zbiory:
- elementy mniejsze (od elementu dzielącego)
- elementy większe lub równe
 Każdy z procesów w grupie informuje
nadzorcę o liczności obu zbiorów (ozn. Lm, Lw)
Określenie podziału na etapie k, dla
k<m


Sortowanie przez nadzorcę numerów procesów po
liczbie elementów w zbiorach o elementach mniejszych
od elementu dzielącego (czyli po Lm)



Wyliczenie przez nadzorcę numeru procesu, w którym
znajdzie się element dzielący
Wysłanie przez nadzorcę do procesów w grupie:
- nowego numeru procesu (kolejność po sortowaniu)
- numerów procesów docelowych dla mniejszego zbioru
danych (z uwzględnieniem liczby elementów do
przesłania każdemu z nich)


Podział na etapie k – ilustracja






Po sortowaniu (proces reprezentuje para (Lm,Lw)):
(8,2) (7,3) (5,5) (3,7) (1,9)
Element dzielący znajdzie się w procesie nr. 3, bo
(8+7+5+3+1)/10 = 2.4 ≅ 2
Przesyłanie danych (bez elementu dzielącego):
Nr. 3
5 elementów Nr. 2
Nr. 4
3 elementy
Nr. 1
Nr. 5
1 element
Nr. 1
Nr. 2
3 elementy
Nr. 3
Nr. 1
2 elementy
Nr. 4
Kryteria przy przesyłaniu danych...








Jak najmniejsza ilość przesłań
Jak najkrótsza wiadomość
Jak najbardziej równomierne rozłożenie elementów na
procesy w obu podgrupach (procesy o numerach
mniejszych od numeru procesu z elementem dzielącym,
i reszta)
Uwzględnienie konieczności przesłania elementu
dzielącego
Wzór ???
Podział na etapie k dla k<m
wykonanie
 Dla
–
–

-

każdego procesu grupy:

Rozesłanie „zbędnych” elementów do odpowiednich
procesów
Przyjęcie dodatkowych danych w sposób
asynchroniczny

 Wybranie

nadzorców dla 2 nowych grup –
procesy o najmniejszych numerach w
podgrupach
 I jeszcze raz, czyli etap (k+1)
Etap m – zakończenie
p

grup (czyli 1 grupa = 1 proces) względnie
uporządkowanych
 Sortowanie elementów każdego procesu
algorytmem QuickSort
 Poniżej CQS = 50 elementów zmiana
sortowania na InsertionSort
 Zapisanie danych każdego procesu w pliku
<nr>.txt, gdzie <nr> jest aktualnym numerem
procesu
Struktury danych
 Tablica

elementów
 Lista numerów procesów
 Komunikaty
Komunikaty
 GOTOWY
 NUMER
 DANE
 NADZORCA[numery

procesów w grupie]
 LICZBA[mniejsze, większe]
 PRZEKAZ[procesy, liczby elementów]
 SORTUJ
 KONIEC
Parallel QuickSort

Rulez!

More Related Content

Viewers also liked

Programowanie Komponentowe: #E Podsumowanie
Programowanie Komponentowe: #E PodsumowanieProgramowanie Komponentowe: #E Podsumowanie
Programowanie Komponentowe: #E PodsumowanieMikołaj Olszewski
 
Programowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do SpringaProgramowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do SpringaMikołaj Olszewski
 
Programowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springaProgramowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springaMikołaj Olszewski
 
Programowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java BeansProgramowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java BeansMikołaj Olszewski
 
Kwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikoweKwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikoweMikołaj Olszewski
 
Optyczne solitony przestrzenne
Optyczne solitony przestrzenneOptyczne solitony przestrzenne
Optyczne solitony przestrzenneMikołaj Olszewski
 
Programowanie Komponentowe: #1 Wprowadzenie
Programowanie Komponentowe: #1 WprowadzenieProgramowanie Komponentowe: #1 Wprowadzenie
Programowanie Komponentowe: #1 WprowadzenieMikołaj Olszewski
 

Viewers also liked (10)

Programowanie Komponentowe: #E Podsumowanie
Programowanie Komponentowe: #E PodsumowanieProgramowanie Komponentowe: #E Podsumowanie
Programowanie Komponentowe: #E Podsumowanie
 
Programowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do SpringaProgramowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do Springa
 
Programowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springaProgramowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springa
 
Programowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java BeansProgramowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java Beans
 
Kwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikoweKwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikowe
 
Optyczne solitony przestrzenne
Optyczne solitony przestrzenneOptyczne solitony przestrzenne
Optyczne solitony przestrzenne
 
Programowanie Komponentowe: #1 Wprowadzenie
Programowanie Komponentowe: #1 WprowadzenieProgramowanie Komponentowe: #1 Wprowadzenie
Programowanie Komponentowe: #1 Wprowadzenie
 
Architektura heksagonalna
Architektura heksagonalnaArchitektura heksagonalna
Architektura heksagonalna
 
Lokalne sieci światłowodowe
Lokalne sieci światłowodoweLokalne sieci światłowodowe
Lokalne sieci światłowodowe
 
Optyka ciekłych kryształów
Optyka ciekłych kryształówOptyka ciekłych kryształów
Optyka ciekłych kryształów
 

More from Mikołaj Olszewski

Optoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronoweOptoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronoweMikołaj Olszewski
 
Metody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowychMetody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowychMikołaj Olszewski
 
Test wyszukiwarek internetowych
Test wyszukiwarek internetowychTest wyszukiwarek internetowych
Test wyszukiwarek internetowychMikołaj Olszewski
 
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NETProgramowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NETMikołaj Olszewski
 
Programowanie komponentowe: #4 Podstawy połączeń komponentów
Programowanie komponentowe: #4 Podstawy połączeń komponentówProgramowanie komponentowe: #4 Podstawy połączeń komponentów
Programowanie komponentowe: #4 Podstawy połączeń komponentówMikołaj Olszewski
 
Programowanie Komponentowe: #3 Podstawy programowania komponentów
Programowanie Komponentowe: #3 Podstawy programowania komponentówProgramowanie Komponentowe: #3 Podstawy programowania komponentów
Programowanie Komponentowe: #3 Podstawy programowania komponentówMikołaj Olszewski
 
Programowanie Komponentowe: #2 Metody opisu komponentów
Programowanie Komponentowe: #2 Metody opisu komponentówProgramowanie Komponentowe: #2 Metody opisu komponentów
Programowanie Komponentowe: #2 Metody opisu komponentówMikołaj Olszewski
 

More from Mikołaj Olszewski (14)

Optoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronoweOptoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronowe
 
Swiatłowodowy czujnik prądu
Swiatłowodowy czujnik prąduSwiatłowodowy czujnik prądu
Swiatłowodowy czujnik prądu
 
Metody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowychMetody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowych
 
Parallel quicksort cz. 1
Parallel quicksort cz. 1Parallel quicksort cz. 1
Parallel quicksort cz. 1
 
Maszyna Turinga
Maszyna TuringaMaszyna Turinga
Maszyna Turinga
 
Planowanie działań cz. 2
Planowanie działań cz. 2Planowanie działań cz. 2
Planowanie działań cz. 2
 
Planowanie działań cz. 1
Planowanie działań cz. 1Planowanie działań cz. 1
Planowanie działań cz. 1
 
Model hierarchiczny
Model hierarchicznyModel hierarchiczny
Model hierarchiczny
 
Komputer genetyczny
Komputer genetycznyKomputer genetyczny
Komputer genetyczny
 
Test wyszukiwarek internetowych
Test wyszukiwarek internetowychTest wyszukiwarek internetowych
Test wyszukiwarek internetowych
 
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NETProgramowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
Programowanie Komponentowe: #5 Wprowadzenie do środowiska .NET
 
Programowanie komponentowe: #4 Podstawy połączeń komponentów
Programowanie komponentowe: #4 Podstawy połączeń komponentówProgramowanie komponentowe: #4 Podstawy połączeń komponentów
Programowanie komponentowe: #4 Podstawy połączeń komponentów
 
Programowanie Komponentowe: #3 Podstawy programowania komponentów
Programowanie Komponentowe: #3 Podstawy programowania komponentówProgramowanie Komponentowe: #3 Podstawy programowania komponentów
Programowanie Komponentowe: #3 Podstawy programowania komponentów
 
Programowanie Komponentowe: #2 Metody opisu komponentów
Programowanie Komponentowe: #2 Metody opisu komponentówProgramowanie Komponentowe: #2 Metody opisu komponentów
Programowanie Komponentowe: #2 Metody opisu komponentów
 

Parallel quicksort cz. 2

  • 1. Parallel QuickSort Sylwia Dzikiewicz Marta Leniewska Mikołaj Olszewski Marcin Woch Michał Żelazowski
  • 2. Podstawowe założenia  MPI || PVM  C++ || C  Parametry: • N liczb całkowitych Int32 • p komputerów = p procesów, gdzie p ≅ 12
  • 3. Ogólny schemat  Etap 0 – sprawy organizacyjne  Etapy 1,...,m-1 – – – Przygotowanie do podziału grupy procesorów według elementu dzielącego Procesor – nadzorca grupy określa podział Wykonanie podziału  2 podgrupy  Etap – – m – zakończenie Grupy złożone z pojedyńczych procesorów Sortowanie sekwencyjne elementów procesów
  • 4. Etap 0 – sprawy organizacyjne  Proces nr. 1 (pierwszy uruchomiony) – master  Rola mastera: – – – – Przyjęcie zgłoszeń pozostałych procesów Początkowe ponumerowanie pozostałych procesów Wysłanie odpowiednich porcji danych do procesów 2, 3, ..., p Funkcja pierwszego nadzorcy (dla całości danych)
  • 5. Przygotowanie do podziału – etap k dla k<m  Wybranie przez nadzorcę elementu dzielącego – mediana z 5 elementów  Wysłanie przez nadzorcę elementu dzielącego do wszystkich procesów w swojej grupie  Każdy z procesów w grupie tworzy dwa zbiory: - elementy mniejsze (od elementu dzielącego) - elementy większe lub równe  Każdy z procesów w grupie informuje nadzorcę o liczności obu zbiorów (ozn. Lm, Lw)
  • 6. Określenie podziału na etapie k, dla k<m  Sortowanie przez nadzorcę numerów procesów po liczbie elementów w zbiorach o elementach mniejszych od elementu dzielącego (czyli po Lm)  Wyliczenie przez nadzorcę numeru procesu, w którym znajdzie się element dzielący Wysłanie przez nadzorcę do procesów w grupie: - nowego numeru procesu (kolejność po sortowaniu) - numerów procesów docelowych dla mniejszego zbioru danych (z uwzględnieniem liczby elementów do przesłania każdemu z nich) 
  • 7. Podział na etapie k – ilustracja    Po sortowaniu (proces reprezentuje para (Lm,Lw)): (8,2) (7,3) (5,5) (3,7) (1,9) Element dzielący znajdzie się w procesie nr. 3, bo (8+7+5+3+1)/10 = 2.4 ≅ 2 Przesyłanie danych (bez elementu dzielącego): Nr. 3 5 elementów Nr. 2 Nr. 4 3 elementy Nr. 1 Nr. 5 1 element Nr. 1 Nr. 2 3 elementy Nr. 3 Nr. 1 2 elementy Nr. 4
  • 8. Kryteria przy przesyłaniu danych...      Jak najmniejsza ilość przesłań Jak najkrótsza wiadomość Jak najbardziej równomierne rozłożenie elementów na procesy w obu podgrupach (procesy o numerach mniejszych od numeru procesu z elementem dzielącym, i reszta) Uwzględnienie konieczności przesłania elementu dzielącego Wzór ???
  • 9. Podział na etapie k dla k<m wykonanie  Dla – – - każdego procesu grupy: Rozesłanie „zbędnych” elementów do odpowiednich procesów Przyjęcie dodatkowych danych w sposób asynchroniczny  Wybranie nadzorców dla 2 nowych grup – procesy o najmniejszych numerach w podgrupach  I jeszcze raz, czyli etap (k+1)
  • 10. Etap m – zakończenie p grup (czyli 1 grupa = 1 proces) względnie uporządkowanych  Sortowanie elementów każdego procesu algorytmem QuickSort  Poniżej CQS = 50 elementów zmiana sortowania na InsertionSort  Zapisanie danych każdego procesu w pliku <nr>.txt, gdzie <nr> jest aktualnym numerem procesu
  • 11. Struktury danych  Tablica elementów  Lista numerów procesów  Komunikaty
  • 12. Komunikaty  GOTOWY  NUMER  DANE  NADZORCA[numery procesów w grupie]  LICZBA[mniejsze, większe]  PRZEKAZ[procesy, liczby elementów]  SORTUJ  KONIEC