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

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

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

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

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

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

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

Programowanie w standardzie MPI

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

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

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

Message Passing Interface

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

Wprowadzenie. Dariusz Wawrzyniak 1

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

Zadania na zaliczenie przedmiotu Przetwarzanie równoległe Zebrał dla roku.ak. 2015/2016 Rafał Walkowiak,

Programowanie współbieżne i rozproszone

Weryfikacja oprogramowania, korzystajacego z MPI

Operacje grupowego przesyłania komunikatów

Middleware wprowadzenie października 2010

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

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

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

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

51. Metody komunikacji nieblokującej.

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

Nowoczesne technologie przetwarzania informacji

Pytania przykładowe (z ubiegłych lat) na zaliczenie przedmiotu Przetwarzanie równoległe Przygotował Rafał Walkowiak Poznań 3.01.

Klient-Serwer Komunikacja przy pomocy gniazd

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

Programowanie Równoległe Wykład 5. MPI - Message Passing Interface (część 3) Maciej Matyka Instytut Fizyki Teoretycznej

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

Algorytmy i Struktury Danych

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

IPC: Kolejki komunikatów

Wywoływanie procedur zdalnych

ANALIZA EFEKTYWNOŚCI MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

Jak wygląda praca na klastrze

Ćwiczenie nr: 9 Obliczenia rozproszone MPI

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

Ćwiczenie nr: 9 Obliczenia rozproszone MPI

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

4. Procesy pojęcia podstawowe

EFEKTYWNOŚĆ MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

Jadro monolityczne vs. mikrojadro. Mikrojadro. Olga Kowalczuk. 9 grudnia 2008

Procesor operacja R a R b R c W b W a W c R c W c R c

4. Procesy pojęcia podstawowe

Wywoływanie procedur zdalnych

4. Procesy pojęcia podstawowe

61 Topologie wirtualne

Wywoływanie procedur zdalnych

Aplikacja Sieciowa wątki po stronie klienta

Modele programowania równoległego. Pamięć współdzielona Rafał Walkowiak dla III roku Informatyki PP

Multiprocessor Shared-Memory Information Exchange. Damian Klata, Adam Bułak

Programowanie współbieżne i rozproszone

ezwroty WebApi Dokumentacja techniczna

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Programowanie procesorów graficznych GPGPU

Programowanie Urządzeń Mobilnych. Część II: Android. Wykład 2

PAŃSTWOWE PRZEDSIĘBIORSTWO UśYTECZNOŚCI PUBLICZNEJ POCZTA POLSKA C E N N I K NIEPOWSZECHNYCH USŁUG POCZTOWYCH W OBROCIE KRAJOWYM

Język FBD w systemie Concept

Wprowadzenie do programowania współbieżnego

Obliczenia rozproszone MPI

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

PRZEWODNIK PO PRZEDMIOCIE

Programowanie współbieżne Wykład 11 Wprowdzenie do MPI. Rafał Skinderowicz

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

asix4 Podręcznik użytkownika CAN_AC_PCI - drajwer protokołu CANBUS dla karty CAN_ACx_PCI Podręcznik użytkownika

L4Ka::Pistachio Mikrojądra mogą być wydajne

Obliczenia rozproszone MPI

Paweł Skrobanek. C-3, pok

Wykład 14. Zagadnienia związane z systemem IO

Systemy operacyjne III

Zdalne wywoływanie procedur RPC

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

Zdalne wywoływanie procedur RPC

Przetwarzanie równoległesprzęt. Rafał Walkowiak Wybór

16. Taksonomia Flynn'a.

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

Inżynieria oprogramowania

Architektura systemów komputerowych. dr Artur Bartoszewski

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

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

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

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

Kolejki FIFO (łącza nazwane)

Programowanie Współbieżne

Kolejne funkcje MPI 1

Przetwarzanie rozproszone

Spis treści. 1 Wprowadzenie. 1.1 Podstawowe pojęcia. 1 Wprowadzenie Podstawowe pojęcia Sieci komunikacyjne... 3

O superkomputerach. Marek Grabowski

AKADEMIA GÓRNICZO-HUTNICZA. Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki KATEDRA INFORMATYKI. SyncFile

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1

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

Protokoły sieciowe - TCP/IP

Zdalne wywoływanie procedur RPC 27. października 2010

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

Budowa karty sieciowej; Sterowniki kart sieciowych; Specyfikacja interfejsu sterownika sieciowego; Open data link interface (ODI); Packet driver

Transkrypt:

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

MPP - Cechy charakterystyczne 1 Prywatna, wyłączna przestrzeń adresowa. Równoległość definiowana wprost przez programistę. MoŜliwość uzyskania wysokiej efektywności przetwarzania i skalowalności. Typowy model dla gron stacji roboczych i systemów wielo-komputerowych o niewspółdzielonej przestrzeni adresowej. 12/4/2011 Message-Passing Programming 2

MPP - Cechy charakterystyczne 2 Elementy danych naleŝą wyłącznie do jednej przestrzeni adresowej dane rozdzielone wprost. Model wzmacnia naturalnie lokalność dostępu do danych. Dostęp do danych nielokalnych wymaga współpracy 2 procesów posiadającego dane i Ŝądającego - konieczność zsynchronizowania procesów. Model łatwo implementowalny w róŝnych architekturach sprzętowych.

MPP - Struktura programów Asynchroniczne całkowita niezaleŝność przetwarzania trudna analiza kodu ze względu na niedeterminizm powodowany nieokreśloną kolejnością operacji realizowanych współbieŝnie. Luźno synchroniczne procesy wykonywane asynchronicznie, lecz grupy procesów synchronizują się co pewien czas dla zrealizowania interakcji. Okresowa synchronizacja pozwala łatwiej wnioskować o przebiegu przetwarzania na podstawie kodu. Ogólnie - róŝne programy dla róŝnych procesów SPMD jednakowy kod dla większości procesów, realizacja asynchroniczna bądź luźno-synchroniczna. 12/4/2011 Message-Passing Programming 4

Typy podstawowych operacji Send, Receive Send(void *sendbuf, int nelems, int dest) Receive(void *recvbuf, int nelems, int source) Proces0 Proces1 A=100; Send(&A,1,1); Receive(&A,1,0); printf( %d\n,a); A=0; Jaką wartość wyświetli Proces1? 100? 0? 12/4/2011 Message-Passing Programming 5

Blokujące operacje komunikacyjne wstrzymanie nadawcy i/lub odbiorcy Operacje niebuforowane MoŜliwe znaczne czasy oczekiwania na odbiorcę/nadawcę, który się spóźnia. MoŜliwe zakleszczenie przy jednakowej kolejności operacji wysłanie-później-odbiór (odwrotnie teŝ) w ramach obu procesów - konieczna zmiana kolejności operacji np. w programie SPMD. 12/4/2011 Message-Passing Programming 6

Blokujące operacje komunikacyjne Operacje buforowane Niebezpieczeństwo przepełnienia buforów przy braku zsynchronizowanego odbioru danych. MoŜliwe zakleszczenie przy jednakowej kolejności operacji odbiór-później-wysłanie (tylko takiej kolejności) w ramach obu procesów - konieczna zmiana kolejności operacji np. w programie SPMD. 12/4/2011 Message-Passing Programming 7

Blokujące operacje komunikacyjne realizacje 1. Dane buforowane po stronie nadawcy i odbiorcy (realizacja bez udziału procesora ) nadawca kontynuuje pracę po przepisaniu danych do bufora, sprzęt kopiuje dane między buforami, odbiorca sprawdza zawartość bufora przy operacji odbioru i kontynuuje pracę po przepisaniu komunikatu do obszaru danych. 2. Dane buforowane po jednej stronie (realizuje procesor)- moŝliwe realizacje: proces odbiorcy przerywany, dane kopiowane do bufora odbiorcy (wznowienie procesu nadawcy), a następnie kopiowane z bufora do lokacji docelowej po zainicjowaniu operacji odbioru - proces nadawcy zapisuje dane do bufora i jest kontynuowany, w momencie gdy odbiorca gotowy następuje przerwanie procesu nadawcy i bezpośrednie kopiowanie do lokacji docelowej.

Nie-blokujące operacje komunikacyjne Blokujące operacje komunikacyjne zapewniają stan komunikacji zgodny ze swoim znaczeniem - kosztem oczekiwania (bez buforów) lub kosztem obsługi buforów. Nie-blokujące operacje wspomagane operacją sprawdzenia statusu -?status? dla testowania stanu realizacji (ewentualnego stanu niezgodności znaczeniowej) zapoczątkowanej operacji komunikacji. Oczekiwanie na dostarczenie danych moŝe być wykorzystane na przetwarzanie. 12/4/2011 Message-Passing Programming 9

Nie-blokujące operacje komunikacyjne Nie-blokujące komunikacje nie-buforowane niepoprawna modyfikacja obszaru danych nadawanych i niepoprawny odczyt danych odbieranych przed zakończeniem transmisji. Wspomaganie sprzętowe komunikacji moŝe całkowicie ukryć koszt komunikacji (czas) procesor liczy gdy dane się pojawiają. Nie-blokujące komunikacje buforowane wspomagane sprzętowo redukcja czasu niedostępności obszarów danych tylko na czas kopiowania danych tylko z/do buforów realizowane na Ŝądanie procesu (realizacja przesłania).

Praktyczne realizacje Message Passing Interface (MPI) Parallel Virtual Machine (PVM) Implementują blokujące i nie-blokujące operacje komunikacyjne. Blokujące łatwiejsze i bezpieczniejsze programowanie. Nie-blokujące wyŝsza efektywność poprzez maskowanie kosztów komunikacji, lecz w przypadku błędu niebezpieczeństwo niepoprawnego dostępu do danych komunikujących się procesów. 12/4/2011 Message-Passing Programming 11

MPI Standardowa biblioteka dla modelu programowania równoległego z przesyłaniem komunikatów. Minimalny zbiór funkcji to: MPI_Init inicjalizacja MPI MPI_Finalize zakończenie MPI MPI_Comm_size uzyskanie liczby procesów MPI_Comm_rank uzyskanie własnego identyfikatora procesu MPI_Send, MPI_Recv nadanie, odbiór komunikatu 12/4/2011 Message-Passing Programming 12

Cechy MPI Funkcje MPI_Init i MPI_Finalize muszą być wywołane przez wszystkie procesy. Podział procesów na domeny mogących się komunikować procesów. Adresowanie poprzez identyfikator i nazwę domeny. MoŜliwość etykietowania typu komunikatu i odbierania komunikatu o określonym lub nieokreślonym typie. MoŜliwość odbierania komunikatu z dowolnego źródła w określonej domenie komunikacyjnej. 12/4/2011 Message-Passing Programming 13

Cechy MPI Podstawowe: funkcja odbioru blokująca, funkcja nadawania blokująca lub nie w zaleŝności od wersji; zawsze buforowana z bezpiecznym dostępem do obszaru danych nadawanych. MoŜliwość zakleszczenia przy cyklicznych transmisjach przy wersji blokującej nadawania konieczność zapewnienia komplementarnej kolejności operacji nadawania i odbioru. MoŜliwość nadawania i odbioru w ramach jednej operacji MPI_Sendrecv.

Cechy MPI - komunikacja nieblokująca MPI_Isend, MPI_Irecv Konieczność sprawdzenia stanu realizacji operacji czy dane skopiowano z/do bufora przed rozpoczęciem korzystania z bufora/danych. Zmienna typu MPI_Request parametrem wywołania (tworzona i zwracana). MPI_Test sprawdzanie statusu przy uŝyciu obiektu zapytania MPI_Request MPI_Wait oczekiwanie na zakończenie operacji przy obiekcie MPI_Request 12/4/2011 Message-Passing Programming 15

Operacje grupowe Operacje grupowe (komunikacyjne): bariera synchronizacyjna dla grupy procesów rozesłanie 1-do-wszystkich z grupy 12/4/2011 Message-Passing Programming 16

Operacje globalne MPI posiada w zestawie funkcji operacje globalne realizowane równolegle przez procesory na danych rozproszonych w ich pamięciach lokalnych. Niezbędna do zrealizowania operacji komunikacja jest realizowana nie wprost. Redukcja wszyscy-do-jednego: połączenie elementów lokalnych za pomocą podanej operacji i przesłanie wyniku do podanego odbiorcy (lub wszystkich). Operacje: Minimum; maksimum; suma; iloczyn; log/bitowe and, or, xor; pozycja minimum, pozycja maksimum; prefix; gather; all-gather; scatter; all-to-all; zdefiniowane przez uŝytkownika.