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

Podobne dokumenty