slajdy

Transkrypt

slajdy
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Algorytmy Równoległe i Rozproszone
Część IV - Model PRAM
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Łukasz Kuszner
pokój 209, WETI
http://kaims.eti.pg.gda.pl/∼kuszner/
[email protected]
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
Oficjalna strona wykładu
http://kaims.eti.pg.gda.pl/∼kuszner/ARiR/
Wykład 15 godzin, Projekt 15 godzin
2017
JJ
II
J
I
Strona 1 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
1.
Powody rozwoju systemów
równoległych i rozproszonych
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
• wymiana informacji,
• współdzielenie zasobów,
Strona główna
Strona tytułowa
• zwiększanie niezawodności poprzez powielanie,
JJ
II
• zwiększanie wydajności poprzez zrównoleglanie,
J
I
• upraszczanie konstrukcji poprzez specjalizację.
Strona 2 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Wymiana informacji
Cykl Eulera
Floyd-Warshall
Konieczność wymiany informacji pociąga za sobą konieczność budowy systemów, które taką wymianę umożliwiają. W powszechnym użyciu jest wiele takich systemów jak choćby globalna sieć
Internet, sieci telefonii stacjonarnej i komórkowej, wewnętrzne sieci komputerowe dużych korporacji przemysłowych, wojskowe i cywilne systemy wczesnego ostrzegania, systemy nawigacji satelitarnej i inne.
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 3 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Współdzielenie zasobów
Wytworzenie, a później utrzymanie niektórych zasobów może być
bardzo kosztowne. Konieczne staje się więc współdzielenie ich
przez wielu użytkowników. W takim wypadku dla ułatwienia dostępu i uregulowania zasad korzystania z zasobów powstają często
rozproszone systemy dostępu i kontroli. Jako przykłady można tu
podać np.: teleskop kosmiczny Hubble’a, a w mniejszej skali ploter
lub drukarkę współdzieloną przez kilku użytkowników. Zasobami
mogą być też dane, lub moc obliczeniowa superkomputerów.
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 4 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Zwiększanie niezawodności poprzez powielanie
Systemy rozproszone mogą być potencjalnie bardziej niezawodne.
O ile awaria lub zniszczenie samodzielnie działającego komputera
uniemożliwa pracę całego systemu, o tyle awaria systemu rozproszonego może być zneutralizowana poprzez zastąpienie niesprawnego elementu poprzez inne działające równolegle.
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 5 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Zwiększanie wydajności poprzez zrównoleglanie
Cykl Eulera
Floyd-Warshall
W systemach masowej obsługi powielenie jednostek wykonujących to samo zadanie powoduje wzrost wydajności. Przykładem
tutaj mogą być komputery odpowiadające na zapytania kierowane do baz danych. Również w innego rodzaju systemach jeśli
tylko realizowane zadania mogą być dzielone na mniejsze części,
to możemy przyspieszyć obsługę poprzez zrównoleglenie pewnych
operacji.
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 6 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Upraszczanie konstrukcji poprzez specjalizację
Konstrukcja systemów komputerowych może być bardzo złożona. Podobnie jak klasyczna modularyzacja podział systemu na
kooperujące części może zaowocować zmniejszeniem złożoności
pojedynczych elementów i zarazem uproszczeniem konstrukcji całego systemu.
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 7 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
2.
Jakość algorytmów równoległych
• Czas obliczeń (złożoność algorytmu)
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
• Liczba potrzebnych procesorów.
Strona tytułowa
• Przyjęty model obliczeń
• Przyspieszenie
JJ
II
J
I
• Efektywność
Strona 8 z 45
• Skalowalność
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Przyspieszenie
Obliczenia w drzewach
Rozważmy problem, dla którego sekwencyjny algorytm wymaga
czasu Ts . Dysponujemy algorytmem, który działa w czasie Tp przy
użyciu P procesorów.
Cykl Eulera
Pointer jumping
Floyd-Warshall
Sortowanie
Strona główna
Speedup =
Efficiency =
Ts
Tp
Ts
P Tp
Strona tytułowa
JJ
II
J
I
Strona 9 z 45
W jaki sposób obliczamy czasy Ts i Tp ?
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Przyspieszenie względne (Relative Speedup)
Cykl Eulera
Floyd-Warshall
Niech A będzie algorytmem równoległym.
Ts
RelativeSpeedup(n, p) =
Tp
• Ts=Czas rozwiązania problemu P na jednym procesorze
• Tp=Czas rozwiązania problemu P na p procesorach
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 10 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Przyspieszenie rzeczywiste (Real Speedup)
Niech A będzie algorytmem równoległym.
Ts
RealSpeedup(n, p) =
Tp
• Ts=Czas rozwiązania problemu najlepszym znanym algorytmem sekwencyjnym,
• Tp=Czas rozwiązania problemu P na p procesorach.
W obu wypadkach mierzymy czas na maszynie równoległej.
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 11 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Przyspieszenie bezwzględne
(Absolute Speedup)
Pointer jumping
Cykl Eulera
Floyd-Warshall
Niech A będzie algorytmem równoległem.
Ts
AbsoluteSpeedup(n, p) =
Tp
• Ts=Czas rozwiązania problemu najlepszym znanym algorytmem sekwencyjnym na najszybszym znanym procesorze,
• Tp=Czas rozwiązania problemu P na p procesorach.
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 12 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Asymptotyczne przyspieszenie rzeczywiste (Asymptotic Real Speedup)
Niech S(n) będzie złożonością obliczeniową najlepszego algorytmu sekwencyjnego, a A algorytmem równoległym i PA (n) jego
złożonością bez ograniczenia na liczbę procesorów.
AsymptoticRealSpeedup(n, p) =
S(n)
P (n)
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 13 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Cost Normalized Speedup
Sortowanie
Strona główna
CNS(n, p) =
Speedup(n, p)
koszt systemu równoległego
koszt systemu sekwencyjnego
Strona tytułowa
JJ
II
J
I
Strona 14 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Efektywność
Pointer jumping
Cykl Eulera
Efektywność jest miarą ściśle związaną z przyspieszeniem.
Ogólnie można zapisać
Speedup(n, p)
Efficiency(n, p) =
,
p
gdzie n jest rozmiarem problemu, a p jest liczbą użytych procesorów.
W zależności od tego jaką przyjmiemy miarę przyspieszenia uzyskamy różne miary efektywności.
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 15 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Skalowalność
Strona główna
Intuicyjnie system/algorytm jest skalowalny, jeśli efektywność
maleje wolno wraz ze wzrostem rozmiaru problemu i liczby procesorów.
Strona tytułowa
JJ
II
J
I
Strona 16 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
3.
Model - wstęp
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
W modelu przetwarzania sekwencyjnego kluczową rolę pełni model maszyny RAM (random access machine). Każda taka maszyna
składa się z ustalonego programu, jednostki obliczeniowej, taśmy
(tylko do odczytu) z danymi wejściowymi, taśmy (tylko do zapisu) na wynik działania programu oraz nieograniczonej pamięci
o dostępie swobodnym. Ponadto każda komórka pamięci jest w
stanie zapamiętać liczbę całkowitą o nieograniczonym zakresie.
Jednostka obliczeniowa nie jest skomplikowana – pozwala na wykonywanie najprostszych instrukcji takich jak: kopiowanie komórek pamięci, porównania i skoki warunkowe, podstawowe operacje
arytmetyczne itp. Ustalony program użytkownika składa się z ciągu takich instrukcji.
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 17 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Miarą złożoności programów dla maszyny RAM są typowo czas
działania mierzony liczbą wykonanych instrukcji i zużycie pamięci mierzone liczbą wykorzystywanych komórek. Żeby uchronić ten
model przed zniekształceniami zabronione jest generowanie bardzo dużych liczb w krótkim czasie. Np. zabrania się generowania
liczb o niewielomianowej długości zapisu w wielomianowym czasie. Można to osiągnąć albo przez uważny dobór zestawu instrukcji, albo przerzucając odpowiedzialność na „twórców algorytmów”
dla danego modelu.
W ten sposób otrzymujemy gamę równoważnych modeli dla obliczeń sekwencyjnych.
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 18 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Naturalnym uogólnieniem modelu RAM (ang. random access machine) jest dodanie większej liczby jednostek obliczeniowych.
Ideę maszyny PRAM (ang. parallel random access machine) może
ilustrować poniższy schemat:
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Pamięć współdzielona
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 19 z 45
Powrót
P1
P2
Pn
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
4.
PRAM - założenia
Kilka przykładów
Obliczenia w drzewach
• Pamięć jest wspólna dla wszystkich procesorów.
Pointer jumping
• Każdy procesor jest maszyną typu RAM.
Floyd-Warshall
• Wszystkie procesory działają synchronicznie.
• Czas działania mierzymy liczbą dostępów do pamięci współdzielonej.
• Zużycie pamięci liczymy liczbą użytych komórek.
• Dodatkowym parametrem jest liczba użytych procesorów. Tu
zakładamy, że w wielomianowym czasie można użyć „tylko”
wielomianowej liczby procesorów.
Cykl Eulera
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 20 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Uwagi do założeń
Obliczenia w drzewach
Pointer jumping
• Ostatni punkt założeń można rozwiązać np. w taki sposób, że
procesor P1 oblicza potrzebną liczbę procesorów, a następnie
włącza je wpisując liczbę do odpowiedniego rejestru.
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
• Liczenie dostępów do pamięci ma taki sens praktyczny, że
zwykle wszelkie operacje typu komunikacyjnego zabierają
znacznie więcej czasu niż obliczenia lokalne.
• Wadą założenia o jednostkowym czasie dostępu jest występowanie w rzeczywistych systemach równoległych mechanizmów komunikacji o bardzo zróżnicowanej wydajności.
Strona tytułowa
JJ
II
J
I
Strona 21 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Dostęp do pamięci
Istnieje kilka sposobów modelowania równoległego dostępu do pamięci współdzielonej. We wszystkich modelach zakładamy oddzielenie operacji zapisu i odczytu. Przyjmujemy, że maszyna PRAM
działa w cyklu składającym się z:
• (jeśli potrzeba) czytaj z pamięci współdzielonej,
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
• (jeśli potrzeba) wykonaj obliczenia lokalne,
JJ
II
• (jeśli potrzeba) pisz do pamięci współdzielonej.
J
I
W ten sposób zakładamy, że nie ma konfliktów typu: jednoczesny
zapis/odczyt.
Strona 22 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Pozostają jednak konflikty typu: jednoczesny zapis/zapis i odczyt/odczyt. Generalnie możliwości są następujące:
• maszyna EREW-PRAM: (ang. exclusive read exclusive write) nie dopuszcza się konfliktów żadnego rodzaju,
• maszyna CREW-PRAM: (ang. concurrent read exclusive
write) dopuszcza się konflikty typu jednoczesny odczyt,
• maszyna ERCW-PRAM: (ang. exclusive read concurrent
write) dopuszcza się konflikty typu jednoczesny zapis,
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
• maszyna CRCW-PRAM: (ang. concurrent read concurrent
JJ
II
write) dopuszcza się zarówno konflikty typu jednoczesny odczyt jak i jednoczesny zapis.
J
I
Strona 23 z 45
Przy czym w przypadku dopuszczenia jednoczesnego odczytu
(CREW, CRCW) zakładamy, że wszystkie procesory przeczytają
żądaną komórkę pamięci. W przypadku dopuszczenia jednoczesnego zapisu sytuacja jest bardziej złożona.
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Rozwiązywanie konfliktów typu jednoczesny zapis
Cykl Eulera
Floyd-Warshall
• ECR (equality conflict resolution) - jednoczesny zapis się powiedzie, jeśli wszystkie procesory próbują zapisać to samo.
• PCR (priority conflict resolution) - zapis udaje się tylko procesorowi o najwyższym priorytecie.
• ACR (arbitrary conflict resolution) - jednemu z procesorów
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
zapis się powiedzie.
Strona 24 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
5.
Twierdzenie Brenta
Pointer jumping
Cykl Eulera
Floyd-Warshall
Twierdzenie 1 Każdy układ kombinacyjny o rozmiarze n,
głębokości d i stopniu wejściowym bramek ograniczonym przez
stałą da się symulować na p-procesorowej maszynie CREW-PRAM w czasie O(n/p + d).
Ćwiczenie 1
Uzasadnij twierdzenie Brenta (zob. Cormen str 793).
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 25 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
6.
Kilka przykładów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Algorytm 1: Iloczyn skalarny
1: for i = 1 to n in parallel do
2:
ci = ai ∗ bi
3: end for
4: p = n/2
5: while p > 0 do
6:
for i = 1 to p in parallel do
7:
ci = ci + ci+p
8:
end for
9:
p = p/2
10: end while
We: Tablice współrzędnych a[1 : n] i b[1 : n]
Wy: Liczba będąca iloczynem skalarnym wektorów a i b.
Model: EREW PRAM.
Czas O(lg n) i O(n) procesorów.
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 26 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Algorytm 2: Koniunkcja logiczna 1
1: result=TRUE
2: for i = 1 to n in parallel do
3:
if A[i]==FALSE then
4:
result=FALSE
5:
end if
6: end for
We: Tablica wartości logicznych A[1 : n].
Wy: result
Model: ERCW PRAM.
Czas O(1) i O(n) procesorów.
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 27 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Algorytm 3: Koniunkcja logiczna 2
1: result=FALSE
2: for i = 1 to n in parallel do
3:
result=A[i]
4: end for
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
We: Tablica wartości logicznych A[1 : n].
Wy: result
Model: ERCW-ECR PRAM.
Czas O(1) i O(n) procesorów.
Ćwiczenie 2
Strona tytułowa
JJ
II
J
I
Strona 28 z 45
Powrót
Uzasadnij poprawność powyższych algorytmów.
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
7.
Obliczenia w drzewie binarnym
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Algorytm 4: Koniunkcja logiczna 3
1: p = n/2
2: while p > 0 do
3:
for i = 1 to p in parallel do
4:
A[i] = A[2i − 1]A[2i]
5:
end for
6:
p = p/2
7: end while
We: Tablica wartości logicznych A[1 : n].
Wy: result
Model: EREW PRAM.
Czas O(lg n) i O(n) procesorów.
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 29 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
8.
Pointer jumping
Pointer jumping (przeskakiwanie) pozwala na tworzenie równoległych algorytmów dla list.
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Przykład
Problem list-ranking – obliczanie odległości obiektu od końca
listy. Niech A będzie tablicą obiektów, a Link[i] = j oznacza, że
element j następuje w liście po elemencie i. Jeśli Link[i] = 0,
to nie ma kolejnego elementu, i jest elementem ostatnim. Przez
Head oznaczymy pierwszy element na liście.
Strona tytułowa
JJ
II
J
I
Strona 30 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
Algorytm 5: List Ranking
1: for i = 1 to n in parallel do
2:
Rank[i]=1
3:
Next[i]=Link[i]
4: end for
5: for j = 1 to dlg ne do
6:
for i = 1 to n in parallel do
7:
if N ext[i] 6= 0 then
8:
Rank[i]+ = Rank[N ext[i]]
9:
N ext[i] = N ext[N ext[i]]
10:
end if
11:
end for
12: end for
We: Tablice A[1 : n], Link[1 : n].
Wy: Rank[1:n]
Model: EREW PRAM.
Czas O(lg n) i O(n) procesorów.
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 31 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Na rysunku znajdują się procesory oznaczone prostokątami w
kolejności wskazywanej przez Link. Strzałki obrazują wartość
N ext, a liczby wpisane w każdy prostokąt wartości Rank.
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
1
1
1
1
1
1
1
Sortowanie
Strona główna
Strona tytułowa
2
2
2
2
2
2
1
JJ
II
J
I
Strona 32 z 45
Powrót
4
4
4
4
3
2
1
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
9.
Metoda cyklu Eulera
Cykl Eulera
Floyd-Warshall
Sortowanie
Niech G = (V, E) spójny graf prosty. Możemy utworzyć graf
G0 o tym samym zbiorze wierzchołków V oraz zbiorze krawędzi
E 0 otrzymanym przez zastąpienie każdej nieskierowanej krawędzi
E 3 e = {u, v} poprzez dwie krawędzie skierowane (u, v) i (v, u).
Fakt 2 Otrzymany w ten sposób graf jest Eulerowski.
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 33 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Rozważmy teraz drzewo T . Zaczniemy od znalezienia cyklu Eulera w T 0 = (V, E 0 ).
Niech v ∈ V będzie wierzchołkiem w T , a N (v) =
{u0 , u1 , u2 , . . . , udeg(v)−1 } listą sąsiadów. Istotne jest, że dla każdego wierzchołka v zbiór sąsiadów N (v) musi być uporządkowany.
Dla każdej krawędzi (ui , v) definiujemy następnik succ(ui , v) =
(v, ui+1(mod deg(v)) )
Fakt 3 Tak zdefiniowana funkcja succ – (następnik) definiuje cykl Eulera w T 0 .
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 34 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Przykład
Model - wstęp
Zakładając kolejność sąsiadów:
1 : {2},
2 : {1, 3, 4},
3 : {2},
6
4 : {2, 5},
5
5 : {4, 6, 7, 8},
6 : {5},
7 : {5},
4
8 : {5, 9, 10},
9 : {8},
2
10 : {8, 11},
11 : {10},
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
9
Pointer jumping
11
8
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
7
1
10
Strona tytułowa
JJ
II
J
I
Strona 35 z 45
3
Powrót
Full Screen
Na tym rysunku uzyskamy cykl:
1, 2, 3, 2, 4, 5, 6, 5, 7, 5, 8, 9, 8, 10, 11, 10, 8, 5, 4, 2, 1
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Mając krawędzie drzewa ułożone w cykl możemy stosować metody
typu „pointer jumping” dla drzew. Otrzymujemy w ten sposób
metodę konstruowania algorytmów przy użyciu O(n) procesorów
i logarytmicznym czasie działania.
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
Ćwiczenie 3
Zaprojektuj efektywny algorytm równoległy obliczania sumy
wszystkich elementów zapamiętanych w strukturze drzewiastej.
JJ
II
J
I
Strona 36 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Kolejność Postorder
We: Drzewo T = (V, E) z korzeniem r wyróżnionym poprzez
relację p, gdzie p(u) = v - oznacza v jest rodzicem u w drzewie
T oraz Cykl Eulera w T w formie relacji succ.
Wy: Dla każdego wierzchołka jego numer w kolejności Postorder
post(v).
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 37 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Algorytm 6: Kolejność Postorder
1: for każda krawędź (u, v) in parallel do
2:
if u = p(v) then
3:
krawędź ma wagę w(u, v) = 0
4:
else
5:
krawędź ma wagę w(u, v) = 1
6:
end if
7: end for
8: Znajdź sumę wag na krawędziach stosując „pointer jumping”
9: for każdy wierzchołek (v) in parallel do
10:
post(v) = suma prefiksowa wag w na łuku (v, p(v)).
11: end for
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 38 z 45
Powrót
Model: CREW PRAM, czas O(log n) i O(m) procesorów.
Full Screen
Zamknij
Koniec
Motywacja
Przykład
w(4, 2) = 0,
w(2, 1) = 0,
w(1, 2) = 1,
w(2, 4) = 1,
w(4, 3) = 0,
w(3, 4) = 1,
w(4, 5) = 0,
w(5, 6) = 0,
w(6, 5) = 1,
w(5, 7) = 0,
w(7, 5) = 1,
w(5, 8) = 0,
w(8, 10) = 0,
w(10, 11) = 0,
Miary algorytmów
w(11, 10) = 1,
w(10, 8) = 1,
w(8, 5) = 1,
Model - wstęp
w(5, 9) = 0,
w(9, 5) = 1,
w(5, 4) = 1
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
4
Cykl Eulera
Floyd-Warshall
Sortowanie
5
2
Strona główna
3
Strona tytułowa
1
6
7
8
9
JJ
II
J
I
Strona 39 z 45
10
Powrót
Full Screen
11
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Ćwiczenie 4
Strona główna
Zaprojektuj algorytm typu EREW PRAM, który w czasie
O(log n) oblicza rozmiary poddrzew o korzeniach we wszystkich
węzłach drzewa binarnego.
Strona tytułowa
JJ
II
J
I
Strona 40 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
10.
Algorytm Floyda-Warshalla
Pointer jumping
Cykl Eulera
Floyd-Warshall
Rozważmy graf G = (V, E), w którym z każdą krawędzią skojarzono nieujemną wagę wij . Uzupełniając przekątną zerami:
wii = 0 i pozostałe wagi wartością nieskończoność: wij = ∞ (jeśli
nie ma krawędzi z i do j) otrzymamy macierz wag W = (wij ).
Algorytm Floyda-Warshalla pozwala obliczyć długość najkrótszej
ścieżki z i do j, jak też i jej przebieg. Odtworzenie każdej ścieżki
umożliwi macierz (pij ), w której element pij pokazuje wierzchołek
poprzedni w stosunku do j w najkrótszej ścieżce z i do j.
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 41 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Algorytm 7: Floyd-Warshall
1: for i = 1 to n in parallel do
2:
for j = 1 to n in parallel do
3:
dij = wij
4:
pij = i
5:
end for
6: end for
7: for k = 1 to n do
8:
for każda para i, j, gdzie 0 < i, j ¬ n i i, j 6= k in
parallel do
9:
if dij > dik + dkj then
10:
dij = dik + dkj
11:
pij = pkj
12:
end if
13:
end for
14: end for
We: Graf w postaci macierzy wag wij
Wy: Macierze dij i Pij
Model: CREW PRAM.
Czas O(n) i O(n2 ) procesorów.
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 42 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Ćwiczenie 5
Zaprojektuj algorytm typu CREW PRAM, który w czasie O(n)
znajdzie przechodnie domknięcie relacji binarnej.
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 43 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
11.
Sortowanie przez ranking
Sortowanie
Strona główna
Czas O(log n) i O(n2 ) procesorów.
We: Wektor do posortowania X = [x1 , . . . xn ]
Model: CREW PRAM.
Strona tytułowa
JJ
II
J
I
Strona 44 z 45
Powrót
Full Screen
Zamknij
Koniec
Motywacja
Miary algorytmów
Model - wstęp
PRAM - założenia
Twierdzenie Brenta
Algorytm 8: Sortowanie przez ranking
1: for każda para i, j, gdzie 0 < i, j ¬ n in parallel do
2:
if xi > xj then
3:
cij = 1
4:
else
5:
cij = 0
6:
end if
7: end for
8: for i = 1 to n in parallel do
P
9:
policz ri = nj=1 cij
10: end for
11: for i = 1 to n in parallel do
12:
ustaw element i na pozycji ri w tablicy wynikowej
13: end for
Kilka przykładów
Obliczenia w drzewach
Pointer jumping
Cykl Eulera
Floyd-Warshall
Sortowanie
Strona główna
Strona tytułowa
JJ
II
J
I
Strona 45 z 45
Powrót
Full Screen
Zamknij
Koniec

Podobne dokumenty