11.07.2015 Views

Algorytmy równoległe - Instytut Sterowania i Systemów ...

Algorytmy równoległe - Instytut Sterowania i Systemów ...

Algorytmy równoległe - Instytut Sterowania i Systemów ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzie<strong>Algorytmy</strong> <strong>równoległe</strong>Osoba prowadząca wykład i ćwiczenia: dr inż. Marek Sawerwain<strong>Instytut</strong> <strong>Sterowania</strong> i <strong>Systemów</strong> InformatycznychUniwersytet Zielonogórskie-mail : M.Sawerwain@issi.uz.zgora.pltel. (praca) : 68 328 2321,pok. 328a A-2,ul. prof. Z.Szafrana 2,65-246 Zielona GóraOstatnia zmiana: 2 stycznia 2013V1.0 – 1/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieSpis treści1 WprowadzeniePlan wykładu2 <strong>Algorytmy</strong> <strong>równoległe</strong>Maszyna PRAMRodzaje dostępu do pamięciMetoda dziel i zwyciężajSymulacja CRCW za pomocą EREWTwierdzenia Brenta3 Sieci sortująceZasada zero-jedynkowaBitoniczna sieć sortującaSieć sortująca4 A za tydzień na wykładzieV1.0 – 2/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładziePlan wykładuPlan wykładu – spotkania tydzień po tygodniu(9) Gramatyki i automaty ze stosem(10) ⇒ <strong>Algorytmy</strong> <strong>równoległe</strong> ⇐(11) Klasy złożoności obliczeniowej(12) Pamięć logarytmiczna i wielomianowa(13) Problemy NP-zupełne(14) Wstęp do obliczeń kwantowych(15) Wybrane algorytmy kwantoweV1.0 – 4/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładziePlan wykładuPlan wykładu1 <strong>Algorytmy</strong> <strong>równoległe</strong>1 model PRAM2 dostęp do pamięci3 Fast-MAX, dziel i zwyciężaj4 symulacja CRCW za pomocą EREW5 twierdzenie Brenta2 Sieci sortujące1 komparator2 zasada zero-jedynkowa3 bitoniczna sieć sortująca4 siec sortująca5 sortowanie bitoniczne w języku CV1.0 – 5/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładziePlan wykładuMateriały wykorzystane podczas tworzenia tego wykładu, a także przydatnedo dalszych studiów:1 Ważniakowe materiały: z przedmiotu Złożoność obliczeniowa –http://wazniak.mimuw.edu.pl/,2 Materiały o sieciach sortujących: http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/networks/indexen.htm,3 Cormen T.H., Leiserson C.E., Rivest R.L.: Wprowadzenie doalgorytmów, WNT, 1997 (starsze i nowsze wydanie), rozdział oobliczeniach równoległych,4 Sztuka Programowania, Tom 3, Knuth Donald E., WydawnictwaNaukowo - Techniczne, 2002.5 <strong>Algorytmy</strong> i struktury danych, L. Banachowski, K. Diks, W. Rytter,Wydawnictwa Naukowo - Techniczne, 2006.V1.0 – 6/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzie<strong>Algorytmy</strong> <strong>równoległe</strong>Obecna technologia pozwala na stosowanie procesorów o taktowaniu około3.5 Ghz, w przypadku typowych rozwiązań klasy PC. Jedną z możliwościwzmocnienia wydajności danego systemu obliczeniowego jest zwiększenieliczby jednostek obliczeniowych, inaczej mówiąc nad jednym problememmoże pracować równolegle wiele procesorów. W efekcie od takiego rozwiązaniaoczekuje się iż:przyspieszenia obliczeń, zazwyczaj oczekuje się, aby czas działania byłfunkcją polilogarytmiczną zależną od rozmiaru wejścia,ograniczenia liczba procesorów do wielkości wielomianowej w zależnościrozmiaru danych wejściowych danych.V1.0 – 7/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieMaszyna PRAMMaszyna o dostępie swobodnym – RAMGłówne elementy maszyny RAM1 taśma wejściowa (LI ), z którejodczytywane są dane wejściowe,2 taśma wyjściowej (LO), gdzieumieszczane są wyniki,Lista wejściowa. . .Akumulator3 pamięć o dostępie swobodnym,poszczególne komórki sąadresowane przez C i ,i = 0, 1, 2, . . ., wartość z i-tejkomórki to c i albo c(i).4 lista n instrukcji stanowiącaprogram, umieszczone w odrębnejprzestrzeni niż RAM,Π = (π 1 , π 2 , . . . , π n. )LicznikrozkazówLista wyjściowaProgram. . .. . .Pamięć operacyjnaIstnieje też licznik rozkazów, wskazującyaktualnie wykonywaną instrukcję.V1.0 – 9/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieMaszyna PRAMInstrukcje maszyny RAMInstrukcji programu Π dla RAM wchodzą min. następujące operacje:LOAD op READ op STORE op WRITE opADD op SUB op MULT op DIV opJUMP ety JFTZ ety JZERO ety HALTgdzie op może przyjmować postać:1 liczby całkowitej – ADD =3 ,2 wartości adresującej pamięć RAM – MULT 3,3 wartości adresującej pamięć RAM pośrednio – DIV *5.Natomiast instrukcja JUMP ety, oznacza przesunięcie licznika instrukcji dowskazanej etykiety.Proste pytanie: jak zdefiniować równoległą maszynę RAM?V1.0 – 10/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieMaszyna PRAMRównoległa maszyna RAMOgólny schemat PRAM:Program głównyP 1 P 2 P 3 P 4 . . . P nWspólna pamięć operacyjnaRównoległa maszyna RAM zwiera wiele procesorów pracujących synchronicznie, posiadającychdostęp do wspólnej pamięci. Każdy procesor jest jest określony tak samo jakw zwykłej maszynie RAM. Procesory są ponumerowane kolejnymi liczbami naturalnymipocząwszy od zera. Procesory mogą wykonywać jeden wspólny program, ale wykonanieposzczególnych instrukcji zależy od indeksu procesora. W jednym kroku obliczeniowymkażdy z procesor pobiera dane z pamięci, potem wykonuje operację, którą może byćwpisanie pewnych danych. Wszystkie procesory wykonują jeden krok obliczeniowy jednocześnie.V1.0 – 11/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieRodzaje dostępu do pamięciRodzaje dostępu do pamięciPodstawowe oznaczenia:EREW – algorytmy z wyłącznym odczytem i wyłącznym zapisem,CREW – algorytmy z jednoczesnym odczytem i wyłącznym zapisem,ERCW – algorytmy z wyłącznym odczytem i jednoczesnym zapisem,CRCW – algorytmy z jednoczesnym odczytem i jednoczesnym zapisem.<strong>Algorytmy</strong> zazwyczaj oparte są o dostęp typu EREW oraz CRCW.Istnieje także kilka sposobów rozstrzygania konfliktów zasobów:dowolny – zapamiętana jest dowolna z wartości zapisywana do tej samejkomórki pamięci,priorytetowy – zapamiętywana jest wartość zapisywana przez procesorposiadający np.: najniższy (albo najwyższy) numer,mieszany – zapamiętywana wartość jest pewną, ściśle określonąkombinacją zapisywanych wartości.V1.0 – 12/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieRodzaje dostępu do pamięciPrzykłady algorytmów równoległychW przypadku dostępu CRCW dla PRAM można założyć, że procesory, którewpisują jednocześnie do tej samej komórki pamięci, to wpisują tą samąwartość. Na przykład jeśli output = 0, to wówczas następujący algorytmobliczy logiczną alternatywę w czasie stałym na maszynie CRCW PRAM:f o r each 1 ≤ i ≤ n do i n p a r a l l e li f A[ i ] = 1 then output =1;Innym przykładem dla dostępu typu CREW jest liczenie kolejnych wierszytrójkąta Pascala. Początkowo zakłada się, iż A = [0, 0, 0, 0, 0, 1]:f o r each 1 ≤ i ≤ 5 do i n p a r a l l e lA [ i ]:=A [ i ]+A [ i +1]0 0 0 0 0 10 0 0 0 0 10 0 0 0 1 10 0 0 1 2 10 0 1 3 3 10 1 4 6 4 11 5 10 10 5 1V1.0 – 13/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieRodzaje dostępu do pamięciPrzykłady algorytmów równoległychNastępujący algorytm oblicza pierwszą pozycję najmniejszego elementu wtablicy C[1 . . . n] w czasie O(1).f o r each 1 ≤ i ≤ n do i n p a r a l l e lM[ i ]:= 0 ;f o r each 1 ≤ i , j ≤ n do i n p a r a l l e li f i ≠ j and C [ i ] ≤ C [ j ] then M[ i ] : = 1 ;f o r each 1 ≤ i ≤ n do i n p a r a l l e li f M[ i ] = 0 then output := i ;Algorytm korzysta z O(n 2 ) procesorów.V1.0 – 14/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieRodzaje dostępu do pamięciPrzykłady algorytmów równoległychAlgorytm CRCW wskazujący pozycję pierwszej jedynki od lewej w tablicy A:f o r each 1 ≤ i < j ≤ n do i n p a r a l l e li f A[ i ]=1 and A[ j ]=1 then A[ j ] : = 0 ;f o r each 1 ≤ i ≤ n do i n p a r a l l e li f A[ i ]=1 then F i r s t O n e := i .Algorytm korzysta z O(n 2 ) procesorów, druga pętla pozwala sprawdzićobecność jedynki w tablicy:czy−j e s t −j e d y n k a :=0;f o r each 1 ≤ i ≤ n do i n p a r a l l e li f A[ i ]=1 then czy−j e s t −j e d y n k a :=1;V1.0 – 15/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieRodzaje dostępu do pamięciAlgorytm List-RankDana jest lista L o n obiektach, zadanie polega na tym iż należy policzyćodległość każdego elementu od końca listy. Zadanie to można zapisać wsposób formalny:{ 0, jeśli next[i] = NULLd[i] =d[next[i]] + 1, jeśli next[i] ≠ NULLPrzypadek sekwencyjny wymaga czasu Θ(n).Algorytm List-Rank do obliczania odległości każdego elementu od końcalisty w czasie O(lg n):1 : f o r each p r o c i do i n p a r a l l e l2 : i f n e x t [ i ] = NULL then3 : d [ i ] := 0e l s e4 : d [ i ] := 15 : w h i l e e x i s t s o b j e c t i such t h a t n e x t [ i ] ≠ NULL do6 : f o r each p r o c i do i n p a r a l l e l7 : i f n e x t [ i ] ≠ NULL then8 : d [ i ] := d [ i ] + d [ n e x t [ i ] ]9 : n e x t [ i ] := n e x t [ n e x t [ i ] ]V1.0 – 16/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieRodzaje dostępu do pamięciAlgorytm List-Rank346105(a) 1111103(b) 242621201503(c) 444631201503(d) 54463120150V1.0 – 17/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieRodzaje dostępu do pamięciAlgorytm List-Rank – poprawność(I) Niezmiennik algorytmu List-Rank jest następujący: dla każdego obiektui listy L na początku każdej iteracji pętli while (wiersze od 5 do 9) sumawartości d w podliście o początku w i jest równa odległości obiektu i odkońca listy L np.: pod listą dla obiektu 3 jest sekwencja (3,6,0) w iteracji (b).W trakcie wykonywania algorytmu niezmiennik jest zachowywany. Ponieważw każdym przypadku przerwania połączenia danego obiektu z następnikiem,wartość d następnika jest dodawana do wartości d tego obiektu.(II) Należy podkreślić iż dla poprawności działania algorytmu Fast-Max niezbędnesą <strong>równoległe</strong> synchroniczne dostępy do pamięci. W wierszu 9 mogąbyć zmienione wartości kilku wskaźników next. Niezbędne jest aby wszystkieodczyty z pamięci po prawej stronie instrukcji przypisania (odczytywanienext[next[i]]) występują przed wszystkimi zapisami do pamięci (zapisynext[i]) z lewej strony instrukcji przypisania.(za Cormen T.H., Leiserson C.E., Rivest R.L.: Wprowadzenie do algorytmów,WNT, 1997 (starsze wydanie), rozdział 30 o obliczeniach równoległych)V1.0 – 18/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieRodzaje dostępu do pamięciAlgorytm List-Rank – poprawność(III) Algorytm List-Rank jest algorytmem typu EREW. Każdy procesor jestodpowiedzialny za co najwyżej jeden odbiekt, a każdy odczyt oraz zapis wwierszach 2–7 jest wyłączny. Podobnie zapisu w wierszach 8–9. Należypodkreślić, iż zachowany jest następujący niezmiennik: dla każdych dwóchróżnych obiektów k oraz l albo next[k] ≠ next[l, albo next[k] = next[l] =NULL. Ten niezmiennik jest prawdziwy dla początkowej listy i pozostajezachowany w wierszu 9. Gdyż, wszystkie wartości next nie równe NULLsą różne, wszystkie odczyty w wierszu 9 są wyłączne. Należy założyć, żewykonanie wiersza 8 jest synchroniczne, jeśli wszystkie odczyty maja byćwyłączne. Gdyż, wymagane jest aby wszystkie procesory i odczytały d[i],a potem d[next[i]]. Przy takiej synchronizacji, jeśli dla obiektu i wartośćnext[i] ≠ NULL i istnieje obiekt j wskazujący na i (tzn. next[j] = i), to wpierwszym odczycie jest pobierana wartość d[i] dla procesora i, a w drugimodczycie jest pobierana wartość d[i] dla procesora j. Co potwierdza tylko,iż alg. List-Rank jest typu EREW.(za Cormen T.H., Leiserson C.E., Rivest R.L.: Wprowadzenie do algorytmów,WNT, 1997 (starsze wydanie), rozdział 30 o obliczeniach równoległych)V1.0 – 19/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieRodzaje dostępu do pamięciAlgorytm List-Rank – wydajność(I) Dla listy o n obiektach algorytm List-Rank działa w czasie O(lg n) (czasrównoległy). Inicjalizacja przebiega w czasie stałym i każda iteracja pętliwhile zabiera stały czas. Należy pokazać, że liczba wykonywanych iteracjiwynosi dokładnie ⌈lg n⌉. W każdej iteracji przeskoki wskaźników powodująprzekształcanie każdej listy ma dwie listy: jedną składającą się z elementówna pozycjach parzystych oraz drugiej listy o elementach na pozycjachnieparzystych. Każdy krok w którym wskaźniki przeskakują, podwaja liczbęlist i zmniejsza ich długość o połowę. Toteż, po wykonaniu ⌈lg n⌉ iteracjiwszystkie listy zawierają tylko jeden element.(II) Algorytm List-Rank wykonuje pracę Θ(n lg n), ponieważ czas działaniawynosi Θ(lg n), a liczba zastosowanych procesorów jest równa Θ(n). Naiwnyalgorytm sekwencyjny dla problemu ustalania porządku na liście działaw czasie Θ(n), co oznacza iż alg. List-Rank wykonuje większą pracę, niżjest to konieczne, ale wielkość tej pracy została powiększona o czynnik logarytmiczny.(za Cormen T.H., Leiserson C.E., Rivest R.L.: Wprowadzenie do algorytmów,WNT, 1997 (starsze wydanie), rozdział 30 o obliczeniach równoległych)V1.0 – 20/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieRodzaje dostępu do pamięciAlgorytm Fast-MaxMaksimum z n wartości znajdowane w czasie O(1) na maszynie CRCWalgorytmem Fast-Max:5 6 9 2 9 m5 F T T F T F6 F F T F T F9 F F F F F T2 T T T F T F9 F F F F F TElementy macierz to wyniki porównania A[i] < A[j], gdzie T - True i F -False. Dla każdego wiersza zawierającego wartość T Jeśli w kolumnie m wdanym wierszu znajduje się wartość True, to oznacza to iż dany element jestelementem maksymalnym.(za Cormen T.H., Leiserson C.E., Rivest R.L.: Wprowadzenie do algorytmów,WNT, 1997 (starsze wydanie), rozdział 30 o obliczeniach równoległych)V1.0 – 22/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieMetoda dziel i zwyciężajMetoda dziel i zwyciężajW obliczeniach równoległych bardzo często stosuje się drzewa. Problemobliczenia sumy v[1] + v[2] + . . . + v[n]. Dla uproszczenia założono, że njest potęgą dwójki i wynosi 16.rezultatpoziom 4poziom 3poziom 2poziom 1v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 v 9 v 10 v 11 v 12 v 13 v 14 v 15 v 16poziom 0Wysokością węzła jest jego maksymalna odległość od liścia, a wysokość liściawynosi 0. P-ty poziom to zbiór węzłów o wysokości p. Zakłada się, żeelementy v[1], v[2], . . . , v[n] są umieszczone w liściach pełnego zrównoważonegodrzewa binarnego.V1.0 – 23/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieMetoda dziel i zwyciężajMetoda dziel i zwyciężajAlgorytm dodawania można zrealizować w następujący sposób. Pętla forwskazuje poziomy:f o r p:=1 to log n doo b l i c z a n i e r ó w n o l e g ł e w a r t o ś c i węzłów na p−tym p o z i o m i e ;Na poziomie p-tym poszczególne elementy odpowiadają następującymelementomv[1 · 2 p ], A[2 · 2 p ], . . . , A[3 · 2 p ], . . .Algorytm obliczający sumę może zostać napisany w następujący sposób:f o r p:=1 to log n do∆ = 2 p ;f o r each 1 ≤ i ≤ n ∆ do i n p a r a l l e lv[i ∗ ∆] := v[i ∗ ∆ + ∆/2] + v[i ∗ ∆] ;wynik := v [ n ] ;V1.0 – 24/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieMetoda dziel i zwyciężajDziel i zwyciężaj – suma elementów tablicySumy elementów tablicy A[1..n]. Wynik będzie rezultatem funkcjiSUMA(1,n). Dla uproszczenia n jest potęgą dwójki:f u n k c j a SUMA(1, n)i f j=i thenr e t u r n A [ i ]e l s edo i n p a r a l l e lwynik1 := SUMA(i, ⌊(i + j)/2⌋) ;wynik2 := SUMA(⌈(i + j)/2⌉, j) ;r e t u r n wynik1 + wynik2 ;V1.0 – 26/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieMetoda dziel i zwyciężajDziel i zwyciężaj – sortowanie tablicyNiech ParallelMerge(x) będzie algorytmem, który po otrzymaniu tablicy Xz posortowanymi lewą i prawą połową, da w wyniku posortowaną tablicęx. Stosunkowo łatwo to osiągnąć w czasie O(log n) z n procesorami. Dlai > n/2-ty procesor znajduje w pierwszej połówce sekwencyjnie z pomocąmetodą binary search, najmniejszy element większy od X [i]. To zadaniewymaga czasu O(log n). Następnie każdy procesor wstawia element w odpowiedniemiejsce. Ostatecznie otrzymuje się algorytm sortowania w czasieO(log 2 ) z n procesorami.f u n k c j a P a r a l l e l S o r t ( x ) ;n:= s i z e ( x ) ;i f n>1 thendo i n p a r a l l e lP a r a l l e l S o r t ( F i r s t H a l f ( x ) ) ;P a r a l l e l S o r t ( S e c ondHalf ( x ) ) ;P a r a l l e l M e r g e ( x )V1.0 – 27/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieSymulacja CRCW za pomocą EREWSymulacja CRCW za pomocą EREWMaszyna o dostępie do pamięci typu CRCW jest lepsza o czynniklogarytmiczny od maszyny o dostępie EREW.TwierdzenieKażdy p-procesorowy algorytm typu CRCW może być co najwyżej O(lg p)razy szybszy od najszybszego p-procesorowego algorytmu EREW dla tegosamego problemu.(Szkic dowodu) W symulacji jednoczesnego zapisu dla p procesorów maszynyEREW wykorzystywana jest pomocnicza tablica A o wielkości p.W przypadku, gdy procesor P i z maszyny CRCW, dla i = 0, 1, 2, . . . , p − 1ma zapisać wartość x i do komórki i, odpowiadający mu procesor z maszynyEREW zapisuje uporządkowaną parę (l i , x i ) w A[i]. Ponieważ każdy procesor(w przypadku EREW) zapisuje w innym miejscu pamięci, zapisy tesą wyłączne. Następie uzyskane pary zapisane w A są sortowane w czasieO(lg p) ze względu na pierwsze elementy w parach. Po wykonaniu sortowaniawszystkie wartości, czyli drugie elementy par występują kolejno w A.V1.0 – 28/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieTwierdzenia BrentaTwierdzenie BrentaUkład kombinacyjny to sieć acykliczna składająca się z elementów kombinacyjnych.Każdy taki element ma jedno lub więcej wejść. Zakłada sięjednak iż zawsze będzie miał tylko jedno wyjście. Liczba wejść do stopieńwejściowy, a liczba wyjść do naturalnie stopień wyjściowy.Rozmiar układu kombinacyjnego to liczba zawartych w nim elementów kombinacyjnych.Natomiast głębokością układu nazywa się najdłuższa ścieżkaod wejścia układu do wyjścia układu.Twierdzenie BrentaKażdy układ kombinacyjny o rozmiarze n, głębokości d i o ograniczonymprzez stałą stopniu wejściowym można symulować na maszynie CREW o pprocesorach w czasie O(n/p + d).V1.0 – 31/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieTwierdzenia BrentaTwierdzenie Brenta(Szkic dowodu)Główne ograniczenie jakie napotyka się podczas <strong>równoległe</strong>j symulacjiukładu kombinacyjnego, to fakt iż istnieją elementy które nie mogą symulowanewcześniej, gdyż ich wejścia zależą od układów znajdujących sięwcześniej. Dlatego, należy symulować wszystkie elementy na danej głębokościi, aby potem przejść na głębokości i + 1.Dla i = 1, 2, 3, . . . , n niech n i będzie liczbą elementów układu na głębokościi, co naturalnie oznacza:d∑n i = ni=1Grupując elementy n i w ⌈n i /p⌉ grup, gdzie ⌊n i /p⌋ pierwszych grup zawierapo p elementów, a pozostałe elementy zawarte są w ostatniej grupie, tołączny czas obliczeń można zapisać jako (na i-tej głębkości elementy możnasymulować <strong>równoległe</strong> w czasie O(⌈n i /p⌉)):d∑⌈ n d∑( )ip ⌉ ≤n1p + 1 = n p + d.i=1i=1V1.0 – 32/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieTwierdzenia BrentaTwierdzenie Brentan i G.311 252345236247358 9V1.0 – 33/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieSieci sortujące – komparatorKomparator jest określony przez następującą funkcję, przyjmującą dwiewartości i zwracającą dwie wartość:xx’ = min (x, y)yy’ = max (x, y)Przykład działania komparatora:114 144 14V1.0 – 34/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieSieci sortujące – przykładSieć sortująca o czterech wejściach i czterech wyjściach:41225415V1.0 – 35/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieSieci sortujące – przykładBąbelkowa sieć sortująca lewy schemat oraz wstawiająca sieć sortująca pracyprawy schemat:Brak równoległości w stosowaniu komparatorów.V1.0 – 36/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieBitoniczna sieć sortującaBitoniczna sieć sortującaCiąg bitoniczny, to taki ciąg które albo posiada elementy ułożone w sposóbnierosnący, a potem niemalejący, albo najpierw niemalejący, a następnienierosnący. Ciągi (1, 4, 6, 8, 3, 2, 1) i (9, 8, 3, 2, 4, 6) to przykłady ciągówbitonicznych. W przypadku ciągów zero-jedynkowych ich postać jest następująca:0 i 1 j 0 k albo 1 i 0 j 1 k , dla pewnych i, j, k ≥ 0. Ciąg niemalejący lubnierosnący także jest ciągiem bitonicznym.W bitonicznych sieciach sortujących stosuje się sieci półczyszczące:Lemat o sieci półczyszczącejJeśli na wejście sieci półczyszczącej podany jest bitoniczny ciąg zero orazjedynek, to ciąg wyjściowy ma następujące własności: obie połowy – górne idolna – są bitoczniczne, każdy element w górnej połowie jest nie większy niżdowolny element w dolnej połowie oraz przynajmniej jedna połowa jestoczyszczona.V1.0 – 39/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieBitoniczna sieć sortującaSieć półczyszczącaCiąg bitoniczny0011100000001011ciągbitonicznyoczyszczonyciągbitonicznyCiąg bitoniczny0011111000101111ciągbitonicznyciągbitonicznyoczyszczonyV1.0 – 40/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieBitoniczna sieć sortującaBitoniczna sieć sortującaRekurencyjna definicja bitonicznej sieci sortującej:sieć półczyszczącasortująca siećbitoniczna ⌊n/2⌋sortująca siećbitoniczna ⌊n/2⌋Ciąg bitoniczny00111000000010110000101100000111Ciąg posortowanyV1.0 – 41/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieSieć sortującaSieć scalającasortująca siećbitoniczna ⌊n/2⌋sortująca siećbitoniczna ⌊n/2⌋Ciągi posortowane00110111001011110010111100011111Ciąg posortowanyV1.0 – 42/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieSieć sortującaSieć sortującaRekurencyjna definicja sieci sortującej:Merger[2]Sorter[n/2]Merger[4]Merger[2]Merger[n/2]Merger[8]Sorter[n/2]Merger[2]Merger[2]Merger[4]10101000010101000011000100000111V1.0 – 43/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieSieć sortującaZłożoność obliczeniowa sieci sortującychZłożoność podstawowych typów sieci sortujących:Sieć Liczba sekcji Liczba komparatorówOdd-even transposition sort O(n) O(n 2 )Bubblesort O(n) O(n 2 )Bitonic sort O(log(n) 2 ) O(n · log(n) 2 )Odd-even mergesort O(log(n) 2 ) O(n · log(n) 2 )Shellsort O(log(n) 2 ) O(n · log(n) 2 )V1.0 – 44/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieSieć sortującaSortowanie bitoniczne – wersja w języku CUruchomienie procedury sortującej:b i t o n i c S o r t ( 0 , N, ASCENDING ) ;Funkcja bitonicSort:v o i d b i t o n i c S o r t ( i n t s , i n t count , i n t d i r e c t i o n ){i f ( count > 1 ){i n t k = count / 2 ;}}b i t o n i c S o r t ( s , k , ASCENDING ) ;b i t o n i c S o r t ( s+k , k , DESCENDING ) ;b i t o n i c M e r g e ( s , count , d i r e c t i o n ) ;V1.0 – 45/ 47


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieSieć sortującaSortowanie bitoniczne – wersja w języku Cv o i d comparator ( i n t i , i n t j , i n t d i r e c t i o n ) {i f ( d i r e c t i o n == ( a [ i ] > a [ j ] ) ) {i n t tmp=a [ i ] ;a [ i ]=a [ j ] ;a [ j ]=tmp ;}}v o i d b i t o n i c M e r g e ( i n t s , i n t count , i n t d i r e c t i o n ) {i f ( count > 1) {i n t k = count / 2 ; i n t i ;f o r ( i=s ; i


Wprowadzenie <strong>Algorytmy</strong> <strong>równoległe</strong> Sieci sortujące A za tydzień na wykładzieW następnym tygodniu między innymi1 złożoność obliczeniowa modelu maszyny Turinga2 modele obliczeniowe3 klasy złożoności obliczeniowe4 klasy złożoności <strong>równoległe</strong>jDziękuje za uwagę!!!V1.0 – 47/ 47

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!