Obliczenia rozproszone z wykorzystaniem MPI

Podobne dokumenty
Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

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

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ

Paradygmaty programowania. Paradygmaty programowania

Systemy Operacyjne - Operacje na plikach

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

Grzegorz Mazur. Zak lad Metod Obliczeniowych Chemii UJ. 14 marca 2007

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

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

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

Programowanie generyczne w C++

Operacje grupowego przesyłania komunikatów

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

Rozdzia l 3. Laboratorium 3. danych zawierajac

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

Wieloprogramowy system komputerowy

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014. Forma studiów: Stacjonarne Kod kierunku: 06.

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

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

Ghost in the machine

HPC na biurku. Wojciech De bski

Here comes the sun. Wyk lad niesystematyczny. Marcin Makowski. 24 października Zak lad Chemii Teoretycznej UJ

Algorytmy i Struktury Danych

Wskaźniki, funkcje i tablice

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

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013. Forma studiów: Stacjonarne Kod kierunku: 06.

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013. Forma studiów: Niestacjonarne Kod kierunku: 11.

Paradygmaty programowania

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ

Paradygmaty programowania

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

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

Architektura systemów komputerowych

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

przypadków wywo lanie systemowe (funkcja systemowa) lub funkcja biblioteczna zwraca wartość 1(czasamiNULL) iprzypisujezmiennej zewn etrznej,

Język ludzki kod maszynowy

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2016/2017. Forma studiów: Niestacjonarne Kod kierunku: 11.

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

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

Równoleg le sortowanie przez scalanie

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

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

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

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Normy wektorów i macierzy

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Symetria w obliczeniach molekularnych

Szablony funkcji i szablony klas

przerwany proces móg l zareagować na określone zdarzenie. Można je traktować jako software owe wersje przerwań sprz etowych.

Funkcje systemu Unix

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

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Programowanie procesorów graficznych GPGPU

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

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013. Forma studiów: Stacjonarne Kod kierunku: 11.

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

Wieloprogramowy system komputerowy

2 Przygotował: mgr inż. Maciej Lasota

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2014/2015. Forma studiów: Stacjonarne Kod kierunku: 06.

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

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

Przykład MPI: zbiór Mandelbrota

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Kompilator języka C na procesor 8051 RC51 implementacja

SYSTEM DIAGNOSTYCZNY OPARTY NA LOGICE DOMNIEMAŃ. Ewa Madalińska. na podstawie prac:

Nowoczesne technologie przetwarzania informacji

Wstęp do programowania 1

Programowanie - wykład 4

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Uzupełnienie dot. przekazywania argumentów

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

Jeden przyk lad... czyli dlaczego warto wybrać MIESI.

Obsługa wyjątków. Język C++ WW12

Wstęp do programowania 2

12. Rekurencja. UWAGA Trzeba bardzo dokładnie ustalić <warunek>, żeby mieć pewność, że ciąg wywołań się zakończy.

z powielaniem wielu struktur danych oraz komunikacja

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

Zaawansowane programowanie w C++

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2015/2016. Forma studiów: Stacjonarne Kod kierunku: 11.

Laboratorium Podstawy Przetwarzania Rozproszonego SPRAWOZDANIE z zadania SERWIS KOMPUTEROWY

Wprowadzenie do programowania współbieżnego

MMX i SSE. Zbigniew Koza. Wydział Fizyki i Astronomii Uniwersytet Wrocławski. Wrocław, 10 marca Zbigniew Koza (WFiA UWr) MMX i SSE 1 / 16

Zastosowanie Robotów. Ćwiczenie 6. Mariusz Janusz-Bielecki. laboratorium

Ćwiczenie nr 520: Metody interpolacyjne planowania ruchu manipulatorów

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

Wykorzystanie platformy GPGPU do prowadzenia obliczeń metodami dynamiki molekularnej

Programowanie 2. Język C++. Wykład 3.

Projektowanie klas c.d. Projektowanie klas przykład

pami eć operacyjna przechowuje dane do przetworzenia, tymczasowe dane pomocnicze,

Rekurencja. Przygotowała: Agnieszka Reiter

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

4.2 Sposób korzystania z l acza

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

Wyk lad 7: Drzewa decyzyjne dla dużych zbiorów danych

Programowanie w standardzie MPI

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

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2015/2016. Prawo pracy i prawo urzędnicze. Przedmioty kierunkowe

Transkrypt:

Obliczenia rozproszone z wykorzystaniem Zarys wst u do podstaw :) Zak lad Metod Obliczeniowych Chemii UJ 8 sierpnia 2005

1 e konkretniej Jak szybko, i czemu tak wolno? 2 e szczegó lów 3 Dyspozytor Macierz g estości Obliczenia rozproszone z wykorzystaniem

Co? e konkretniej Jak szybko, i czemu tak wolno? Technika programowania pozwalajaca na równoczesne wykonywanie operacji poprzez jeden lub wiecej komputerów Programowanie rozproszone Rodzaj programowania równoleg lego, wyróżniajacy sie tym że procesory nie maja wspólnej pamieci operacyjnej Obliczenia rozproszone z wykorzystaniem

Po co? e konkretniej Jak szybko, i czemu tak wolno? Żeby przyspieszyć obliczenia oczywiście! Ale też żeby by lo taniej Obliczenia rozproszone z wykorzystaniem

Jak? e konkretniej Jak szybko, i czemu tak wolno? Weź kop e procesorów Po l acz je jakoś I weź kogoś kto zrównolegli kod Obliczenia rozproszone z wykorzystaniem

Architektura e konkretniej Jak szybko, i czemu tak wolno? Jest tego sporo... Systemy ze wspólna pamieci a Symmetric Multiprocessing (SMP) Non-Uniform Memory Architecture (NUMA) Klastry Inne rozwiazania (w tym hybrydowe) Ale... My si e zajmiemy klastrami To samo podejście dzia la na NUMA Na SMP w laściwie też, ale nie jest optymalne Obliczenia rozproszone z wykorzystaniem

Model programowy e konkretniej Jak szybko, i czemu tak wolno? Tak w ogóle Możliwości jest sporo My zajmiemy sie tylko jedna SPMD Single Program Multiple Data (SPMD) Wszystkie procesory wykonuja ten sam program, ale każdy z nich na w lasnych danych. Obliczenia rozproszone z wykorzystaniem

SPMD I e konkretniej Jak szybko, i czemu tak wolno? Obliczenia rozproszone z wykorzystaniem

SPMD II e konkretniej Jak szybko, i czemu tak wolno? 1 Bloki szeregowe wykonywane niezależnie przez każdy w eze l 2 W blokach równoleg lych każdy w eze l wykonuje jedynie cz eść obliczeń 3 W ilogu bloku równoleg lego nast uje redukcja Obliczenia rozproszone z wykorzystaniem

Marzenia a rzeczywistość e konkretniej Jak szybko, i czemu tak wolno? Uruchamiajac obliczenia na n procesorach, chcielibyśmy żeby by ly wykonane n razy szybciej. Niestety, rzadko kiedy tak jest. Czasami zwi ekszenie n może spowodować wyd lużenie obliczeń! Obliczenia rozproszone z wykorzystaniem

Prawo Amdahla e konkretniej Jak szybko, i czemu tak wolno? Przyspieszenie dzia lania programu wynikajace z jego zrównoleglenia wynosi co najwyżej I = ( f + 1 f ) 1 n gdzie f to szeregowa cz eść obliczeń a n to liczba procesorów. Obliczenia rozproszone z wykorzystaniem

A poza tym... e konkretniej Jak szybko, i czemu tak wolno? Z le wiadomości Narzut na komunikacj e Nieoptymalny podzia l problemu Ale jest też dobra Hypercache Obliczenia rozproszone z wykorzystaniem

Co? e szczegó lów Message Passing Interface () Specyfikacja biblioteki przesy lania komunikatów dla potrzeb programowania równoleg lego. Kluczowe cechy Otwarta specyfikacja Przenośność Wydajność Zestandaryzowane interfejsy dla FORTRANu, C, C++ Istniejace interfejsy do wielu innych jezyków De facto standard dla implementacji obliczeń rozproszonych. Obliczenia rozproszone z wykorzystaniem

Skad to wziać e szczegó lów Powszechnie używane, bezp latne implementacje: LAM/ (http://www.lam-mpi.org/) CH (http://www-unix.mcs.anl.gov/mpi/mpich/) Open (http://www.open-mpi.org/), chociaż na razie we wczesnej fazie rozwoju, powinno w nied lugim czasie do l aczyć do tej listy Komercyjne, wyspecjalizowane implementacje, czesto do l aczane przez producentów systemów wieloprocesorowych/rozproszonych Obliczenia rozproszone z wykorzystaniem

Co za dużo to niezdrowo e szczegó lów jest dość rozbudowane, dlatego ogranicz e si e do Tylko C++ Tylko funkcje najbardziej niezb edne w typowym kodzie kwantowochemicznym Obliczenia rozproszone z wykorzystaniem

e szczegó lów Najważniejsze to dobrze zaczać (i niegorzej skończyć) Funkcja 1 Init (int argc, char* argv []) musi być wywo lana przed wywo laniem jakiejkolwiek innej funkcji. Przed zakończeniem programu musi być wywo lana funkcja Finalize (), W przypadku b l edu uniemożliwiajacego poprawne zakończenie należy wywo lać funkcje Abort() 1 Uwaga: wszystkie klasy, funkcje, sta le i zmienne zdefiniowane sa w przestrzeni nazw (namespace). Obliczenia rozproszone z wykorzystaniem

Przyk lad e szczegó lów 1 #i n c l u d e < mpicxx. h> 2 3 i n t main ( i n t a r g c, char * argv [ ] ) 4 { 5 : : I n i t ( a r g c, argv ) ; 6 7 / /... 8 9 : : F i n a l i z e ( ) ; 10 } Obliczenia rozproszone z wykorzystaniem

Komunikatory e szczegó lów Komunikator to podstawowe pojecie w. Komunikator l aczy grupe procesów, umożliwiajac im wymiane danych i synchronizacje. Istnieja różne rodzaje komunikatorów realizujace różne typy i topologie po l aczeń. My bedziemy sie pos lugiwać tylko jednym predefiniowanym komunikatorem, COMM WORLD, l acz acym wszystkie procesy. Obliczenia rozproszone z wykorzystaniem

Podstawowe funkcje e szczegó lów Informacje o środowisku Comm::Get size() zwraca liczb e procesów Comm::Get rank() zwraca numer procesu (od 0 do Comm::Get size() 1) Redukcja Allreduce (void* operand, void* result, int count, Datatype datatype, Op op) powoduje wykonanie operacji na wszystkich wynikach cz eściowych wskazywanych przez operand; wynik jest umieszczany pod adresem wskazywanym przez result Obliczenia rozproszone z wykorzystaniem

Interfejs dyspozytora niedoidy Dyspozytor Macierz g estości 1 c l a s s D i s p a t c h e r : boost : : noncopyable { 2 p u b l i c : 3 typedef 4 s t d : : p a i r<unsigned long, unsigned long > Range ; 5 6 typedef boost : : o p t i o n a l<range> T a s k I n f o ; 7 8 v i r t u a l D i s p a t c h e r ( ) { } 9 10 v i r t u a l T a s k I n f o g e t t a s k ( ) = 0 ; 11 } ; Obliczenia rozproszone z wykorzystaniem

Prosty dyspozytor - interfejs Dyspozytor Macierz g estości 1 c l a s s S t a t i c D i s p a t c h e r : p u b l i c D i s p a t c h e r { 2 p u b l i c : 3 S t a t i c D i s p a t c h e r ( unsigned long n ) ; 4 5 T a s k I n f o g e t t a s k ( ) ; 6 7 p r i v a t e : 8 unsigned long m n0 ; 9 unsigned long m n1 ; 10 } ; Obliczenia rozproszone z wykorzystaniem

Dyspozytor Macierz g estości Prosty dyspozytor - implementacja I 1 S t a t i c D i s p a t c h e r : : S t a t i c D i s p a t c h e r ( unsigned long n ) 2 { 3 const unsigned rank = : :COMM WORLD. Get rank ( ) ; 4 const unsigned s i z e = : :COMM WORLD. G e t s i z e ( ) ; 5 const unsigned long k = n / s i z e ; 6 const unsigned long l = n % s i z e ; 7 i f ( rank < l ) { 8 m n0 = rank * ( k + 1 ) ; 9 m n1 = ( rank + 1 ) * ( k + 1 ) ; 10 } e l s e { 11 m n0 = rank * k + l ; 12 m n1 = ( rank + 1 ) * k + l ; 13 } 14 } Obliczenia rozproszone z wykorzystaniem

Dyspozytor Macierz g estości Prosty dyspozytor - implementacja II 1 D i s p a t c h e r : : T a s k I n f o S t a t i c D i s p a t c h e r : : g e t t a s k ( ) 2 { 3 i f ( m n1 == 0) 4 return T a s k I n f o ( ) ; 5 6 const Range t a s k ( m n0, m n1 ) ; 7 m n0 = 0 ; 8 m n1 = 0 ; 9 10 return t a s k ; 11 } Obliczenia rozproszone z wykorzystaniem

Prosty dyspozytor - uwagi Dyspozytor Macierz g estości Naiwny algorytm Można próbować liej, biorac wagi oparte na wzglednej szybkości wez lów Albo przydzielać zadania dynamicznie Obliczenia rozproszone z wykorzystaniem

Dyspozytor Macierz g estości Macierz g estości - wersja szeregowa 1 f o r ( unsigned i = 0 ; i < n; ++ i ) 2 f o r ( unsigned k = 0 ; k < n; ++k ) 3 f o r ( unsigned l = 0 ; l <= k; ++ l ) 4 P( k, l ) += occ ( i ) * C( k, i ) * C( l, i ) ; 5 6 return P ; Obliczenia rozproszone z wykorzystaniem

Dyspozytor Macierz g estości Macierz gestości - wersja równoleg la - obliczenia czastkowe 1 { 2 s t d : : a u t o p t r<d i s p a t c h e r > d = d i s p a t c h e r ( n ) ; 3 4 while ( D i s p a t c h e r : : T a s k I n f o t a s k i n f o = 5 d >b e g i n t a s k ( ) ) { 6 f o r ( unsigned i = t a s k i n f o >f i r s t ; 7 i < t a s k i n f o >second ; ++ i ) 8 f o r ( unsigned k = 0 ; k < n; ++k ) 9 f o r ( unsigned l = 0 ; l <= k; ++ l ) 10 P( k, l ) += 11 occ ( i ) * C( k, i ) * C( l, i ) ; 12 } 13 } Obliczenia rozproszone z wykorzystaniem

Dyspozytor Macierz g estości Macierz g estości - wersja równoleg la - redukcja 1 u b l a s : : s y m m e t r i c m a t r i x<double> reduced P = 2 u b l a s : : z e r o m a t r i x<double>(n ) ; 3 4 : :COMM WORLD. A l l r e d u c e (P. data ( ). b e g i n ( ), 5 reduced P. data ( ). b e g i n ( ), 6 ( n * ( n + 1 ) ) / 2, 7 : : DOUBLE, : : SUM) ; 8 9 return reduced P ; Obliczenia rozproszone z wykorzystaniem