wykład 1

Transkrypt

wykład 1
Programowanie Rozproszone i
Równoległe
Edward Görlich
http://th.if.uj.edu.pl/~gorlich
[email protected]
Motywacja wyboru
• Programowanie rozproszone →
równoległość (wymuszona)
• Oprogramowanie równoległe/rozproszone:
– Aplikacje „biznesowe”
– Obliczenia naukowe, inżynierskie (HPC)
– Telekomunikacyjne
• „Pospolita” równoległość: wątki
• Platformy komunikacyjne: CORBA, DCOM,
.NET remoting, Java RMI ….
Plan Wykładu 1
• Podstawowe pojęcia i zagadnienia
przetwarzania równoległego. Przegląd
rozwiązań.
• Wątki – użycie, rozwiązania synchronizacja
• Technologie wywołań zdalnych przegląd
Plan Wykładu 2
• Model COM
– Interfejsy, IDL
– Rodzaje serwerów, automatyzacja,
przepakowywanie, wątki
– Wywołania zwrotne, eventy
– DCOM
• CORBA
– Specyfikacja, model usług, elementy składowe
– Przykładowe rozwiązania
Plan Wykładu 3
• Model aplikacji warstwowej
– COM+, transakcje
• Programowanie równoległe i rozproszone z
użyciem Javy (Java RMI, … )
Plan Wykładu 4
• .NET remoting
– Omówienie platformy
– Kanały, formattery
– Modele aktywacji, wywołania zwrotne
• Mosty (IIOP,.NET,COM)
• Klastry obliczeniowe
– MOSIX
– MPI
• Modelowanie procesów współbieżnych – Sieci Petriego
Uwaga: Zakres materiału może ulec zmianie, istnieje duża
szansa że zagadnienia z tej strony nie zostaną zrealizowane
Sposób prezentacji
• Materiał będzie ilustrowany w oparciu o
rozwiązania pod platformę Windows lub
platform independent
– Windows
• Wątki, COM, CORBA, .NET
• Visual Studio: C++ i C#
– PI
• Java, CORBA
Warunki zaliczenia
• Zaliczenie ćwiczeń
– Otrzymanie zaliczenia od prowadzącego
ćwiczenia w ustalonym terminie
• Wykład
– Egzamin testowy
– Ocena średnia z ćwiczeń i wyniku egzaminu
Podstawowy przetwarzania
równoległego
Równoległość
• Obliczenia (computing) – zadania wykonywane z pomocą
komputeraz dla osiągnięcia zamierzonego celu
• Obliczenia równoległe (Parallel computing) - szybsze
rozwiązywanie jednego zadania dzięki użyciu wielu
jednostek obliczeniowych(procesorów)
• Obliczenia współbieżne są wykonywane przez wiele
jednoczesnych ścieżek wykonania. (zarówno na
komputerze równoległym jak i „klasycznym”). Głównym
zagadnieniem jest rozwiązywanie konfliktów dostępu do
zasobów
• Definicje pojęć równoległości i współbieżności mogą
silnie zależeć od definiującego
Rozproszenie
• Obliczenia rozproszone (Distributed
computing) używają wielu (2+)
niezależnych, ale połączonych, jednostek,
które współpracują i współdzielą zasoby w
celu rozwiązania zadania
Powód
•
•
•
•
•
•
•
•
Wydajność całkowita: oszczędność czasu rzeczywistego imożliwość
rozwiązania większych problemów
Stosunek ceny do wydajności: dużo tanich zamiast jednego drogiego
Kwestie technologiczne: np. niemożliwość umieszczenia dostatecznej
liczby zasobów w jednym komputerze, istniejąca platforma wymaga
równoległości
Samoistnie równoległe/rozproszone aplikacje: sama istota działania
aplikacji wymaga rozproszenia i równoległości
Współdzielenie zasobów
Dostępność: zapewnienie nieprzerwanego dostepu do usług
Rozbudowa istniejącego systemu
Bywa korzystne marketingowo
Równoległość danych
• Rodzaj równoległości implikowany przez
strukturę danych. Identyczna operacja jest
wykonywana jednocześnie na wszystkich
elementach. Dane to na ogół wektory i macierze.
Ten rodzaj równoległości często pozwala na dużą
równoległość obliczeń.
• Może być wykorzystana przez architekturę danych
równoległych (Data Parallel-architecture)
• Może zostać przekształcona w równoległość
funkcjonalną
Równoległość funkcjonalna
• Wynika z logiki rozwiązania problemu. Można ją
zobaczyć diagramach przepływu sterowania, danych,
samych algorytmach. W odróżnieniu od równoległości
danych tutaj wykonujemy różne operacje. Dane
przepływają do procesów w których są potrzebne. Jest
ograniczona przez wzajemne powiązania operacji. Jej
schemat jest często nieregularny
• Poziomy równoległości funkcjonalnej (dostępnej – nie
mówimy tutaj jeszcze o samym wykonaniu a o elementach
programu)
–
–
–
–
Poziom instrukcji
Poziom pętli, rekurencje
Poziom procedur
Poziom programu
Równoległość potokowa (pipeline)
• Jeżeli diagram przepływu danych jest może
zostać zredukowany do prostego grafu
skierowanego (najlepiej ścieżki
skierowanej) wtedy obliczenia możemy
podzielić na kolejne poziomy (stages).
Każdy poziom może być wykonywany
równolegle. Jeżeli założymy podobny czas
wykonania wszystkich kroków to po
wypełnieniu potoku danymi osiągamy
multiplikatywny wzrost szybkości.