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

Podobne dokumenty
Algorytmy Równoległe i Rozproszone Część IV - Model PRAM

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

Algorytmy dla maszyny PRAM

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

16. Taksonomia Flynn'a.

Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.

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

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Algorytmy Równoległe i Rozproszone Część II - Sieci porównujące

Wstęp do programowania

Analiza ilościowa w przetwarzaniu równoległym

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

Podstawy Informatyki Systemy sterowane przepływem argumentów

Analiza efektywności przetwarzania współbieżnego

Nowoczesne technologie przetwarzania informacji

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

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

1. Analiza algorytmów przypomnienie

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

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Klasyfikacje systemów komputerowych, modele złożoności algorytmów obliczeniowych

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

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Obliczenia równoległe

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Wprowadzenie do złożoności obliczeniowej

Algorytm. a programowanie -

Pliki. Operacje na plikach w Pascalu

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Logiczny model komputera i działanie procesora. Część 1.

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

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

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Numeryczna algebra liniowa

LEKCJA TEMAT: Zasada działania komputera.

Architektura mikroprocesorów TEO 2009/2010

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

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

Zaawansowane algorytmy i struktury danych

Zasady analizy algorytmów

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

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

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

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

Dr inż. hab. Siergiej Fialko, IF-PK,

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

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

Macierze. Rozdział Działania na macierzach

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Budowa komputera Komputer computer computare

ĆWICZENIE NR 1 WPROWADZENIE DO INFORMATYKI

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Programowanie równoległe

Mikroprocesor Operacje wejścia / wyjścia

Typy algorytmów losowych. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Modelowanie procesów współbieżnych

Losowość w rozproszonym modelu

Algorytmy Równoległe i Rozproszone Część III - Układy kombinacyjne i P-zupełność

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

dr hab. Joanna Jędrzejowicz Podstawy informatyki i komputeryzacji Gdańska Wyższa Szkoła Humanistyczna

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

OBLICZENIA RÓWNOLEGŁE I ROZPROSZONE

Efektywność algorytmów

Efektywność Procedur Obliczeniowych. wykład 5

Zad. 3: Układ równań liniowych

Układy kombinacyjne Y X 4 X 5. Rys. 1 Kombinacyjna funkcja logiczna.

Algorytmy i Struktury Danych

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

Architektura Systemów Komputerowych. Architektura potokowa Klasyfikacja architektur równoległych

WPROWADZENIE Mikrosterownik mikrokontrolery

Algorytmy Równoległe i Rozproszone Część VI - Systemy rozproszone, podstawowe pojęcia

Programowanie dynamiczne cz. 2

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Programowanie współbieżne i rozproszone

Podstawy Informatyki DMA - Układ bezpośredniego dostępu do pamięci

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

ANALIZA EFEKTYWNOŚCI MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

Magistrala systemowa (System Bus)

1 Wprowadzenie do algorytmiki

Języki programowania imperatywnego

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2010/2011

3. FUNKCJA LINIOWA. gdzie ; ół,.

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Architektura komputerów

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Architektura komputerów Wykład 2

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Programowanie i techniki algorytmiczne

Pamięci masowe. ATA (Advanced Technology Attachments)

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

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

Algorytmy Równoległe i Rozproszone Część VII - Systemy rozproszone, wstęp

21 Model z pamięcią współdzieloną (model PRAM) - Parallel Random Access Machine

Transkrypt:

Algorytmy Równoległe i Rozproszone Część IV - Model PRAM Łukasz Kuszner pokój 209, WETI http://www.sphere.pl/ kuszner/ kuszner@sphere.pl Oficjalna strona wykładu http://www.sphere.pl/ kuszner/arir/ 2005/06 Strona 1 z 24

1. Powody rozwoju systemów równoległych i rozproszonych wymiana informacji, współdzielenie zasobów, zwiększanie niezawodności poprzez powielanie, zwiększanie wydajności poprzez zrównoleglanie, upraszczanie konstrukcji poprzez specjalizację. Strona 2 z 24

1.1. Wymiana informacji zność 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. Strona 3 z 24

1.2. Współdzielenie zasobów Wytworzenie, a później utrzymanie niektórych zasobów może być bardzo kosztowne. zne 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. Strona 4 z 24

1.3. 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. Strona 5 z 24

1.4. Zwiększanie wydajności poprzez zrównoleglanie 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. Strona 6 z 24

1.5. 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. Strona 7 z 24

2. 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. Strona 8 z 24

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 niewielowmianowej 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. Strona 9 z 24

Naturalnym uogólnieniem modelu RAM jest dodanie większej liczby jednostek obliczeniowych. Ideę maszyny PRAM może ilustrować poniższy schemat: Pamięć współdzielona Strona 10 z 24 P 1 P 2 P n

3. Pamięć jest wspólna dla wszystkich procesorów. Każdy procesor jest maszyną typu RAM. 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. Strona 11 z 24

3.1. Uwagi do założeń Ostatni punkt założeń można rozwiązać np. w taki sposób, że procesor P 1 oblicza potrzebną liczbę procesorów, a następnie włącza je wpisując liczbę do odpowiedniego rejestru. 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 12 z 24

3.2. Dostęp do pamięci Istniej 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, (jeśli potrzeba) wykonaj obliczenia lokalne, (jeśli potrzeba) pisz do pamięci współdzielonej. W ten sposób zakładamy, że nie ma konfliktów typu: jednoczesny zapis/odczyt. Strona 13 z 24

Pozostają jednak konflikty typu: jednoczesny zapis/zapis i odczyt/odczyt. Generalnie możliwości są następujące: maszyna EREW-PRAM: nie dopuszcza się konfliktów żadnego rodzaju, maszyna CREW-PRAM: dopuszcza się konflikty typu jednoczesny odczyt, maszyna ERCW-PRAM: dopuszcza się konflikty typu jednoczesny zapis, maszyna CRCW-PRAM: dopuszcza się zarówno konflikty typu jednoczesny odczyt jak i jednoczesny zapis. 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. Strona 14 z 24

3.2.1. Rozwiązywanie konfliktów typu jednoczesny zapis 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 zapis się powiedzie. Strona 15 z 24

4. Twierdzenie 1 Każdy układ kombinacyjny o rozmiarze n, głębokości d i stopniu wejściowym bramek ograniczonym przez stałą da się symulpwać n p-procesorowej maszynie CREW- -PRAM w czasie O(n/p + d). Ćwiczenie 1 Uzasadnij twierdzenie Brent a (zob. Cormen str 793). Strona 16 z 24

5. Modele przetwarzania danych SISD SIMD MISD MIMD Strona 17 z 24

6. Algorytm 1: Iloczyn skalarny 1: for i = 1 to n in parallel do 2: c i = a i b i 3: end for 4: p = n/2 5: while p > 0 do 6: for i = 1 to p in parallel do 7: c i = c i + c i+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. Strona 18 z 24

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. Strona 19 z 24

Algorytm 3: Koniunkcja logiczna 2 1: result=false 2: for i = 1 to n in parallel do 3: if A[i]==FALSE then 4: result=a[i] 5: end if 6: end for We: Tablica wartości logicznych A[1 : n]. Wy: result Model: EREW-ECR PRAM. Czas O(1) i O(n) procesorów. Ćwiczenie 2 Uzasadnij poprawność powyższych algorytmów. Strona 20 z 24

7. Obliczenia w drzewie binarnym 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. Strona 21 z 24

8. (przeskakiwanie) pozwala na tworzenie równoległych algorytmów dla list. 8.1. 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 22 z 24

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 i = 1 to lg n do 6: for i = 1 to n in parallel do 7: if Next[i] 0 then 8: Rank[i]+ = Rank[N ext[i]] 9: Next[i] = Next[Next[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. Strona 23 z 24

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. 1 1 1 1 1 1 1 2 2 2 2 2 2 1 Strona 24 z 24 4 4 4 4 3 2 1