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

Podobne dokumenty
Operacje grupowego przesyłania komunikatów

Message Passing Interface

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

Architektury systemów równoległych

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

Operacje kolektywne MPI

Programowanie współbieżne i rozproszone

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

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

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

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

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

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

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

Miary Wydajności. Efektywność programu równoległego (E) jest definiowana jako stosunek przyśpieszenia do liczby procesorów

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

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

Rozszerzenia MPI-2 1


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

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

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

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

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

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

Wprowadzenie do MPI. Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski

Programowanie w standardzie MPI

Łagodne wprowadzenie do Message Passing Interface (MPI)

Systemy rozproszone. Państwowa Wyższa Szkoła Zawodowa w Chełmie. ** Instytut Fizyki Uniwersytet Marii Curie-Skłodowskiej w Lublinie

Programowanie aplikacji równoległych i rozproszonych. Wykład 8

Numeryczna algebra liniowa. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

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

Macierzowe algorytmy równoległe

Programowanie współbieżne Wykład 12 MPI c.d. Rafał Skinderowicz

Programowanie Współbieżne

Numeryczna algebra liniowa

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

Obliczenia rozproszone z wykorzystaniem MPI

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

Optymalizacja komunikacji w systemach rozproszonych i równoległych

Architektura sieci połączeń między procesorami, sterowanie komunikacjami, biblioteki komunikacyjne

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

Wydajność komunikacji grupowej w obliczeniach równoległych. Krzysztof Banaś Obliczenia wysokiej wydajności 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

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

POZNA SUPERCOMPUTING AND NETWORKING. Wprowadzenie do MPI

Kolejne funkcje MPI 1

Interfejs MPI. Maciej Kasperski, Rafał Kozik. 16 kwietnia 2008

Programowanie współbieżne WYKŁADY - CZ. 5EX. PRZYKŁAD. LICZBY PIERWSZE. Andrzej Baran

Programowanie procesorów graficznych GPGPU

Weryfikacja oprogramowania, korzystajacego z MPI

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

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.

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

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

Komunikacja kolektywna w środowisku MPI

Wprowadzenie do MPI. Interdyscyplinarne Centrum Modelowania. Matematycznego i Komputerowego Uniwersytet Warszawski

Politechnika Krakowska Im. Tadeusza Ko±ciuszki Wydziaª Fizyki, Matematyki i Informatyki

Zaawansowane operacje grupowe

Podstawy programowania w języku C

Algorytmy numeryczne 1

Wydajność programów sekwencyjnych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Wprowadzenie do MPI. Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski

Page 1. Strategie przesyłania - store and forward (zapamiętaj i prześlij) - cut-through routing

Biblioteki graficzne MPI - MPE

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

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.

51. Metody komunikacji nieblokującej.

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Jak wygląda praca na klastrze

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

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

Biblioteka PCJ do naukowych obliczeń równoległych

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

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

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Część I. Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania. Zadanie 1.1. (0 3)

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Metody optymalizacji soft-procesorów NIOS

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

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Task Parallel Library

PODSTAWY AUTOMATYKI. MATLAB - komputerowe środowisko obliczeń naukowoinżynierskich - podstawowe operacje na liczbach i macierzach.

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

Programowanie systemów z pamięcią wspólną specyfikacja OpenMP. Krzysztof Banaś Obliczenia równoległe 1

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

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

Metody Metody, parametry, zwracanie wartości

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Modelowanie rynków finansowych z wykorzystaniem pakietu R

Algorytmy sortujące 1

Część 4 życie programu

Algorytmy i Struktury Danych

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

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

Transkrypt:

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

Operacje grupowego przesyłania komunikatów Operacje, w ramach których ten sam komunikat lub zbiór komunikatów przesyłany jest pomiędzy więcej niż dwoma procesami nazywane są operacjami komunikacji grupowej (collective communication) lub operacjami globalnymi Przykładami takich operacji są m.in. rozgłaszanie (broadcast), rozpraszanie (scatter), zbieranie (gather), redukcja (reduction) czy wymiana (exchange) Wydajność realizacji takich operacji może być bardzo różna, zależnie od przyjętej strategii Optymalna strategia realizacji wymaga często uwzględnienia architektury systemu komputerowego i sposobu przesyłania komunikatów w sieci połączeń Krzysztof Banaś Obliczenia równoległe 2

Operacje grupowego przesyłania komunikatów Schematy grupowego przesyłania komunikatów: rozgłaszanie (broadcast) jeden do wszystkich rozpraszanie (scatter) jeden do wszystkich zbieranie (gather) wszyscy do jednego redukcja (gromadzenie, reduction) wszyscy do jednego rozgłaszanie wszyscy do wszystkich (równoważne zbieraniu wszyscy do wszystkich) gromadzenie (redukcja) wszyscy do wszystkich wymiana wszyscy do wszystkich (równoważna rozpraszaniu wszyscy do wszystkich) Nieoptymalna i optymalna realizacja rozgłaszania dla p procesorów i różnych technologii i topologii sieciowych Krzysztof Banaś Obliczenia równoległe 3

Procedury komunikacji grupowej MPI Realizacja procedur komunikacja grupowej w MPI polega na wywołaniu odpowiedniej procedury przez wszystkie procesy w grupie Argumentami procedur komunikacji grupowej są i bufory z danymi wysyłanymi i (jeśli trzeba) bufory na dane odbierane Wszystkie procedury komunikacji grupowej są blokujące (ale zakończenie operacji przez proces nie oznacza koniecznie, że inne procesy także ją zakończyły) Krzysztof Banaś Obliczenia równoległe 4

Procedury komunikacji grupowej MPI bariera int MPI_Barrier( MPI_Comm comm ) rozgłaszanie jeden do wszystkich int MPI_Bcast( void *buff, int count, MPI_Datatype datatype, int root, MPI_Comm comm ) zbieranie wszyscy do jednego int MPI_Gather(void *sbuf, int scount, MPI_Datatype sdtype, void *rbuf, int rcount, MPI_Datatype rdtype, int root, MPI_Comm comm) zbieranie wszyscy do wszystkich równoważne rozgłaszaniu wszyscy do wszystkich (brak wyróżnionego procesu root) int MPI_Allgather( void *sbuf, int scount, MPI_Datatype sdtype, void *rbuf, int rcount, MPI_Datatype rdtype, MPI_Comm comm ) Krzysztof Banaś Obliczenia równoległe 5

Procedury komunikacji grupowej MPI rozpraszanie jeden do wszystkich int MPI_Scatter(void *sbuf, int scount, MPI_Datatype sdtype, void *rbuf, int rcount, MPI_Datatype rdtype, int root, MPI_Comm comm) rozpraszanie wszyscy do wszystkich równoważne wymianie wszyscy do wszystkich (brak wyróżnionego procesu root) int MPI_Alltoall( void *sbuf, int scount, MPI_Datatype sdtype, void *rbuf, int rcount, MPI_Datatype rdtype, MPI_Comm comm ) redukcja wszyscy do jednego int MPI_Reduce(void *sbuf, void *rbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm) redukcja połączona z rozgłaszaniem MPI_Allreduce Krzysztof Banaś Obliczenia równoległe 6

Procedury komunikacji grupowej MPI Operacje stosowane przy realizacji redukcji: predefiniowane operacje uchwyty do obiektów typu MPI_Op (każda z operacji ma swoje dozwolone typy argumentów): MPI_MAX maksimum MPI_MIN minimum MPI_SUM suma MPI_PROD iloczyn operacje maksimum i minimum ze zwróceniem indeksów operacje logiczne i bitowe operacje definiowane przez użytkownika za pomocą procedury: int MPI_Op_create(MPI_User_function *func, int commute, MPI_Op *pop); Krzysztof Banaś Obliczenia równoległe 7

Procedury komunikacji grupowej MPI przykład 1 Całkowanie w przedziale warianty dekompozycji: dekompozycja w dziedzinie w problemu podział przedziału na podprzedziały zrównoleglenie pętli algorytm sekwencyjny narzędzia zrównoleglenia pętli:» automatyczne (OpenMP)» ręczne (Pthreads,MPI) wyniki w obu przypadkach mogą być różne różne liczby podprzedziałów i ich długości Krzysztof Banaś Obliczenia równoległe 8

Procedury komunikacji grupowej MPI przykład 1 MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); if( rank == 0 ) scanf("%lf %lf %d", &a, &b, &N); root=0; MPI_Bcast( &N, 1, MPI_INT, root, MPI_COMM_WORLD ); MPI_Bcast( &a, 1, MPI_DOUBLE, root, MPI_COMM_WORLD ); MPI_Bcast( &b, 1, MPI_DOUBLE, root, MPI_COMM_WORLD ); n_loc = ceil(n/size); dx = (b a)/n; x1 = a + rank*n_loc*dx; if(rank==size 1) n_loc = N n_loc*(size 1); c=0; for(i=0;i<n_loc;i++) { x2 = x1+dx; c += 0.5*(f(x1)+f(x2))*dx; x1=x2; } MPI_Reduce( &c, &calka, 1, MPI_DOUBLE, MPI_SUM, root, MCW); Krzysztof Banaś Obliczenia równoległe 9

Procedury komunikacji grupowej MPI przykład 2 Mnożenie macierz wektor algorytm sekwencyjny, naiwny dekompozycja danych warianty: wierszowy kolumnowy blokowy algorytmy dla rozmaitych wariantów dekompozycji implementacja procedury MPI wykorzystywane w implementacji Krzysztof Banaś Obliczenia równoległe 10

Procedury komunikacji grupowej MPI przykład 2 double x[wymiar], y[wymiar], a[wymiar*wymiar]; // inicjowanie a, x, y MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); n_wier = ceil(wymiar / size); // dodatkowy kod dla WYMIAR niepodzielnego przez size MPI_Allgather(&x[rank*n_wier], n_wier, MPI_DOUBLE, x, n_wier, MPI_DOUBLE, MPI_COMM_WORLD ); for(i=0;i<n_wier;i++){ int ni = n*i; for(j=0;j<n;j++){ y[i] += a[ni+j] * x[j]; } } Krzysztof Banaś Obliczenia równoległe 11