wersja do druku - Instytut Informatyki Teoretycznej i Stosowanej
Transkrypt
wersja do druku - Instytut Informatyki Teoretycznej i Stosowanej
Pojecia ˛ podstawowe Obliczenia równoległe moga˛ zostać zdefiniowane jako proces równoległego rozwiazywania ˛ problemu z wykorzystaniem p jednostek przetarzajacych ˛ (procesorów), przy czym zadania uruchamiane w poszczególnych procesach sa˛ od siebie zależne i niezbedna ˛ jest wymiana danych pomiedzy ˛ nimi. Oprogramowanie systemów równoległych i rozproszonych Równoległy system komputerowy (lub po prostu komputer równoległy) definiowany jest jako system zawierajacy ˛ szereg procesorów, zdolnych do wspólnego rozwiazywania ˛ pewnego zagadnienia obliczeniowego. Określenie to jest na tyle szerokie, że obejmuje superkomputery masywnie równoległe, składajace ˛ sie˛ z dziesiatków, ˛ setek, a nawet tysiecy ˛ procesorów, wieloprocesorowe stacje robocze i serwery, systemy wbudowane, itp. Wykład 1 Dr inż. Tomasz Olas [email protected] Instytut Informatyki Teoretycznej i Stosowanej Politechnika Cz˛estochowska Rozproszone systemy komputerowe, zwane również architekturami wielomaszynowymi, składaja˛ sie˛ z wielu samodzielnych komputerów (procesor, pamieć, ˛ wejście/wyjście) połaczonych ˛ siecia˛ komunikacyjna. ˛ Wykład 1 Wykład 1 – p. 1/26 Klasyfikacja komputerów równoległych I Podstawa˛ klasyfikacji Flynna jest liczba strumieni danych oraz liczba strumieni rozkazów jakie moga˛ zostać wyróżnione w pracy systemu komputerowego. Klasyfikacja komputerów równoległych II Druga klasyfikacja systemów równoległych opiera sie˛ na dostepie ˛ do pamieci. ˛ Wyróżnia sie˛ tutaj systemy z: pami˛ecia˛ wspólna˛ lub inaczej współdzielona˛ (shared-memory SISD - systemy z pojedynczym strumieniem rozkazów i danych parallel computers), pozwalajace ˛ na jednoczesny i swobodny (random) dostep ˛ do wspólnej pamieci ˛ przez wszystkie procesory, (Single Instruction stream - Single Data stream), pami˛ecia˛ rozproszona˛ (distributed memory), w których każdy SIMD - systemy z pojedynczym strumieniem rozkazów procesor posiada bezpośredni dostep ˛ tylko do swojej lokalnej pamieci, ˛ oprócz tego może sie˛ odwoływać do modułów pamieci ˛ innych procesorów w sposób pośredni za pomoca˛ odpowiedniej sieci połacze ˛ ń (interconnection network). Zostały wyróżnione cztery typy organizacji komputerów: i wielokrotnym strumieniem danych (Single Instruction stream Multiple Data stream), MISD - komputery z wielokrotnym strumieniem rozkazów i pojedynczym strumieniem danych (Multiple Instruction stream Single Data stream), MIMD - maszyny z wielokrotnym strumieniem rozkazów i wielokrotnym strumieniem danych (Multiple Instruction stream Multiple Data stream). Wykład 1 – p. 3/26 Wykład 1 Klastry Architektura SMP Najprostsza˛ i w zwiazku ˛ z tym najbardziej rozpowszechniona˛ architektura˛ równoległa˛ jest architektura typu SMP (Symetric Multi Processing). Zasoby pamieci ˛ i wejścia/wyjścia sa˛ w tej architekturze współdzielone przez wszystkie procesory systemu. Procesory uzyskuja˛ dostep ˛ do wspólnych zasobów poprzez magistrale, ˛ lub w przypadku bardziej rozbudowanych systemów poprzez przełacznik. ˛ CPU CPU Cache Cache CPU ... Cache Idea klastra obliczeniowego stanowi rozszerzenie idei sieci stacji roboczych (Network Of Workstations - NOW ). Pod wzgledem ˛ sprz˛etowym oba składaja˛ sie˛ z pewnej liczby komputerów (stacji roboczych) połaczonych ˛ siecia˛ komunikacyjna. ˛ Różnica polega na logicznej reprezentacji systemu: w przypadku sieci stacji roboczych każda maszyna widziana jest jako niezależny system i fakt ten musi znaleźć odbicie w stosowanych tam rozwiazaniach ˛ programistycznych. W przypadku klastra natomiast pojedyncze maszyny stanowia˛ cz˛eść wirtualnego komputera udostepnionego ˛ dla użytkowników w sposób analogiczny do rzeczywistych superkomputerów. Jedna˛ z podstawowych metod klasyfikacji klastrów stanowi podział na: Pamięć klastry wysokiej wydajności lub obliczeniowe (high performance clusters), I/O klastry wysokiej dostepności ˛ (high availability clusters). Wykład 1 – p. 5/26 Klastry obliczeniowe Klastry wysokiej dostepno ˛ ści W przypadku klastrów obliczeniowych głównym celem twórców jest osiagni ˛ ecie ˛ jak najwyższej maksymalnej wydajności maszyny równoległej. Powoduje to stosowanie komponentów o najlepszych, pod wzgledem ˛ szybkości, parametrach, wykorzystanie dedykowanych sieci komunikacyjnych oraz bazowanie na zabezpieczeniach programowych w zakresie stabilności pracy wirtualnego komputera. Gigabit Myrinet SCI Przepustowość 140 - 33 MHz 80 Infiniband 30 - 50 740 - 840 (MBytes/s) 215 - 66 MHz Opóźnienie - 14 - 33 MHz 6 50 - 200 6-7 MPI (µs) 5 - 66 MHz 3rd Party MPICH MVAPICH, Ethernet MPI LAM, MPICH-GM Wykład 1 Klastry wysokiej dostepności ˛ wykorzystywane sa˛ w zadaniach wymagajacych ˛ niezwykle wysokiej niezawodności i gwarancji nieprzerwanej pracy komputera. Cz˛esto komponenty stosowane w nich należa˛ do starszych generacji, majacych ˛ za soba˛ długi okres testów i udoskonaleń oraz gwarantujacych ˛ bezawaryjna˛ współprace˛ z warstwa˛ programowa. ˛ Powszechnie spotykana˛ praktyka˛ jest również wykonywanie pojedynczego zadania jednocześnie przez wiele w˛ezłów klastra, co umożliwia łatwe wykrycie przekłamań w wynikach generowanych przez wadliwa˛ jednostk˛e jak również natychmiastowe zastapienie ˛ jej przez inna, ˛ należac ˛ a˛ do tej samej grupy. Praktykowane jest również pozostawienie grupy maszyn nieprzydzielonych do żadnego zadania jako zabezpieczenia w przypadku poważniejszej awarii. Typowym przykładem zastosowania klastrów wysokiej dostepności ˛ sa˛ serwery internetowe oraz systemy zarzadzaj ˛ ace ˛ przedsiebiorstwami. ˛ MIBAPICH, MVAPICH2 Wykład 1 – p. 7/26 Wykład 1 Klastry komputerów PC z wezłami ˛ SMP Architektura klastrów obliczeniowych Klaster z w˛ezłami SMP ze wzgledu ˛ na dostep ˛ do pamieci ˛ jest architektura˛ hybrydowa. ˛ Poszczególne w˛ezły klastra sa˛ typowym przykładem systemów z pamieci ˛ a˛ współdzielona. ˛ Natomiast ich połaczenie ˛ w klaster musi być rozpatrywane jako przykład modelu z pamieci ˛ a˛ rozproszona. ˛ Każdy w˛ezeł posiada dostep ˛ tylko do swojej lokalnej pamieci, ˛ a odwołania do modułów pamieci ˛ innych w˛ezłów wymagaja˛ odwoływania sie˛ do nich poprzez sieć komunikacyjna. ˛ Aplikacje równoległe Aplikacje sekwencyjne Środowisko do programowania równoległego Warstwa pośrednia klastra (Obraz pojedynczego systemu, Infrastruktura dostępowa) Stacja robocza Stacja robocza Stacja robocza Stacja robocza Stacja robocza AM AM AM AM AM Interfejs sieciowy Interfejs sieciowy Interfejs sieciowy Interfejs sieciowy Interfejs sieciowy Sieć o wysokiej wydajności Wykład 1 – p. 9/26 Wykład 1 Modele programowania I Metaklastry (Systemy Gridowe) Dynamiczny postep ˛ w dziedzinie rozległych sieci komputerowych (WAN), umożliwił stworzenie zintegrowanych hierarchicznych architektur typu metaklaster. Składaja˛ sie˛ one z wielu klastrów rozmieszczonych zazwyczaj w geograficznie odległych miejscach. Tego typu architektury sa˛ postrzegane przez użytkowników jako całość (jeden wirtualny metaklaster), umożliwiajac ˛ wykorzystanie jego zasobów w jednolity sposób. Z punktu widzenia programisty różnicowanie równoległych modeli obliczeń odbywa sie˛ w wyniku udzielenia odpowiedzi na nastepuj ˛ ace ˛ pytania: Czy dostepna ˛ pamieć ˛ jest fizycznie współdzielona, czy też rozproszona? Czy równoległość zadawana jest w sposób jawny, czy też niejawny? Czy operacje komunikacyjne zadawane sa˛ jawnie, czy niejawnie? Co reprezentuja˛ operacje bazowe? W jakim stopniu operacje komunikacyjne realizowane sa˛ sprz˛etowo, a w jakim programowo? itp. Wykład 1 – p. 11/26 Wykład 1 Modele programowania II Modele programowania III W wyniku odpowiedzi na te pytania możemy wyróżnić nastepuj ˛ ace ˛ modele programowania obliczeń równoległych: model z wykorzystaniem kompilatorów zrównoleglajacych ˛ programy sekwencyjne, Cały czas trwaja˛ badania nad opracowywaniem kompilatorów zrównoleglajacych ˛ programy sekwencyjne. Mimo tego nie osiagn ˛ eły ˛ one zadowalajacego ˛ poziomu zaawansowania (dojrzałości) i nadaja˛ sie˛ do ograniczonej klasy zastosowań. model z równoległościa˛ danych, Model z równoległościa˛ danych polega na wstepnym ˛ model z pamieci ˛ a˛ współdzielona˛ (funkcjonalny) bazujacy ˛ na wykorzystaniu pamieci ˛ współdzielonej (shared memory), czy też rozproszonej pamieci ˛ współdzielonej (distributed shared memory), model z wymiana˛ komunikatów (message-passing paradigm), model z wykorzystaniem zdalnego wywołania procedur (remote procedure call), model obiektowy. przyporzadkowaniu ˛ danych do procesorów przez programiste, ˛ natomiast realizacja operacji komunikacyjnych oraz przydziału zadań do poszczególnych procesorów jest wykonywana automatycznie przez kompilator. Takie podejście jest zrealizowane w standardzie HPF (High Performace Fortran). Został w nim wyspecyfikowany zbiór funkcji i rozszerzeń dla jezyka ˛ programowania Fortran, które wspieraja˛ kompilator podczas procesu zrównoleglania programu sekwencyjnego. Model ten nadaje sie˛ głównie do obliczeń regularnych. Wykład 1 Wykład 1 – p. 13/26 Modele programowania IV Modele programowania V Model z pami˛ecia˛ współdzielona˛ bazuje na wykorzystaniu wspólnej Główne cechy modelu z wymiana˛ komunikatów to: pamieci, ˛ do której dostep ˛ maja˛ wszystkie procesory. Podstawowym zagadnieniem wystepuj ˛ acym ˛ w tym modelu jest odpowiednia synchronizacja dostepu ˛ do pamieci ˛ oraz porzadkowanie ˛ zdarzeń. dowolny proces posiadajac ˛ bezpośredni dostep ˛ tylko do swojej pamieci ˛ lokalnej może komunikować sie˛ z innym procesem dzieki ˛ wymianie komunikatów, Rozwinieciem ˛ modelu z pamieci ˛ a˛ współdzielona˛ jest model wielowatkowy ˛ , w którym procesy zastapione ˛ zostały przez watki, ˛ czyli tzw. procesy lekkie (Lightweight Processes). Obecnie w wiekszości ˛ systemów operacyjnych zaimplementowane zostały mechanizmy wspierajace ˛ watki. ˛ Znajduja˛ sie˛ one również w standardzie POSIX (IEEE POSIX 1003.1c). wymiana danych pomiedzy ˛ procesorami wymaga z definicji udziału komunikujacych ˛ sie˛ procesorów, np. jeden proces wysyła komunikat, a drugi go odbiera. Wiele współczesnych jezyków ˛ programowania i bibliotek zawiera również wsparcie dla przetwarzania wielowatkowego, ˛ w tym także jezyk ˛ Java, czy też C#. Również model programowania w oparciu o dyrektywy preprocesora OpenMP wykorzystuje watki ˛ jako podstaw˛e swojego działania. Wykład 1 – p. 15/26 Najważniejszymi zaletami modelu z wymiana˛ komunikatów sa: ˛ możliwość osiagni ˛ ecia ˛ wysokiej wydajności obliczeń, uniwersalność, dzieki ˛ której można zaimplementować ten model na różnych platformach sprz˛etowych. Wykład 1 Modele programwania VI Modele programwania VII Model zdalnego wywoływania procedur pozwala on aplikacji na wywoływanie procedur (podprogramów) znajdujacych ˛ sie˛ na innych komputerach. Według tej koncepcji aplikacja wykonywana przez komputer A wywołuje procedure˛ znajdujac ˛ a˛ sie˛ na komputerze B, wysyłajac ˛ polecenie wykonania podprogramu wraz z argumentami wywołania. Nastepnie ˛ program wywołujacy ˛ przechodzi w stan oczekiwania na zakończenie wykonywania procedury przez komputer B w celu odebrania od niego wyników wykonania procedury. Model ten pozwala na tworzenie aplikacji rozproszonych w technologii klient-serwer. Jako odrebny ˛ model programowania równoległego można również traktować obiektowy model programowania umożliwiajacy ˛ komunikacje pomiedzy ˛ obiektami znajdujacymi ˛ sie˛ na różnych komputerach połaczonych ˛ ze soba˛ przy pomocy sieci komunikacyjnej. Tego typu rozwiazania ˛ buduje sie˛ zazwyczaj w oparciu o jeden z wyżej wymienionych modeli programowania równoległego, jednakże z punktu widzenia programisty te szczegóły implementacyjne sa˛ niewidoczne. W oparciu o model zdalnego wywołania procedur powstała koncepcja zdalnego wywołania metod w jezyku ˛ Java (Remote Method Invocation), standard CORBA (Common Object Request Broker Architecture), technologie .NET, czy też EJB z technologii J2EE. Wykład 1 – p. 17/26 Modele programowania VIII Wykład 1 Procesy współbieżne Modele programowania klastrów z w˛ezłami SMP moga˛ zostać podzielone na dwie kategorie: Mówimy, że dwa procesy sa˛ współbieżne, jeśli jeden z nich rozpoczyna sie˛ przed zakończeniem drugiego. model jednorodny (SMM - single memory model), model hybrydowy (HMM - hybrid memory model). W przypadku modelu jednorodnego programista tworzy aplikacje równoległa˛ wykorzystujac ˛ jedynie mechanizmy udostepniane ˛ przez jeden model programowania. W modelu hybrydowym programista tworzy aplikacje˛ równoległa˛ wykorzystujac ˛ wiecej ˛ niż jeden model programowania równoległego. W systemach jednoprocesorowych czas pracy procesora jest dzielony pomiedzy ˛ wszystkie wykonywane współbieżnie procesy poprzez wykorzystanie zasady podziału czasu. Jeśli w systemie komputerowym jest wiele procesorów, moga˛ one wykonywać różne procesy jednocześnie. Uzależnione procesy moga˛ ze soba˛ współpracować lub współzawodniczyć. Praca takich procesów wymaga synchronizacji. Wykład 1 – p. 19/26 Wykład 1 Wzajemne wykluczanie Bezpieczeństwo i żywotność Obiekt, z którego może korzystać w sposób wyłaczny ˛ wiele procesów, nazywa sie˛ zasobem dzielonym. Poprawność programu sekwencyjnego: cz˛eściowa poprawność - jeśli sie˛ zatrzyma, to zwróci dobre wyniki, Fragment procesu w którym korzysta on z obiektu dzielonego, nazywa sie˛ sekcja˛ krytyczna˛ tego procesu. własność stopu - w ogóle sie˛ zatrzyma. Problem wzajemnego wykluczania: zsynchronizować N procesów, Własność bezpieczeństwa - program współbieżny jest bezpieczny z których każdy w nieskończonej petli ˛ na przemian zajmuje sie˛ „własnymi sprawami” i wykonuje sekcje˛ krytyczna, ˛ w taki sposób, aby wykonanie jakichkolwiek dwóch lub wiecej ˛ procesów nie pokrywało sie˛ w czasie. jeśli nigdy nie doprowadza do niepożadanego ˛ stanu (nigdy swa procesy nie znajda˛ sie˛ jednocześnie w swoich sekcjach krytycznych). Rozwiazanie ˛ problemu wzajemnego wykluczania - dodanie instrukcji poprzedzajacych ˛ sekcje˛ krytyczna˛ (protokół wst˛epny), oraz nastepuj ˛ acych ˛ bezpośrednio po sekcji krytycznej (protokół końcowy). Własność żywotności zapewnia, że każde pożadane ˛ zdarzenie w końcu zajdzie (jeśli jakiś proces czeka na wejście do swojej sekcji krytycznej, do w końcu do niej wejdzie). Sprawiedliwość. Wykład 1 Wykład 1 – p. 21/26 Blokada i zagłodzenie Watek ˛ - definicja Blokada (zastój, zakleszczenie lub martwy punkt) - Zbiór procesów znajduje sie˛ w stanie blokady, jeśli każdy z tych procesów jest wstrzymywany w oczekiwaniu na zdarzenie, które może być spowodowane przez jakiś inny proces z tego zbioru. Zagłodzenie (wykluczenie) - proces nie zostaje wznowiony, mimo że zdarzenie na które czeka, wystepuje ˛ dowolna˛ ilość razy (za każdym razem gdy proces ten mógłby być wznowiony, jest wybierany jakiś inny proces). Wykład 1 – p. 23/26 Watek ˛ (thread) można określić jako pojedyncza˛ sekwencje˛ sterowania wewnatrz ˛ procesu (podstawowa˛ jednostka˛ użycia procesora). Watek ˛ wykonuje niezależny ciag ˛ instrukcji, który może być szeregowany do wykonania przez system operacyjny. Środowiskiem do wykonywania watku ˛ jest proces. Tradycyjna implementacja procesu ma jeden watek ˛ sterowania. W nowszych systemach dopuszcza sie˛ istnienie wielu watków ˛ wewnatrz ˛ procesu. Wykład 1 Własności watków ˛ Typy watków ˛ Koszt utworzenia i przełaczenia ˛ watku ˛ jest mniejszy niż procesu. Dane statyczne procesu sa˛ dla watków ˛ działajacych ˛ w ramach jednego procesu wzajemnie widoczne. Ze wzgledu ˛ na sposób implementacji rozróżnia sie˛ nastepuj ˛ ace ˛ typy watków: ˛ Watki ˛ poziomu jadra ˛ (kernel-space threads) sa˛ implementowane Wykonanie każdego watku ˛ przebiega sekwencyjnie; każdy watek ˛ ma swój licznik rozkazów. Watki ˛ moga˛ być wykonywane na oddzielnych procesorach, co umożliwia przyspieszenie obliczeń. poprzez dołaczenie ˛ do każdego procesu tabeli jego watków. ˛ System zarzadza ˛ każdym watkiem ˛ wykorzystujac ˛ kwant czasu przyznany dla jego procesu rodzica (funkcja clone). Watki ˛ poziomu użytkownika (user-space threads). Rezygnacja z Ponieważ watki ˛ dziela˛ wspólne dane konieczna jest synchronizacja dostepu ˛ do tych wspólnych danych. zarzadzania ˛ watkami ˛ przez jadro. ˛ W procesie jest definiowany zbiór wykonalnych procedur, które sa˛ „wymieniane” poprzez operacje na wskaźniku stosu. Dwupoziomowy (hybrydowy) system watków ˛ (two-level threads). Połaczenie ˛ systemu watków ˛ poziomu użytkownika i jadra. ˛ Wykład 1 – p. 25/26 Wykład 1