1. Rodzaje równoległości obliczeń. 2. Charakterystyka obliczeń
Transkrypt
1. Rodzaje równoległości obliczeń. 2. Charakterystyka obliczeń
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 3. Modele programowania równoległego . Zadanie kanał ● ● ● ● ● ● ● 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. 5. Rodzaje i kryteria dekompozycji. Mała definicja na początek ze słownika: dekompozycja rozkład, rozpad. Etym. - fr. décomposition 'jw.; psucie się, gnicie', ● ● ● 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