Od autora(ooo to o mnie mowa :)): Starałem się wygrzebać w necie trochę więcej niż u Gronka na samych slajdach, dlatego odpowiedzi na niektóre pytania są długie (w sensie dłuższe niż normalnie :)), wydaje mi się jednak, że nikomu nie zaszkodzi jak przeczyta 3 zdania więcej. 1. Rodzaje równoległości obliczeń. Równoległość procesowa zbiór złożonych współpracujących elementów, działających w zbliżony sposób Równoległość tablicowa pełna synchronizacja działań Równoległość potokowa jednoczesne wykonywanie kolejnych etapów złożonego procesu W sumie warto jeszcze dodać, czemu obliczenia równoległe są takie fajne, a więc garść zalet: Przyspieszenie obliczeń Zwiększenie niezawodności działania lub dokładności Możliwość rozwiązywania zadań o większych rozmiarach 2. Charakterystyka obliczeń współbieżnych i rozproszonych. Obliczenia współbieżne: Przetwarzanie współbieżne (ang. Parallel Processing), zwane także równoległym, umożliwia wykonywanie większej ilości zadań w tym samym czasie, poprzez zwiększenie ilości procesorów w systemie komputerowym. Aby wszystko poprawnie działało systemy operacyjne oraz oprogramowanie muszą być ze sobą kompatybilne. Przetwarzanie równoległe znajduje zastosowanie przy: bardzo skomplikowanych i czasochłonnych obliczeniach (np. prognozowanie pogody z dużym wyprzedzeniem), hurtowniach danych, bazach danych, które otrzymują ogromne ilości zapytań. (ze slajdów Gronkowych) Szersza kategoria, obejmująca procesy wykonywane w tym samym czasie (tj. rozpoczynające sie przed zakończeniem innych) także w systemach jedno procesorowych (z podziałem czasu) Pozwalają na dekompozycje funkcjonalna programu (funkcjonalność rozdzielona na poszczególne moduły) Modele przetwarzania współbieżnego PVM MPI OpenMP Global Arrays Co-Array Fortran UPC HPF SHMEM Architektury sprzętowe AMP NUMA. MPP
Obliczenia rozproszone: Obliczenia rozproszone (ang. distributed computing) to takie obliczenia, które umożliwiają współdzielenie zasobów obliczeniowych, które są często geograficznie rozproszone. W obliczeniach rozproszonych zadanie obliczeniowe poddane zostaje dekompozycji np. na programy, procesy, procesory. Przykładem obliczeń rozproszonych są obliczenia na klastrach, w szczególności heterogenicznych. (ze slajdów Gronkowych) Obliczenia, w których dokonano dekompozycji zadania obliczeniowego, nie zależnie czy jest to podział na programy, procesy czy procesory Inne kryterium: brak wspólnej przestrzeni adresowej dla wszystkich procesów realizujących zadanie. Infrastruktura CORBA SOAP XML-RPC RPC BOINC Przykłady zastosowań Cyfrowa prognoza pogody Animacja 3D wysokiej rozdzielczości Modelowanie klimatu Badanie własności związków chemicznych (leki, tworzywa, półprzewodniki) Projektowanie złożonych układów VLSI Badania w medycynie i genetyce Zagadnienia biologii molekularnej Obliczenia w astronomii i kosmologii Modele przepływów turbulentnych Modelowanie eksplozji nuklearnych Obliczenia metoda elementów skończonych Analiza danych eksperymentalnych fizyki wysokich energii Przeszukiwanie wielkich baz danych Zadanie kanał 3. Modele programowania równoległego. Problem równoległy składa sie z jednego lub więcej zadań, wykonywanych współbieżnie. Zadanie (proces) stanowi program sekwencyjny z pamięcią lokalna oraz zespołem interfejsów. Zadanie może wykonywać m. in.: wysyłać i odbierać komunikaty, tworzyć nowe zadania i zakończyć własne działanie. Operacja send jest asynchroniczna wykonuje się natychmiast. Operacja receive jest synchroniczna blokuje zadanie aż do nadejścia komunikatu. Porty we/wy interfejsów mogą być połączone kolejkami komunikatów kanałami; kanały mogą być tworzone i niszczone dynamicznie. Zadania mogą być przydzielane procesorom na różne sposoby.
Jeżeli ktoś czuje nieodpartą pokusę oglądnięcia schematu to jest powyżej. W sumie daje to taki bardziej obrazowy pogląd. Garść właściwości: Wydajność bezpośrednie odwzorowanie na architekturę równoległą Niezależność mapowania (lokalność) rezultat obliczenia nie zależy od lokalizacji zadania Skalowalność ilość zadań płynnie dostosowywana do ilości procesorów Modułowość oddziaływania tylko poprzez jasno zdefiniowane interfejsy Determinizm wyznacza go jednoznaczność nadawcy/odbiorcy i blokowanie przy odbiorze Przekazywanie komunikatów (Message passing) Każde zadanie jest identyfikowane przez unikalną nazwę (liczbę). Zadania komunikują sie poprzez wysyłanie/odbiór wiadomości. Zamiast kanału wskazywana jest nazwa nadawcy/odbiorcy komunikatu. Ró woległość danych (Data Parallelism) Zdolność algorytmu do wykonywania współbieżnie takich samych operacji na poszczególnych elementach struktur danych Zachodzi konieczność właściwej dystrybucji danych pomiędzy zadania. Przykład: High Performance Fortran Współdzielona pamięć (Shared memory) Zadania maja asynchroniczny dostęp do wspólnej przestrzeni adresowej. Dostęp do pamięci jest kontrolowany poprzez mechanizmy typu semaforów, zamków. Brak konieczności explicite definiowania mechanizmu komunikacji; trudności w zagwarantowaniu determinizmu.
4. Elementy procesu projektowania algorytmów równoległych. Projektowanie algorytmów równoległych 1. Optymalne rozwiązanie równoległe nie musi wynikać bezpośrednio z dostępnych rozwiązań sekwencyjnych. 2. Podejście metodologiczne analizujące w pierwszej kolejności aspekty nie zależne od sprzętu takie jak współbieżność. 3. Rozstrzyganie problemów zdeterminowanych sprzętowo w końcowym etapie programowania. Rozłożenie procesu projektowania na cztery etapy (PCAM): Dekompozycja (Partitioning), Komunikacja (Communication), Scalanie (Agglomeration), Odwzorowanie (Mapping). Dwa pierwsze etapy koncentrują sie na współbieżności i skalowalności Dwa pozostałe na lokalności i wydajności. Taki ładny obrazek :) Zawsze się przyda.
Mała definicja na początek ze słownika: dekompozycja rozkład, rozpad. Etym. - fr. décomposition 'jw.; psucie się, gnicie', 5. Rodzaje i kryteria dekompozycji. Celem dekompozycji jest ujawnienie możliwości równoległego wykonywania programu. Pożądane jest uzyskanie maksymalnie drobnoziarnistego (fine-grained) podziału problemu na dużą ilość małych zadań. W dalszych etapach podział ten nie musi być w pełni zrealizowany. Rodzaje dekompozycji: Optymalny podział dotyczy zarówno wymaganych obliczeń jak i danych. Zorientowanie na podział danych: dekompozycja domenowa. (omówiona w pyt. 6) Zorientowanie na podział obliczeń: dekompozycja funkcjonalna. (omówiona w pyt. 7) Kryteria dekompozycji: Minimum o rząd wielkości więcej możliwych zadań niż procesorów Minimum nadmiarowych obliczeń i danych Porównywalny rozmiar zadań Proporcjonalność ilości możliwych zadań do rozmiaru problemu Pożądana wielowariantowość dekompozycji