Programowanie współbieżne... (2)

Podobne dokumenty
PARADYGMATY I JĘZYKI PROGRAMOWANIA. Programowanie współbieżne... (w13)

Algorytmy i Struktury Danych

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

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

Programowanie Równoległe Wykład 4. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej

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

Programowanie współbieżne... (4) Andrzej Baran 2010/11

Nowoczesne technologie przetwarzania informacji

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

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

16. Taksonomia Flynn'a.

Algorytmy dla maszyny PRAM

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

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

Programowanie współbieżne... (12) Andrzej Baran 2010/11

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

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

Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1

Programowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1

O superkomputerach. Marek Grabowski

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

Modele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak dla PR PP

HPC na biurku. Wojciech De bski

Modele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak

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

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

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

Programowanie Równoległe Wykład 5. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej

Równoległe algorytmy sortowania. Krzysztof Banaś Obliczenia równoległe 1

Operacje grupowego przesyłania komunikatów. Krzysztof Banaś Obliczenia równoległe 1

Ćwiczenie nr: 9 Obliczenia rozproszone MPI

Dr inż. hab. Siergiej Fialko, IF-PK,

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

Pamięci masowe. ATA (Advanced Technology Attachments)

Jak ujarzmić hydrę czyli programowanie równoległe w Javie. dr hab. Piotr Bała, prof. UW ICM Uniwersytet Warszawski

Ćwiczenie nr: 9 Obliczenia rozproszone MPI

Programowanie Współbieżne

Programowanie Współbieżne. Algorytmy

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Operacje grupowego przesyłania komunikatów

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

Wprowadzenie. Co to jest klaster? Podział ze względu na przeznaczenie. Architektury klastrów. Cechy dobrego klastra.

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

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

Podstawy Informatyki Systemy sterowane przepływem argumentów

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

Wsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm

Klient-Serwer Komunikacja przy pomocy gniazd

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

System operacyjny MACH

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1

ξ II.UWr Wprowadzenie do STM

Programowanie procesorów graficznych GPGPU

Programowanie współbieżne... (6)

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.

Analiza efektywności przetwarzania współbieżnego

PODSTAWY PRZETWARZANIA RÓWNOLEGŁEGO INFORMACJI

Programowanie równoległe

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

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

Programowanie Rozproszone i Równoległe

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

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

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

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

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

Obliczenia Wysokiej Wydajności

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

3URJUDPRZDQLHZVSyáELH*QHZVWS

Numeryczna algebra liniowa

Wstęp do programowania 2

Programowanie współbieżne i rozproszone

Algorytm. a programowanie -

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

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

Literatura. 3/26/2018 Przetwarzanie równoległe - wstęp 1

Wstęp. Historia i przykłady przetwarzania współbieżnego, równoległego i rozproszonego. Przetwarzanie współbieżne, równoległe i rozproszone

dr inż. Jarosław Forenc

Sieciowe Systemy Operacyjne

Systemy operacyjne. Paweł Pełczyński

Architektura komputerów

Architektura Systemów Komputerowych. Architektura potokowa Klasyfikacja architektur równoległych

Obliczenia równoległe

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

Obliczenia rozproszone MPI

Metody optymalizacji soft-procesorów NIOS

Systemy rozproszone System rozproszony

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

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1

Wprowadzenie do programowania współbieżnego

Działanie komputera i sieci komputerowej.

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

4. Procesy pojęcia podstawowe

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

PRZEWODNIK PO PRZEDMIOCIE

Obliczenia rozproszone MPI

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

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

Transkrypt:

Programowanie współbieżne... (2) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html

Prawo Amdahla - powtórka Wydajność E = S/n (na procesor). Stąd S = En E 1 f + 1 f n 1 fn+1 f Przy ustalonej wydajności E ułamek f obliczeń sekwencyjnych algorytmu powinien być odwrotnie proporcjonalny do liczby procesorów. (Czas obliczeń sekwencyjnych T*f ~ 1/n) Programowanie współbieżne... 2

Prawo Amdahla... 80 S f=0.01 60 40 f=0.02 20 200 400 600 800 1000 n f=0.10 Programowanie współbieżne... 3

Przykład. Iloczyn skalarny 1 proces Suma: s = N i=1 x iy i Czas 1 operacji + : Liczba operacji +: N-1; czas obliczeń: 2 procesy: Suma: s = N/2 i=1 x iy i + N i=n/2+1 x iy i Czas obliczeń: T 2 =(N/2 1)δt + δt + C gdzie C jest czasem przesyłania wyniku częściowego - czas komunikacji Przyspieszenie: S = T 1 /T 2 = δt T 1 =(N 1)δt N 1 N/2+C/δt 2 Jeśli c<<δt Programowanie współbieżne... 4

Przykład. Iloczyn... P procesorów. Zakładamy, że P = N, N =2 q S P = T 1 T P = (N 1)δt qδt+qc (qc całkowity czas komunikacji). Kładąc otrzymamy S P = N 1 (1+α)log 2 P = P 1 (1+α)log 2 P α C/δt Nawet dla α =0 S P = P 1 log 2 P <P Programowanie współbieżne... 5

Minsky (1970) Przyspieszenie obliczeń komputera równoległego o n procesorach jest proporcjonalne do log_2(n) Flynn (1972) dowód dla komputerów SIMD Dla komputerów wielkoskalowych prawo Minsky ego nie jest spełnione. Programowanie współbieżne... 6

Przyspieszenie f k T n Hennesy - Flynn S n log 2 n = czas pojedynczego procesora = prawdopodobieństwo jednoczesnej pracy k procesorów = czas potrzebny n proc. do wykonania zadania S = T 1 /T n =1/(f 1 + f 2 /2+f 3 /3+ + f n /n) Przyjmijmy, że (dla każdego k, uproszczenie) Programowanie współbieżne... 7

Hennesy - Flynn (cd) E 1000 500 n 100 50 n log 2 n 10 5 1 1 5 10 50 100 500 1000 n Programowanie współbieżne... 8

Moce komputerów. Przyszlość (Prawo Moore a) Programowanie współbieżne... 9

Strategia Dziel i Zwyciężaj Na podstawie poprzednich przykładow: obliczenia równoległe są strategią typu dziel i zwyciężaj zwycięstwo to przyspieszenie obliczeń. P1 P2 P3... Pp komunikacja CO DZIELIĆ? Dane czy instrukcje? Jak? Kiedy? Programowanie współbieżne... 10

Modele systemów obliczania Współdzielona pamięć (Shared Memory) Przekazywanie komunikatów (Message Passing) Wątki (Threads) Wspolbieżność danych (Data Parallel) Są to abstrakcyjne modele obliczeń niezależne od sprzętu i architektury pamięci Wybór modelu zależy od sytuacji Nie istnieje model najlepszy Programowanie współbieżne... 11

Modele: Shared memory (SM) Wspólna przestrzeń adresowa zapisywana/ odczytywana asynchronicznie Mechanizmy kontrolne zapisu/odczytu (semafory, blokady) Nie istnieje potrzeba komunikacji między poszczególnymi zadaniami Programowanie współbieżne... 12

SM model - realizacja Posix Threads (niski poziom) OpenMP (standard) Paralelizacja automatyczna (robi to kompilator) Programowanie współbieżne... 13

Distributed memory (DM) Charakterystyka... Pamięć i we/wy są zasobami rozproszonymi Czas dostępu do pamięci jest niejednorodny Konieczna jest komunikacja p-p (wymiana informacji) Na procesorach pracuje N kopii systemu operacyjnego Komunikacja: Ethernet, Infiniband, itd. Programowanie współbieżne... 14

DM model - realizacja Gniazda (sockets; standard; niski poziom) PVM Parallel Virtual Machine () MPI Message passing Interface (standard) Programowanie współbieżne... 15

Wątki - Threads Wątki dzielą zasoby Wykonują się równolegle Komunikują sie poprzez wspólną pamięć Działają jak podprogramy (ale w tym samym czasie) Przykładem jest realizacje PTHREADS, OpenMP Programowanie współbieżne... 16

Realizacja OpenMP Wszystkie wątki mają dostęp do wspólnej pamięci i danych dzielonych Dane mogę być prywatne i wspólne Dane prywatne dostępne są tylko dla wątku właściciela http://www.openmp.org Transfer danych odbywa się bardziej przejrzyście Synchronizacja jest wciąż potrzebna lecz jest przeważnie ukryta Programowanie współbieżne... 17

Realizacja OpenMP (wątki) Forum 1992 OpenMP = Application Program Interface Przenośna, skalowalna Wspomaga C/C++ i Fortran Działa we wszystkich architekturach systemów Posiada różne konstrukcje i dyrektywy określające obszary równoległe, podział pracy, synchronizację i dane Programowanie współbieżne... 18

Time Wątki Program P A:= B +C; CALL T1; CALL T2 For i:= 1 to n do Begin A(i):= F(2X+Ln(d)); Sum:= Sum+A(i); End; CALL T3 CALL T4 Threads T 1 T 2 Fig. 1.26 Programowanie współbieżne... 19

Message Passing Interface (MPI) MPI 1994 MPI-2 1996 Standard Model typu WYŚLIJ ODBIERZ (dane, komunikat) ang. Send(data) Recive(data) Machine 1 Task A data Send (data) Machine 2 Task B data Receive (data) Programowanie współbieżne... 20

MPI - cechy Proc M M Każdy procesor ma dostęp tylko do własnej pamięci (dane prywatne) Proc Mechanizm transferu Proc Transfer danych i operacje synchronizacji programuje się jawnie Proc M Proc M M Wszystkie dane są prywatne Współdzielenie danych = wymiena buforów Programowanie współbieżne... 21

Numerologia Każdy element logiczny w komputerze posiada własną nazwę, numer: komórka pamięci, dysk, procesor, proces itd. Np. procesy, wątki mają numery 0, 1, 2,... Proces może się dowiedzieć jaki numer posiada (Ogólniej może to być numeracja złożona: numer grupy, podgrupy, procesu itd) Programowanie współbieżne... 22

MPI przykład: Wyślij N liczb int #include <mpi.h> you = 0; him = 1; MPI_Init(&argc, &argv); include fi le MPI_Comm_rank(MPI_COMM_WORLD, &me); initialize MPI environment get process ID if ( me == 0 ) { process 0 sends error_code = MPI_Send(&data_buffer, N, MPI_INT, him, 1957, MPI_COMM_WORLD); } else if ( me == 1 ) { process 1 receives error_code = MPI_Recv(&data_buffer, N, MPI_INT, you, 1957, MPI_COMM_WORLD, MPI_STATUS_IGNORE); } MPI_Finalize(); leave the MPI environment Programowanie współbieżne... 23

MPI - komunikacja Każdy proces ma swój numer: 0, 1,... Proces 0 you = 1! him = 0! me = 0! MPI_Send! N liczb całkowitych! odbiorca = you = 1! tag = 1957! N liczb całkowitych! nadawca = him = 0! tag = 1957! Process 1 you = 1! him = 0! me = 1! MPI_Recv! Programowanie współbieżne... 24

MPI za/przeciw Zalety MPI Elastyczność może działać na dowolnej wielkości klastrze Bezpośredniość w programie wstawia się wywołania proc. MPI Dostępność istnieje kilka wdrożeń Powszechność model bardzo popularny Wady MPI Reorganizacja kodu sporo roboty Łatwo o błędy dużo detali do sprawdzania Trudności w odnajdywaniu błędow detale Wymaga więcej zasobów potrzebna większa pamięć Specjalnej uwagi wymaga we/wy Programowanie współbieżne... 25

Data Parallel Model (DPM) Operacje na zbiorach danych (np na tablicach) Zespół zadań (program) operuje na wspólnej strukturze danych, a każde zadanie pracuje nad częścią danych. Zadania wykonują te same operacje na danych. Przykład. Utworzyć tablicę Y mnożąc elementy tablicy X przez liczbę Pi (3.1415...) a) na 1 procesorze b) 4 procesorach c) dla n procesorów. Programowanie współbieżne... 26

DPM, przykład Przykład (data parallel model), 4 procesory ARRAY X, Y x1 x2.. x20 x21 x22.. x40 x41 x 42.. x60 x61` x 62.. x80 x x.. x y1 y2.. y20 y21 y22.. y40 y41 y 42.. y60 y61` y 62.. y80 y y.. y 81 82 100 81 82 100 For i:= 1 to 20 do Begin X(i):= Y(i)*PI For i:= 21 to 40 do Begin X(i):= Y(i)*PI For i:= 41 to 60 do Begin (Xi):= Y(i)*PI For i:= 61 to 80 do Begin X(i):= Y(i)*PI End; End; End; End; For i:= 81 to 100 do Begin X(i):= Y(i)*PI End; Programowanie współbieżne... 27

DPM, przykład Przykład, n procesorów (zakladamy, że indeksy macierzy są 0,1,...) Deklaracja m, n, p, k! Deklaracja X(m), Y(m)! Wczytaj X(m)! n = liczba_procesorów()! //ile elementów macierzy przypada na jeden proces! k = m/n! //numer procesu lub procesora: (0,...,p)! p = moj_numer()! //ustal granice zmienności indeksów macierzy w mojej części! istart = p*k; iend =(p+1)*k-1! For i=istart to iend do! Begin! X(i)=Pi*Y(i)! End! Programowanie współbieżne... 28

Przykład ( 1 procesor) 1. Czytaj a() z pliku! 2. wykonaj obliczenia dla a() od a(i=1) do a(i=6)! 3. zapisz a() do pliku! we a a wy Programowanie współbieżne... 29

Przykład (3 procesory) 1. Czytaj a() z pliku 2. Pobierz rank Proces 0 Proces 1 Proces 2 1. Czytaj a() z pliku 2. Pobierz rank 1. Czytaj a() z pliku 2. Pobierz rank 3. If rank==0 then is=1, ie=2 4. If rank==1 then is=3, ie=4 5. If rank==2 then is=5, ie=6 6. Wykonaj obliczenia od a(is) do a(ie) 7. Zbierz wyniki; proces 0 8. If rank==0 zapisz a() do pliku 3. If rank==0 then is=1, ie=2 4. If rank==1 then is=3, ie=4 5. If rank==2 then is=5, ie=6 6. Wykonaj obliczenia od a(is) do a(ie) 7. Zbierz wyniki; proces 0 8. If rank==0 zapisz a() do pliku 3. If rank==0 then is=1, ie=2 4. If rank==1 then is=3, ie=4 5. If rank==2 then is=5, ie=6 6. Wykonaj obliczenia od a(is) do a(ie) 7. Zbierz wyniki; proces 0 8. If rank==0 zapisz a() do pliku we we we a a a wy Programowanie współbieżne... 30

Algorytmy współbieżne (AW) AW to algorytmy, które wykonują się na równoległych maszynach Miarą wydajności AW jest szybkość z jaką można wykonać zadanie na tylu procesorach ile potrzeba Ważny jest czas komunikacji między procesorami Programowanie współbieżne... 31

Algorytmy współbieżne (AW) cd. AW dla danego problemu polega na Wykryciu i wykorzystaniu równoległości w danym algorytmie sekwencyjnym Stworzeniu nowego algorytmu równoległego Adaptacji istniejącego algorytmu równoległego dla zadanego problemu Programowanie współbieżne... 32

Algorytmy współbieżne (AW) cd. Główne zastosowania algorytmów równoległych Problemy programowania liniowego Sortowanie Szybka transformacja Fouriera (FFT) Przeszukiwanie i grafy Operacje macierzowe Programowanie współbieżne... 33

Obliczenia rozproszone Obliczenia rozproszone są z założenia związane z fizycznym rozproszeniem podzadań np. programy pracujące w bankowości muszą działać na pewnym obszarze, w automatach, stanowiskach kasowych, bankomatach itp i komunikować się z głównym systemem bankowym. Programy te działają dla wygody użytkowników (poprzez np. sieci komputerowe) Programowanie współbieżne... 34

Obliczenia rozproszone (cd) Problemy: Czas (lokalny), synchronizacja zegarów. Niepełne informacje o innych węzłach Przekrywanie się informacji (wielu pracujących nad tym samym) Programowanie współbieżne... 35

Klastry komputerowe Klastry komputerowe = razem pracujące procesory, komputery... Beowulf rodzaj klastra komputerowego zbudowanego przy założeniu uzyskania maksymalnej mocy obliczeniowej jak najmniejszym kosztem. Najczęściej budowany ze zwykłych, masowo produkowanych komputerów klasy PC, połączonych siecią Ethernet. Komputery tworzące taki klaster pracują zazwyczaj pod Linuksem, a do obliczeń równoległych używa się bibliotek MPI, LAM lub PVM. Pierwszy: NASA, 1994, Donald Becker Programowanie współbieżne... 36