Równoległe algorytmy sortowania. Krzysztof Banaś Obliczenia równoległe 1

Podobne dokumenty
Algorytmy sortujące 1

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Numeryczna algebra liniowa

Sortowanie w czasie liniowym

Algorytmy i Struktury Danych, 2. ćwiczenia

Wydajność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Operacje grupowego przesyłania komunikatów. Krzysztof Banaś Obliczenia równoległe 1

Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa

Sortowanie - wybrane algorytmy

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Algorytmy i Struktury Danych, 2. ćwiczenia

Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Równoległość i współbieżność

Równoległość i współbieżność

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Programowanie w VB Proste algorytmy sortowania

Analiza efektywności przetwarzania współbieżnego

Podstawy Informatyki. Sprawność algorytmów

Algorytm selekcji Hoare a. Łukasz Miemus

Matematyczne Podstawy Informatyki

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych

np. dla p=1 mamy T1(N) N/2 średni czas chybionego wyszukiwania z prawdopodobieństwem q:

Programowanie systemów z pamięcią wspólną specyfikacja OpenMP. Krzysztof Banaś Obliczenia równoległe 1

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Numeryczna algebra liniowa. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Strategia "dziel i zwyciężaj"

Algorytmy i Struktury Danych.

Sortowanie przez scalanie

Zaawansowane algorytmy i struktury danych

Analiza algorytmów zadania podstawowe

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Sortowanie bąbelkowe

PODSTAWY INFORMATYKI wykład 5.

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Elementy składowe: Przenośność oprogramowania Model SPMD Szczegółowe wersje (bindings) dla różnych języków programowania

Jeszcze o algorytmach

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Operacje grupowego przesyłania komunikatów

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

PODSTAWY INFORMATYKI wykład 10.

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Programowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1

KOPCE KOLEJKI PRIORYTETOWE - PRZYPOMNIENIE KOPCE WYSOKOŚĆ KOPCA KOPCE I KOLEJKI PRIORYTETOWE PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Wprowadzenie do OpenMP

Programowanie współbieżne Wstęp do obliczeń równoległych. Rafał Skinderowicz

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Podstawy programowania. Przykłady algorytmów Cz. 2 Sortowanie

INFORMATYKA SORTOWANIE DANYCH.

Programowanie równoległe

Transformata Fouriera. Sylwia Kołoda Magdalena Pacek Krzysztof Kolago

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1

Struktury Danych i Złożoność Obliczeniowa

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Informatyka A. Algorytmy

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE. Mnożenie macierzy kwadratowych metodą klasyczną oraz blokową z wykorzystaniem OpenMP.

[12] Metody projektowania algorytmów (dziel i rządź, programowanie dynamiczne i algorytmy zachłanne).

Sortowanie zewnętrzne

Algorytmy sortujące i wyszukujące

Laboratorium nr 7 Sortowanie

Przykładowe sprawozdanie. Jan Pustelnik

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

Problemy porządkowe zadania

SQL SERVER 2012 i nie tylko:

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Task Parallel Library

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Programowanie współbieżne... (2)

Źródła. N.Wirth Algorithms and Data Structures, 1985 D.E.Knuth The Art of Computer Programming. Vol. 3, 1973

Laboratoria nr 1. Sortowanie

Zaawansowane algorytmy i struktury danych

Luty 2001 Algorytmy (4) 2000/2001

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

WSTĘP DO INFORMATYKI WPROWADZENIE DO ALGORYTMIKI

9. Dyskretna transformata Fouriera algorytm FFT

PROJEKT 3 PROGRAMOWANIE RÓWNOLEGŁE. K. Górzyński (89744), D. Kosiorowski (89762) Informatyka, grupa dziekańska I3

Wstęp. Przetwarzanie równoległe. Krzysztof Banaś Obliczenia równoległe 1

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

Programowanie procesorów graficznych GPGPU

3URJUDPRZDQLHZVSyáELH*QHZVWS

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Zasady analizy algorytmów

Informatyka 1. Złożoność obliczeniowa

Programowanie współbieżne Wykład 2. Iwona Kochańska

Transkrypt:

Równoległe algorytmy sortowania Krzysztof Banaś Obliczenia równoległe 1

Algorytmy sortowania Algorytmy sortowania dzielą się na wewnętrzne (bez użycia pamięci dyskowej) zewnętrzne (dla danych nie mieszczących się w pamięci operacyjnej) Innym podziałem algorytmów sortowania jest wyróżnienie algorytmów opartych wyłącznie na porównywaniu elementów optymalna złożoność obliczeniowa Ө(n log n) algorytmów wykorzystujących dodatkową wiedzę o elementach (np. zakres wielkości) optymalna złożoność obliczeniowa Ө(n) Krzysztof Banaś Obliczenia równoległe 2

Sortowanie szybkie Sortowanie szybkie jest jednym z najpopularniejszych algorytmów sortowania ze względu na: optymalną złożoność oczekiwaną Ө(n log n) prostotę małe wymagania pamięci (sortowanie w miejscu) Sortowanie szybkie wykorzystuje strategię dziel i rządź Zrównoleglenie sortowania szybkiego jest niezwykle łatwe Krzysztof Banaś Obliczenia równoległe 3

Sortowanie szybkie wersja równoległa OpenMP void qs(int *x, int l, int h) { } int newl[2], newh[2], i, m; m = podziel(x,l,h); newl[0] = l; newh[0] = m-1; newl[1] = m ; newh[1] = h; #pragma omp parallel { #pragma omp for nowait for (i = 0; i < 2; i++) qs(x, newl[i], newh[i]); } Krzysztof Banaś Obliczenia równoległe 4

Równoległe sortowanie szybkie Analiza złożoności obliczeniowej pokazuje, że wykonanie równoległe niewiele poprawia czas realizacji algorytmu: T sekw (n) = 2T sekw (n/2) + Ө(n) = Ө(nlogn) T p (n,n) = T p (n/2,1) + Ө(n) = Ө(n) Kluczem do zwiększenia wydajności równoległej jest zrównoleglenie procedury podziel Istnieją algorytmy, które dla p istotnie mniejszych od n potrafią uzyskać oczekiwaną złożoność wykonania równoległego równą T p (n,p) = Ө( n/p log(n/p) ) Pozostaje problem złożoności pesymistycznej, której prawdopodobieństwo rośnie przy realizacji równoległej Krzysztof Banaś Obliczenia równoległe 5

Równoległe sortowanie bąbelkowe Sortowanie bąbelkowe złożoność obliczeniowa Ө(n2 ) Sekwencja operacji zamiany dwóch sąsiadujących elementów (operacja porównaj zamień, compareexchange) sekwencja jest nieusuwalnie sekwencyjna Warianty algorytmu, o wyższej złożoności obliczeniowej (także Ө(n 2 )) dające się łatwo zrównoleglić Sortowanie nieparzyste parzyste (odd even transposition) zrównoleglenie fazy zamiany operacja porównaj zamień zamienia się w operację porównajrozdziel (compare split) Krzysztof Banaś Obliczenia równoległe 6

Sortowanie nieparzyste parzyste nlocal = n/p; qsort(data, nlocal, sizeof(int), IncOrder); // lokalne sortowanie if (id % 2 == 0) {oddrank = id-1; evenrank = id+1; } else { oddrank = id+1; evenrank = id-1; } if((oddrank==-1) (oddrank==p)) oddrank=mpi_proc_null; if((evenrank==-1) (evenrank==p))evenrank=mpi_proc_null; for(i=0; i<p-1; i++) { if (i%2 ==1) { /* faza nieparzysta */ MPI_Sendrecv( data, nlocal, MPI_INT, oddrank, 1, rdata, nlocal, MPI_INT, oddrank, MPI_COMM_WORLD, &status); } else { /* faza parzysta */ MPI_Sendrecv( data, nlocal, MPI_INT, evenrank, 1, rdata, nlocal, MPI_INT, evenrank, MPI_COMM_WORLD, &status); } CompareSplit(nlocal, data, rdata, wspace); } Krzysztof Banaś Obliczenia równoległe 7

Sortowanie nieparzyste parzyste Złożoność równoległa sortowania nieparzyste parzyste T p (n,p) = Ө( n/p log(n/p) ) + Ө( n ) p faz, ponieważ w jednej fazie element może przesunąć się tylko o jedną pozycję warianty algorytmu, które starają się zmniejszyć liczbę faz, redukując oczekiwaną złożoność algorytmu równoległego do standardowej wartości (dla p < n ) T p (n,p) = Ө( n/p log(n/p) ) Krzysztof Banaś Obliczenia równoległe 8

Sortowanie kubełkowe Sortowanie kubełkowe elementy rozłożone równomiernie w znanym przedziale rozdzielenie wszystkich elementów do kubełków i posortowanie wewnątrz kubełków czas działania sekwencyjnego dla m kubełków Tsekw(n,m) = Ө( n log(n/m) ) dla osiągnięcia optymalnej złożoności liczba kubełków powinna być rzędu liczby elementów Krzysztof Banaś Obliczenia równoległe 9

Sortowanie kubełkowe Zrównoleglenie algorytmu przydzielenie każdego kubełka innemu procesorowi W pierwszej fazie procesory sortują przydzielone sobie dane, w drugiej przesyłają do odpowiednich kubełków (procesorów), w trzeciej sortują ostatecznie w kubełkach Czas realizacji równoległej w przypadku równomiernego rozłożenia elementów w kubełkach T p (n,p) = Ө( n/p log(n/p) ) Założenie równomiernego rozkładu może nie być realistyczne, można wtedy zmodyfikować algorytm, tak aby podział na kubełki pozostał optymalny (tzw. algorytm sortowania próbkowego, sample sort) Krzysztof Banaś Obliczenia równoległe 10