Projekt Nowe metody nauczania w matematyce Nr POKL.09.04.00-14-133/11 Nowoczesne technologie przetwarzania informacji Mgr Maciej Cytowski (ICM UW) Lekcja 2: Podstawowe mechanizmy programowania równoległego w ramach Europejskiego Funduszu Społecznego
Programowanie równoległe Początki programowania równoległego to lata 1960 1970 Obecnie programowanie równoległe oparte jest na: znanych od dekad modeli programowania równoległego (MPI, OpenMP), nowych paradygmatów programowania równoległego (CUDA, OpenCL), językach przyszłości tworzonych dla przyszłych architektur komputerowych (X10, Chapel, Fortress). Znajomość technik programowania równoległego to obowiązek każdego programisty w ramach Europejskiego Funduszu Społecznego 2
Czym są obliczenia równoległe? Obliczenia równoległe to takie, w których wiele operacji obliczeniowych wykonuje się jednocześnie w ramach dostępnych jednostek obliczeniowych (procesorów, rdzeni, węzłów obliczeniowych). Bardzo często duże problemy obliczeniowe mogą być podzielone na mniejsze podproblemy, które mogą wykonywać się jednocześnie. Przez wiele lat obliczenia równoległe wykonywane były jedynie w branży HPC (High Performance Computing). Dzisiaj wiedza o programowaniu równoległym i umiejętności przeprowadzania równoległych obliczeń potrzebne są wszystkim w ramach Europejskiego Funduszu Społecznego 3
Ograniczenia programowania równoległego Jaką maksymalną wydajność może uzyskać nasz program, jeśli: użyjemy szybszego procesora, użyjemy kilku lub wielu procesorów. Odpowiedzi na takie pytania szukano w latach 60tych XX wieku. w ramach Europejskiego Funduszu Społecznego 4
Gene Amdahl Urodzony 16 listopada 1922 w USA w rodzinie skandynawskich imigrantów Architekt komputerowy w firmie IBM, pracujący nad systemami typu mainframe. Założyciel Amdahl Corporation. Bardzo znana publikacja: Validity of the single processor approach to achieving large scale computing capabilities, IBM Sunnyvale, California, AFIPS Spring Joint Computer Conference, 1967 Na podstawie pracy G.Amdahla sformułowane zostało jedno z najbardziej znanych praw w dziedzinie obliczeń równoległych Prawo to do dziś nazywane Prawem Amdahl'a wyraża ograniczenia w prowadzeniu obliczeń równoległych w ramach Europejskiego Funduszu Społecznego 5
Prawo Amdahl a Potencjalne możliwe przyśpieszenie S algorytmu o jest równe: n liczba procesów T1 S( n) T n F 1 1 F n T_ - czas wykonania algorytmu F udział części nierównoległej w ramach Europejskiego Funduszu Społecznego 6
http://en.wikipedia.org/wiki/parallel_computing w ramach Europejskiego Funduszu Społecznego 7
Krytyka prawa Amdahl a Prawo i teoria Amdahl a znalazła wielu krytyków Główny zarzut: prawo Amdahl a ma zastosowanie tylko dla aplikacji z niezmiennym rozmiarem zadania Maksymalne przyśpieszenie: 2x w ramach Europejskiego Funduszu Społecznego 8
Prawo Gustafsona (1988) S( P) P ( P 1) Każdy wystarczająco duży problem może być efektywnie zrównoleglony P ilość procesorów, S przyśpieszenie, alfa część programu, której nie da się zrównoleglić w ramach Europejskiego Funduszu Społecznego 9
Skalowalność Speed-up przyśpieszenie - stosunek czasu wykonania algorytmu i liczby użytych procesów skalowalność zmiana czasu wykonania programu mierzona dla zmiennej liczby procesorów lub zmiennego rozmiaru zadania program równoległy jest uznawany za optymalny gdy jego skalowalność jest bliska liniowej w zastosowaniach znane jest mało programów optymalnych dla liczby procesorów większej od kilkunastu Rodzaje skalowalności: Strong scalability stały rozmiar problemu, zmienna liczba procesów Weak scalability stała liczba procesów, zmienny rozmiar zadania w ramach Europejskiego Funduszu Społecznego 10
Model idealnego komputera równoległego PRAM = Parallel Random Access Machine n jednostek obliczeniowych oraz globalna jednorodna pamięć jednostki są sterowane wspólnym zegarem, ale mogą wykonywać różne instrukcje w każdym cyklu Model PRAM ignoruje wpływ i koszty komunikacji między komponentami komputera równoległego. Modele PRAM służą do projektowania i analizy algorytmów. Realizacja komputera typu PRAM dla dużej liczby n, jest technicznie bardzo złożona i kosztowna. w ramach Europejskiego Funduszu Społecznego 11
Taksonomia Flynna SISD = Single Instruction Single Data Klasyczny komputer skalarny wykonujący kolejne instrukcje, jedna po drugiej na pojedynczych danych SIMD = Single Instruction Multiple Data Procesor / komputer potrafi wykonać pojedynczą instrukcję dla całego potoku (wektora) danych (procesor wektorowy) Zakłada równoległość danych MISD = Multiple Instruction Single Data Komputer potrafi wykonać jednocześnie zbiór instrukcji na jednej danej MIMD = Multiple Instruction Multiple Data Zbiór procesorów może wykonywać równolegle i niezależnie instrukcje na wielu danych Najczęściej spotykana forma równoległości sprzętowej w ramach Europejskiego Funduszu Społecznego 12
Rozszerzenia modelu MIMD SPMD = Single Program Multiple Data pojedynczy program jest uruchamiany w wielu kopiach na różnych zestawach danych najbardziej rozpowszechniony sposób tworzenia programów równoległych MPMD = Multiple Program Multiple Data wiele niezależnych procesorów wykonuje równolegle różne programy w ramach Europejskiego Funduszu Społecznego 13
Współczesne typy architektur równoległych Modele, języki oraz mechanizmy programowania równoległego są ściśle związane z typem architektury równoległej. Przedstawione zostaną podstawowe typy architektur. w ramach Europejskiego Funduszu Społecznego 14
Model pamięci współdzielonej Procesory współdzielą globalną przestrzeń adresową Technologia: ograniczona liczba procesorów Szybka komunikacja i synchronizacja Równoległe typy danych: shared, private Ochrona dostępu do danych współdzielonych Komunikacja poprzez zmienne współdzielone Równoległe wątki Modele programowania: OpenMP, Pthreads, OpenCL w ramach Europejskiego Funduszu Społecznego 15
Model pamięci współdzielonej Procesory operują na prywatnej, lokalnej pamięci Technologia: duża liczba procesorów Mechanizmy komunikacji i synchronizacji Operowanie na danych lokalnych Komunikacja poprzez połączenie sieciowe Koszt komunikacji rośnie z liczbą procesorów Równoległe procesy Modele programowania: MPI Obecnie wiele architektur to architektury o równoległości hierarchicznej. Węzły obliczeniowe są wielordzeniowe. Popularny model programowania to MPI + OpenMP. w ramach Europejskiego Funduszu Społecznego 16
Model obliczeń akcelerowanych (hybrydowych) Węzły obliczeniowe wyposażone są w dodatkowe akceleratory (np. karty graficzne) Technologia: duża liczba węzłów wyposażonych w 1-4 kart GPU Mechanizmy odciążania czasochłonnych obliczeń na akceleratorach Skomplikowane modele programowania Ograniczenia komunikacji CPU - GPU Modele programowania: CUDA, OpenCL, HMPP w ramach Europejskiego Funduszu Społecznego 17
Mechanizmy programowania równoległego Zaprojektowanie wydajnego algorytmu równoległego wymaga znajomości podstawowych mechanizmów dostępnych w modelach równoległych. Przedstawione zostaną podstawowe mechanizmy programowania równoległego. w ramach Europejskiego Funduszu Społecznego 18
Mechanizmy podział zadania Dekompozycja problemu - podział na podproblemy metoda i sposób podziału determinuje typ równoległości Stopień i schemat zależności podproblemów prowadzi do projektu algorytmu Gdy znamy zależności pomiędzy podproblemami: wybieramy model algorytmu odpowiednią architekturę komputera równoległego Interesuje nas poprawne i szybkie rozwiązanie problemu w ramach Europejskiego Funduszu Społecznego 19
Mechanizmy - komunikacja Obliczenia realizowane równolegle na kilku komputerach w ramach jednego algorytmu często wymagają wymiany informacji Komunikacja realizowana jest poprzez wywołanie funkcji, która definiuje nadawcę, odbiorcę oraz typ i rodzaj wiadomości Istnieje wiele rodzajów komunikacji: Komunikacja punkt-punkt (synchroniczna i asynchroniczna) Komunikacja wspólna (np. redukcja, wszyscy-do-wszystkich) Pokazana w kolejnej lekcji na przykładzie biblioteki MPI (Message Passing Interface). w ramach Europejskiego Funduszu Społecznego 20
Mechanizmy - synchronizacja Obliczenia realizowane równolegle na kilku komputerach w ramach jednego algorytmu często wymagają zapewnienia, że wszystkie procesy realizują ten sam fragment algorytmu Synchronizacja realizowana jest poprzez wywołanie funkcji, która: blokuje wykonanie procesów równoległych, zwalnia blokadę w momencie gdy wszystkie procesy wywołały tą funkcję. Pokazana w kolejnej lekcji na przykładzie biblioteki MPI (Message Passing Interface). w ramach Europejskiego Funduszu Społecznego 21
Mechanizmy ochrona dostępu Obliczenia realizowane na architekturach o pamięci współdzielonej często operują na tzw. zmiennych współdzielonych Należy unikać sytuacji, w których jeden wątek odczytuje wartość zmiennej podczas gdy drugi realizuje zmianę wartości tej zmiennej Do ochrony dostępu służą różnego rodzaju mechanizmy: zamki, określanie zmiennych atomowych oraz regionów krytycznych. Pokazana w kolejnej lekcji na przykładzie OpenMP. w ramach Europejskiego Funduszu Społecznego 22
Mechanizmy - akceleracja Obliczenia na architekturach wyposażonych dodatkowo w akceleratory (np. karty graficzne) Wybieranie najbardziej obciążających obliczeniowo fragmentów programu i programowanie ich wykonania na dostępnym akceleratorze. Programowanie takich architektur jest trudne i czasochłonne. w ramach Europejskiego Funduszu Społecznego 23
Mechanizmy - równoważenie obciążenia (ang. load balancing) Load balancing = podział obliczeń pomiędzy dostępne procesory Aby zminimalizować czas wykonania programu równoległego należy zapewnić równomierne rozłożenie obliczeń. Nierówny podział obliczeń pomiędzy procesami prowadzi do niskiej skalowalności programu. w ramach Europejskiego Funduszu Społecznego 24