Operacje grupowego przesyłania komunikatów

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

Message Passing Interface

Architektury systemów równoległych

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

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

Operacje kolektywne MPI

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

Programowanie współbieżne i rozproszone

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

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

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

Przetwarzanie równoległesprzęt

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

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

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

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

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

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

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

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

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

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

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

Rozszerzenia MPI-2 1

Sprzęt czyli architektury systemów równoległych

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

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


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

Numeryczna algebra liniowa

16. Taksonomia Flynn'a.

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

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

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

Programowanie w standardzie MPI

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

Programowanie procesorów graficznych GPGPU

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

Jak wygląda praca na klastrze

Łagodne wprowadzenie do Message Passing Interface (MPI)

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

Macierzowe algorytmy równoległe

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

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

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.

Architektura komputerów

Algorytmy numeryczne 1

Kolejne funkcje MPI 1

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

Programowanie Współbieżne

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

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

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

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

Działanie komputera i sieci komputerowej.

Obliczenia równoległe

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

Optymalizacja komunikacji w systemach rozproszonych i równoległych

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

Podstawy programowania w języku C

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

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

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

Obliczenia rozproszone z wykorzystaniem MPI

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

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

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

1. ARCHITEKTURY SYSTEMÓW KOMPUTEROWYCH

Mosty przełączniki. zasady pracy pętle mostowe STP. Domeny kolizyjne, a rozgłoszeniowe

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

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

Mikroprocesor Operacje wejścia / wyjścia

POZNA SUPERCOMPUTING AND NETWORKING. Wprowadzenie do MPI

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

Przykładowe pytania DSP 1

Architektura systemów komputerowych. dr Artur Bartoszewski

Podstawy Projektowania Przyrządów Wirtualnych. Wykład 9. Wprowadzenie do standardu magistrali VMEbus. mgr inż. Paweł Kogut

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

Spis treści. Dzień 1. I Rozpoczęcie pracy ze sterownikiem (wersja 1707) II Bloki danych (wersja 1707) ZAAWANSOWANY TIA DLA S7-300/400

Weryfikacja oprogramowania, korzystajacego z MPI

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

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

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

Podstawy Informatyki Elementarne podzespoły komputera

51. Metody komunikacji nieblokującej.

Zaawansowane operacje grupowe

Programowanie współbieżne i rozproszone

Komunikacja kolektywna w środowisku MPI

Task Parallel Library

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

Magistrala. Magistrala (ang. Bus) służy do przekazywania danych, adresów czy instrukcji sterujących w różne miejsca systemu komputerowego.

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

Autor: inż. Wojciech Zatorski Opiekun pracy: dr inż. Krzysztof Małecki

Automatyzacja procesu tworzenia sprzętowego narzędzia służącego do rozwiązywania zagadnienia logarytmu dyskretnego na krzywych eliptycznych

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

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

Architektura komputerów

Transkrypt:

Operacje grupowego przesyłania komunikatów 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ń 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 3

Sieci połączeń w systemach równoległych Rodzaje sieci połączeń: podział ze względu na łączone elementy: połączenia procesory pamięć (moduły pamięci) połączenia międzyprocesorowe (międzywęzłowe) podział ze względu na charakterystyki łączenia: sieci statyczne zbiór połączeń dwupunktowych sieci dynamiczne przełączniki o wielu dostępach 4

5

Intel Knights Landing 6

Sieci połączeń Sieci (połączenia) dynamiczne magistrala (bus) krata przełączników (crossbar switch przełącznica krzyżowa) sieć wielostopniowa (multistage network) Sieć wielostopniowa p wejść i p wyjść, stopnie pośrednie (ile?) każdy stopień pośredni złożony z p/2 przełączników 2x2 poszczególne stopnie połączone w sposób realizujący idealne przetasowanie (perfect shuffle) (j=2i lub j=2i+1 p) przy dwójkowym zapisie pozycji wejść i wyjść idealne przetasowanie odpowiada rotacji bitów, przełączniki umożliwiają zmianę wartości ostatniego bitu 7

Sieci połączeń Porównanie sieci dynamicznych: wydajność szerokość pasma transferu (przepustowość) możliwość blokowania połączeń koszt liczba przełączników skalowalność zależność wydajności i kosztu od liczby procesorów 8

Sieci połączeń Sieci statyczne Sieć w pełni połączona Gwiazda Kraty: 1D, 2D, 3D Kraty z zawinięciem, torusy Drzewa: zwykłe lub tłuste Hiperkostki: 1D, 2D, 3D itd.. Wymiar d, liczba procesorów 2^d Bitowy zapis położenia węzła Najkrótsza droga między 2 procesorami = ilość bitów, którymi różnią się kody położenia procesorów 9

Topologia torusa 10

Topologie hiperkostki i drzewa 11

Sieci połączeń 12

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) 13

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 ) 14

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 15

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); 16

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 17

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); 18

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 19

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]; } } 20