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