Programowanie Współbieżne. Wstęp

Podobne dokumenty
Modelowanie procesów współbieżnych

Wprowadzenie do programowania współbieżnego

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Równoległość i współbieżność

Równoległość i współbieżność

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych

5. Model komunikujących się procesów, komunikaty

Klasyczne problemy współbieżności. Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów

Mechanizmy komunikacji. spotkania symetryczne (język CSP) spotkania asymetryczne (Ada) przestrzenie krotek (Linda) potoki, komunikaty i kanały (Unix)

Programowanie współbieżne i rozproszone

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

Program jest więc strukturą statyczną zapisaną na jakimś nośniku. Natomiast proces jest wykonującym się programem.

Architektura komputerów

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Klasyfikacje systemów komputerowych, modele złożoności algorytmów obliczeniowych

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Algorytmy dla maszyny PRAM

Programowanie współbieżne Wykład 2. Iwona Kochańska

1 Podstawowe definicje i pojęcia współbieżności

16. Taksonomia Flynn'a.

Numeryczna algebra liniowa

Mechanizmy pracy równoległej. Jarosław Kuchta

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

3URJUDPRZDQLHZVSyáELH*QHZVWS

Algorytmy i Struktury Danych

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Stan globalny. Krzysztof Banaś Systemy rozproszone 1

Obliczenia równoległe

Nowoczesne technologie przetwarzania informacji

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

ξ II.UWr Wprowadzenie do STM

PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO OPIS PRZEDMIOTU

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

E-ID1G-06-s5. Programowanie współbieżne. Informatyka I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

Mogą pracować w środowisku: Scentralizowanym -mikrokontroler Rozproszonym sieć sterująca, systemy hierarchiczne. Komunikacja z syst.

Współczesne aplikacje sterowania i akwizycji danych są zbiorem komunikujących się wątków lub procesów współbieżnych.

Komunikacja asynchroniczna w modelu rozproszonym

Ingerencja w kod systemu operacyjnego (przerwania) Programowanie na niskim poziomie (instrukcje specjalne) Trudności implementacyjne (alg.

Programowanie współbieżne i równoległe. dr inż. Marcin Wilczewski 2013

Podstawy programowania komputerów

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Proces z sekcją krytyczną. Synchronizacja procesów. Synchronizacja procesów, cd. Synchronizacja procesów, cd. Synchronizacja procesów, cd

Podstawy Informatyki Systemy sterowane przepływem argumentów

Podstawy Techniki Mikroprocesorowej wykład 13: MIMD. Dr inż. Jacek Mazurkiewicz Katedra Informatyki Technicznej

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Algorytmy Równoległe i Rozproszone Część VI - Systemy rozproszone, podstawowe pojęcia

21 Model z pamięcią współdzieloną (model PRAM) - Parallel Random Access Machine

Semafory. // G - globalna dla wszystkich. // Wada - aktywne oczekiwanie Test_and_Set(Li); exit when Li = 0; end loop sekcja_krytyczna(i); G := 0;

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

Programowanie współbieŝne. Paweł Rogaliński Politechnika Wrocławska

Systemy operacyjne III

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Informatyka II stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

Klient-Serwer Komunikacja przy pomocy gniazd

Programowanie współbieżne Wykład 7. Iwona Kochaoska

Języki formalne i techniki translacji

Analiza algorytmów zadania podstawowe

Wykład 2 Podstawowe pojęcia systemów równoległych, modele równoległości, wydajność obliczeniowa, prawo Amdahla/Gustafsona

4. Procesy pojęcia podstawowe

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

4. Procesy pojęcia podstawowe

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Spis treści. Przedmowa Wykaz oznaczeń Wstęp Układy kombinacyjne... 18

Systemy rozproszone System rozproszony

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

Wydajność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Zagadnienia zaawansowane. Lech Kruś,

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Programowanie współbieżne Zadanie nr 4 Spotkania

Synchronizacja procesów

Programowanie w Turbo Pascal

Wykład 1. Systemy przekazywania wiadomości z założeniem bezbłędności działania

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla

Architektura komputerów

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Spis treści. Księgarnia PWN: Maurice Herlihy, Nir Shavit - Sztuka programowania wieloprocesorowego. Podziękowania Przedmowa...

E-I2S-2001-s1. Informatyka II stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

Zał nr 4 do ZW. Dla grupy kursów zaznaczyć kurs końcowy. Liczba punktów ECTS charakterze praktycznym (P)

Część 3. Układy sekwencyjne. Układy sekwencyjne i układy iteracyjne - grafy stanów TCiM Wydział EAIiIB Katedra EiASPE 1

PODSTAWY PRZETWARZANIA RÓWNOLEGŁEGO INFORMACJI

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Synchronizacja procesów

Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel

Analiza ilościowa w przetwarzaniu równoległym

Przetwarzanie Rozproszone i Równoległe

Algorytmy Równoległe i Rozproszone Część VII - Systemy rozproszone, wstęp

Transkrypt:

Programowanie Współbieżne Wstęp

Literatura M. Ben-Ari, Podstawy programowania współbieżnego i rozproszonego, WNT W. Richard Stevens Programowanie zastosowań sieciowych A.S. Tanenbaum, Rozproszone systemy operacyjne, PWN, 1997. M.J Bach, Budowa systemu operacyjnego UNIX, WNT, 1995

Literatura Z. Manna, A. Pnueli, The Temporal Logic of Reactive and Concurrent Systems (Specific ation), Springer- Verlag, 1992 W. Iszkowski M. Maniecki. - Programowanie współbieżne. Andrew Troelsen, Język C# 2010 i platforma.net 4.0, PWN 2011 Zbigniew Czech, Wprowadzenie do obliczeń równoległych, PWN 2010

Podstawowe pojęcia Proces program sekwencyjny w trakcie wykonywania Procesy współbieżne procesy, których wykonanie może (ale nie musi) przebiegać równolegle. Jeden proces zaczął się przed końcem drugiego Procesy równoległe procesy współbieżne wykonywane w tym samym czasie

Równoległość a współbieżność Procesory P p 2 p 1 p 3 p 4 p 3 Czas t

Podstawowe pojęcia Program współbieżny program składający się z kilku procesów sekwencyjnych które zazwyczaj przesyłają między sobą jakieś dane lub tylko się synchronizują Programowanie współbieżne jest tworzeniem programów, których wykonanie powoduje uruchomienie pewnej liczby procesów współbieżnych (zazwyczaj procesy te są zależne)

Podstawowe pojęcia Zdarzenia Synchroniczne takie na które czkamy Asynchroniczne występują niespodziewanie w dowolnej chwili Instrukcja atomowa - niepodzielna

Podstawowe pojęcia Procesy zależne dwa procesy nazywamy zależnymi, jeżeli fakt wykonywania któregokolwiek z nich wpływa na wykonywanie drugiego Zmienna dzielona zmienna wspólna, wykorzystywana przez kilka współbieżnych procesów. Sekcja krytyczna fragment procesu, w którym korzysta on ze zmiennej dzielonej Synchronizacja uporządkowanie akcji poszczególnych procesów w czasie

Podstawowe pojęcia W literaturze można spotkać, określenia. Współbieżny (concurrent) Równoległy (parallel) Rozproszony (distributed)

Podstawowe pojęcia Program współbieżny jest poprawny jeśli posiada własności bezpieczeństwa i żywotności. Własność Bezpieczeństwa - proces utrzymuje system w pożądanym stanie. Własność żywotności jeżeli któryś z procesów czeka na jakieś zdarzenie, to ono w końcu zajdzie. Szczególny rodzaj własności żywotności nazywa się własnością uczciwości

Podstawowe pojęcia Uczciwość słaba Jeśli proces nieprzerwanie zgłasza żądanie, to kiedyś będzie ono obsłużone. Uczciwość mocna Jeśli proces zgłasza żądanie nieskończenie wiele razy to kiedyś będzie ono obsłużone. Oczekiwanie liniowe Jeśli proces zgłasza żądanie, będzie ono obsłużone zanim dowolny inny proces zostanie obsłużony więcej niż raz. FIFO Jeśli proces zgłasza żądanie, to będzie ono obsłużone przed dowolnym żądaniem zgłoszonym później.

Podstawowe pojęcia Najczęstsze błędy Blokada (deadlock) każdy proces ze zbioru P czeka na zdarzenie, które może być spowodowanie wyłącznie przez inny proces z tego zbioru. Zagłodzenie (starvation) - sytuacja, w której proces jest nieskończenie wstrzymywany, gdyż zdarzenie na które oczekuje, powoduje wznawianie innych procesów Aktywne czekanie proces czekający na zdarzenie bez przerwy sprawdza czy ono już wystąpiło angażując niepotrzebnie czas procesora.

Podstawowe pojęcia Przeplot Abstrakcja programowania współbieżnego polega na badaniu przeplatanych ciągów wykonań atomowych instrukcji procesów sekwencyjnych

Podstawowe pojęcia Rozważamy tylko dwa przypadki Współzawodnictwo - Dwa procesy ubiegają się o ten sam zasób: zasób obliczeniowy, komórka pamięci, lub kanał Komunikacja - Dwa procesy mogą chcieć się porozumieć, by przesłać dane od jednego do drugiego

Zależności czasowe Procesy mogą działać z dowolną szybkością i mogą reagować na dowolne zewnętrzne sygnały! Zależności czasowych brak!

Ciągi wywołań i instrukcje atomowe LOAD n; ADD 1; STORE n; LOAD n; ADD 1; STORE n; LOAD n; LOAD n; ADD 1; ADD 1; STORE n; STORE n; LOAD n; ADD 1; LOAD n; ADD 1; STORE n; STORE n;

Klasyczne problemy Wzajemnego wykluczania Producenta i konsumenta Czytelników i pisarzy Pięciu filozofów Bizantyjskich generałów

Modele programowania rozproszonego Komunikacja synchroniczna do wymiany komunikatów niezbędny nadawca i odbiorca Komunikacja asynchroniczna nadawca po wysłaniu komunikatu nie musi czekać aż odbiorca go odbierze.

Identyfikowanie procesów i przepływ danych Kanały dedykowane zarówno nadawca jak i odbiorca znają swoje identyfikatory. Każda wiadomość jest przekazywana bez dodatkowych kosztów związanych np. z przeliczaniem adresu. Komunikacja asymetryczna Nadawca zna adres odbiorcy ale odbiorca nie musi go znać. Nadaje się bardzo dobrze do systemów typu klient serwer Rozsyłanie komunikatów (BroadCast) Zarówno odbiorca nie wie od kogo ma odebrać komunikat jak i nadawca nie zna odbiorcy, więc wysyła do wszystkich.

Tworzenie procesów Dynamiczne Elastyczność Dynamiczne używanie zasobów Wyrównywanie obciążenia Statyczne Szybka inicjacja Wyspecjalizowane zadania

Klasyfikacja maszyn równoległych SISD Single Instruction Stream, Single Data Stream Pamięć M Dane Instrukcje Procesor P

Klasyfikacja maszyn równoległych SIMD Single Instruction Stream, Multiple Data Stream Jednostka Sterująca P P P M M M

Klasyfikacja maszyn równoległych MIMD Multiple Instruction Stream, Multiple Data Stream P P P M M M Pamięć wspólna

Klasyfikacja maszyn równoległych MIMD Bez wspólnej pamięci, system rozproszony P M P M P P M M

Architektura - pierścień 0 1 2 3 Odległość między dwoma najbardziej odległymi jednostkami = 0,5*p (z zaokrągleniem w dół) przy przesyłaniu 2 kierunkowym oraz p-1 przy jednokierunkowym

Architektura tablica 2 wymiarowa 0 1 2 3 4 5 6 7 8 9 10 11 Odległość 0,5*(p x +p y )

Architektura - Hipersześcian 9 10 11 8 3 1 2 0 154 7 6 5 14 12 13

Architektura - Hipersześcian Hipersześcian rzędu n zbudowany jest z 2 n węzłów Każda architektura rzędu wyższego zawiera w sobie architekturę rzędu niższego W przedstawionym przykładzie 4 wymiarowym mamy odległość log 2 p

Sieć idealnie przetasowana 000 001 010 011 100 101 110 111 Wadą kostki jest logarytmiczny wzrost stopni wierzchołków wraz z jej skalowaniem. Sieć idealnie przetasowana składa się z p=2 n procesorów. Dwa typy łącz: dwukierunkowe wymień oraz jednokierunkowe tasuj (od procesora i do 2i mod (p-1) za wyjątkiem p-1)

Architektura - drzewo 0 1 2 3 4 5 6 7 8 9 10 11 12 Zaleta: najmniejsza liczba kanałów do komunikacji = p-1 maksymalna odległość 2*li_poziomów Wada: gdy zawiedzie jeden węzeł to przestaje działać cała gałąź

Klasy równoległości Ziarnistość G= czas obliczen czas komunikacji

Klasy równoległości Równoległość drobnoziarnista (małe G) Równoległość gruboziarnista (duże G)

Klasy równoległości Równoległość procesów równoległość w kodzie programowym dotyczącym danego problemu obliczeniowego Funkcjonalna wyspecjalizowane procesy Geometryczna np. mnożenie macierzy Algorytmiczna najbardziej drobnoziarnisty podział Równoległość danych program jest wykonywany jednocześnie na różnych zbiorach danych.

Przyspieszenie i efektywność Przyspieszenie To(1) optymalny czas jednoprocesorowego rozwiązania T(p) czas wykonania zadania przez p procesorów S p = To(1) T(p)

Granica przyspieszenia logt(p) Praktyczna granica przyspieszenia Teoretyczna granica przyspieszenia log p

Przyspieszenie i efektywność Efektywność E p = S(p) p =To(1) T(p)*p W idealnym przypadku S(p)=p i E(p)=1

E Granulacja i efektywność 1 Optimum dopasowanie granulacji do sprzętu Duży udział komunikacji G zbyt małe G zbyt duże Nieefektywny podział tylko jeden procesor G

Organizacja obliczeń Układ z procesem nadrzędnym (Master-Slave) M S S S

Organizacja obliczeń Przetwarzanie potokowe 0 1 2 3 Każdy procesor musi czekać aż otrzyma dane nie mogą rozpocząć jednocześnie cały układ działa w tempie najwolniejszego niewielka elastyczność E= N*p*T p*(n+p-1)*t = N N+p-1

Dla czego warto zrównoleglać Sortowanie przez zamianę prostą program sortowanie const n=40; var a:array[1..n] of integer; k:integer; procedure sort(lewy,prawy:integer); var i,j,pom:integer; begin for i:=lewy to prawy 1 do for j:=i+1 to prawy do if a[j]<a[i] then begin pom:=a[j]; a[j]:=a[i]; a[i]:=pom; end; end; BEGIN {program główny} for k:=1 to n do read(a[k]); sort(1,n); for k:=1 to n do write(a[k]) END.

Sortowanie przez zamianę prostą Koszt: Czyli około: n 1 n 2... 1= n(n-1) 2 n 2 2

Sortowanie przez scalanie 4,2,7,6,1,8,5,0,3,9 4,2,7,6,1 8,5,0,3,9 1,2,4,6,7 0,3,5,8,9 0 1 2 3 4 5 6 7 8 9

Sortowanie przez scalanie program sortowanie; const n = 8; dwaen = 16; var a:array[1..dwaen] of integer; k:integer; procedure scal (lewy,srodkowy,prawy:integer); var licznik1,licznik2:integer; k,indeks1,indeks2:integer; begin licznik1:=lewy; licznik2:=srodkowy; while licznik1 <srodkowy do if a[licznik1] < a[licznik2] then begin write(a[licznik1],' '); licznik1:=licznik1+1; if licznik1>=srodkowy then for indeks2:=licznik2 to prawy do write(a[indeks2],' ') end else begin write (a[licznik2],' '); licznik2:=licznik2+1; if licznik2>prawy then begin for indeks1:= licznik1 to srodkowy -1 do write (a[indeks1],' '); licznik2:=srodkowy {zakoncz} end end end;

Sortowanie przez scalanie begin {program glowny} for k:=1 to dwaen do read(a[k]); { tu dodajemy cobegin } sort(1,n); sort(n+1,dwaen); { tu dodajemy coend } scal(1,n+1,dwaen); end.

Sortowanie przez scalanie Szacunkowy koszt: Aby posortować porównań. n 2 wykonujemy tylko Dla dwóch podciągów to jest to scalić. n 2 4 n 2 2 2 = n2 8 porównań + n aby