Łagodne wprowadzenie do Message Passing Interface (MPI)
|
|
- Dominik Kowalski
- 6 lat temu
- Przeglądów:
Transkrypt
1 Łagodne wprowadzenie do Message Passing Interface (MPI) Szymon Łukasik Zakład Automatyki PK Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 1/48
2 Czym jest MPI? Własności MPI MPI-2 Implementacje MPI Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 2/48
3 Czym jest MPI? Czym jest MPI? Własności MPI MPI-2 Implementacje MPI MPI to standard przesyłania wiadomości (komunikatów) pomiędzy procesami programów równoległych działajacych na jednym lub więcej komputerach. Implementowany jest najczęściej w postaci bibliotek, do wykorzystania w programach tworzonych w Fortranie, C, C++, Ada. Pierwsza wersja standardu MPI: MPI-1, ukazała się w maju 1994 r., druga (i obecnie obowiazuj aca) MPI-2 w 1998 roku. Standard MPI ma status public-domain i jest dostępny w sieci Internet pod adresem Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 3/48
4 Własności MPI Czym jest MPI? Własności MPI MPI-2 Implementacje MPI architektura programu - niezależne procesy operujace na różnych danych (MIMD), zapewnia przenośność programów, możliwość stosowania zarówno dla multiprocesorów jak i multikomputerów, udostępnia mechanizmy komunikacji jeden - jeden oraz grupowej, pozwala na tworzenie (intra- i inter-) komunikatorów, zapewnia możliwość definiowania nowych typów danych, umożliwia wykonywanie obliczeń i operacji globalnych, pozwala na definiowanie topologii procesów Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 4/48
5 MPI-2 Czym jest MPI? Własności MPI MPI-2 Implementacje MPI Najnowszy standard umożliwia: równoległe operacje wejścia-wyjścia, zdalne operacje na pamięci, dynamiczne zarzadzanie struktura procesów bioracych udział w obliczeniach. Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 5/48
6 Implementacje MPI Czym jest MPI? Własności MPI MPI-2 Implementacje MPI MPICH2 wieloplatformowa (gridy: MPICH-G2), ogólnodostępna www: LAM/MPI projekt zawieszony, ogólnodostępna www: Open MPI kontynuacja LAM/MPI, ogólnodostępna www: WMPI folklor - dla Windows, płatna www: HP-MPI, IBM-MPI, SGI-MPI implementacje specjalizowane Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 6/48
7 Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 7/48
8 Użyta notacja i uwagi ogólne Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa definicje podano w składni języka C, IN/OUT/INOUT przy argumencie oznacza parametr wejściowy, wyjściowy i modyfikowany przez funkcję, comm to komunikator, który odpowiada oddzielnej strukturze komunikacji, specyfikuje on grupę procesów, które do niego należa MPI_COMM_WORLD to specyficzny komunikator grupujacy wszystkie procesy, które właczyły się do systemu MPI od jego uruchomienia src,dest definiuja numery procesów źródłowych i docelowych komunikatu tag określa znacznik typu komunikatu gdy długość danych jest krótsza od bufora, pozostałe pola bufora nie sa nadpisywane. Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 8/48
9 Podstawowe funkcje Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa Inicjalizacja biblioteki: OUT int MPI_Init(IN int *argc, IN char ***argv); obliczeń: OUT int MPI_Finalize(void); Numer bież acego procesu w danym komunikatorze: OUT int MPI_Comm_rank(IN MPI_Comm comm, OUT int *rank); Ilość procesów w komunikatorze: OUT int MPI_Comm_size(IN MPI_Comm comm, OUT int *size); Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 9/48
10 Komunikacja blokujaca jeden do jednego Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa Wysyłanie danych: OUT int MPI_Send(IN void* buf, IN int count, IN MPI_Datatype datatype, IN int dest, IN int tag, IN MPI_Comm comm); Odbieranie: OUT int MPI_Recv(OUT void* buf, IN int count, IN MPI_Datatype datatype, IN int source, IN int tag, IN MPI_Comm comm, OUT MPI_Status *status); Uwagi: w odwołaniach można użyć stałych MPI_ANY_SOURCE i MPI_ANY_TAG MPI_STATUS jest struktura o polach MPI_SOURCE, MPI_TAG, MPI_ERROR ; sprawdzanie ilości odebranych danych realizuje MPI_Get_count testowanie czy wiadomość nie nadeszła - MPI_Probe Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 10/48
11 Przykład - kom. blokujaca Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa #include < s t d i o. h> #include <mpi. h> void main ( i n t argc, char argv ) { i n t myrank ; MPI_Status s t a t u s ; double a [ ] ; MPI_Init (& argc, &argv ) ; MPI_Comm_rank (MPI_COMM_WORLD, &myrank ) ; i f ( myrank == 0) MPI_Send ( a, 100, MPI_DOUBLE, 1, 17, MPI_COMM_WORLD) ; else i f ( myrank == 1 ) MPI_Recv ( a, 100, MPI_DOUBLE, 0, 17, MPI_COMM_WORLD, &s t a t u s ) ; MPI_Finalize ( ) ; } Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 11/48
12 Typy danych MPI Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa Typ MPI MPI_CHAR MPI_SHORT MPI_INT MPI_LONG MPI_UNSIGNED_CHAR MPI_UNSIGNED_SHORT MPI_UNSIGNED MPI_UNSIGNED_LONG MPI_FLOAT MPI_DOUBLE MPI_LONG_DOUBLE MPI_BYTE MPI_PACKED Typ C signed char signed short int signed int signed long int unsigned char unsigned short int unsigned int unsigned long int float double long double brak brak Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 12/48
13 Pakowanie danych Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa Pakowanie danych do bufora: OUT int MPI_Pack(IN void* inbuf, IN int incount, IN MPI_Datatype datatype, OUT void *outbuf, IN int outsize, INOUT int *position, IN MPI_Comm comm); Rozpakowywanie: OUT int MPI_Unpack(IN void* inbuf, IN int insize, INOUT int *position, OUT void *outbuf, IN int outcount, IN MPI_Datatype datatype, IN MPI_Comm comm); Uwaga: position jest wskaźnikiem do bufora ci agłego (przy wysyłaniu - bufora nadawczego outbuf, przy odbieraniu - bufora odbiorczego inbuf) przesuwanym automatycznie przez funkcje. Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 13/48
14 Przykład - pakowanie Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa i n t p o s i t i o n, i, j, a [ 2 ] ; char b u f f [ ] ;.... MPI_Comm_rank (MPI_COMM_WORLD, &myrank ) ; i f ( myrank == 0) { / /NADAWCA p o s i t i o n = 0 ; MPI_Pack(& i, 1, MPI_INT, b u ff, 1000, &p o s i t i o n, MPI_COMM_WORLD) ; MPI_Pack(& j, 1, MPI_INT, b u ff, 1000, &p o s i t i o n, MPI_COMM_WORLD) ; MPI_Send ( b u ff, p o s i t i o n, MPI_PACKED, 1, 0, MPI_COMM_WORLD) ; } else / / ODBIORCA MPI_Recv ( a, 2, MPI_INT, 0, 0, MPI_COMM_WORLD) Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 14/48
15 Typy użytkownika Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa Do definiowania własnych typów służy rodzina funkcji MPI_TYPE: OUT int MPI_Type_contiguous(IN int count, IN MPI_Datatype oldtype, OUT MPI_Datatype *newtype); OUT int MPI_Type_vector(IN int count, IN int blocklength, IN int stride, IN MPI_Datatype oldtype, OUT MPI_Datatype *newtype); OUT int MPI_Type_struct(IN int count, IN int *array_of_blocklengths, IN MPI_Aint *array_of_displacements, IN MPI_Datatype *array_of_types, OUT MPI_Datatype *newtype); Aby używać nowego typu danych należy dokonać operacji: OUT int MPI_Type_commit (INOUT MPI_datatype *datatype); Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 15/48
16 Przykład - typy użytkownika Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 16/48
17 Przykład - typy użytkownika Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa #include " mpi. h " # def ine SIZE 4 i n t main ( argc, argv ) i n t argc ; char argv [ ] ; { i n t numtasks, rank, source =0, dest, tag =1, i ; f l o a t a [ SIZE ] [ SIZE ] = { 1. 0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, } ; f l o a t b [ SIZE ] ; MPI_Status s t a t ; MPI_Datatype columntype ; MPI_Init (& argc,& argv ) ; MPI_Comm_rank (MPI_COMM_WORLD, &rank ) ; MPI_Comm_size(MPI_COMM_WORLD, &numtasks ) ; Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 17/48
18 Przykład - typy użytkownika Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa MPI_Type_vector ( SIZE, 1, SIZE, MPI_FLOAT, &columntype ) ; MPI_Type_commit(& columntype ) ; i f ( numtasks == SIZE ) { i f ( rank == 0) { for ( i =0; i < numtasks ; i ++) MPI_Send(&a [ 0 ] [ i ], 1, columntype, i, tag, MPI_COMM_WORLD) ; } MPI_Recv ( b, SIZE, MPI_FLOAT, source, tag, MPI_COMM_WORLD, &s t a t ) ; p r i n t f ( " rank=%d b=%3.1 f %3.1 f %3.1 f %3.1 f \ n ", rank, b [ 0 ], b [ 1 ], b [ 2 ], b [ 3 ] ) ; } else p r i n t f ( " Must s p e c i f y %d processors. Terminating. \ n ", SIZE ) ; MPI_Finalize ( ) ; } Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 18/48
19 Tryby komunikacji Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa Polecenia MPI_Send i MPI_Recv realizuja tryb standardowy - wysyłanie MOŻE (ale nie musi) być buforowane (brak oczekiwania na odpowiednie MPI_Recv). Inne tryby to: Buforowany (MPI_Bsend i MPI_Brecv) - wysyłanie odbywa się niezależnie od tego czy została wywołana funkcja odbierajaca ; zwraca sterowanie natychmiast, niezależnie od wystapienia funkcji odbioru, Synchroniczny (prefix S) - wysyłanie niezależnie od tego czy została wywołana funkcja odbierajaca ; zwraca sterowanie po odebraniu wiadomości Przygotowany (prefix R) - wiadomość może być wysłana dopiero wtedy, gdy została wywołana funkcja odbierajaca, w przeciwnym wypadku funkcja wysyłajaca zwraca bład. Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 19/48
20 Tryby komunikacji Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 20/48
21 Komunikacja nieblokujaca Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa Funkcja zwraca sterowanie od razu nie czekajac na wykonanie operacji. OUT int MPI_IXsend(IN void *buf, IN int count, IN MPI_Datatype dtype, IN int dest, IN int tag, IN MPI_Comm comm, OUT MPI_Request *request); OUT int MPI_IXrecv(OUT void *buf, IN int count, IN MPI_Datatype dtype, IN int source, IN int tag, IN MPI_Comm comm, OUT MPI_Request *request); Uwaga: X={,B,S,R} Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 21/48
22 Komunikacja nieblokujaca Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa request jest wskaźnikiem realizacji żadania którego stan można sprawdzić funkcjami - blokujac a i nieblokujac a: OUT int MPI_Wait(INOUT MPI_Request *request, OUT MPI_Status *status); OUT int MPI_Test(INOUT MPI_Request *request, OUT int *flag, OUT MPI_Status *status); Uwaga: flag=true gdy opisywana wskaźnikiem request operacja została zakończona. Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 22/48
23 Przykład - kom. nieblokujaca Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa typedef struct { char data [ MAXSIZE ] ; i n t d a tasize ; MPI_Request req ; } B u f f e r ; B u f f e r b u f f e r [ ] ; MPI_Status s t a t u s ;... MPI_Comm_rank (comm, &rank ) ; MPI_Comm_size(comm, &size ) ; i f ( rank!= size 1) { / i n i c j a l i z a c j a producent a l o k u j e swój b u for / } b u f f e r = ( B u f f e r ) malloc ( sizeof ( B u f f e r ) ) ; while ( 1 ) { / main loop / / producent wypełnia b u for danych i zwraca i c h i l o ś ć / produce ( b u f f e r >data, &b u f f e r >d a tasize ) ; / po czym j e wysyła / MPI_Send ( b u f f e r >data, b u f f e r >datasize, MPI_CHAR, size 1,tag,comm) ; } Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 23/48
24 Przykład - kom. nieblokujaca Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa else { } } / rank == s i z e 1; kod konsumenta / / konsument a l o k u j e jeden b u for dla każdego producenta / b u f f e r = ( B u f f e r ) malloc ( sizeof ( B u f f e r ) ( size 1)); for ( i =0; i < size 1; i ++) / r o z p o c z n i j odbiór od każdego producenta / MPI_Irecv ( b u f f e r [ i ]. data, MAXSIZE, MPI_CHAR, i, tag, comm, &( b u f f e r [ i ]. req ) ) ; for ( i =0; ; i =( i +1)%( size 1)) { / główna p ę t l a oczekiwanie / } MPI_Wait (&( b u f f e r [ i ]. req ), &s t a t u s ) ; / sprawdź i l e danych d o t a r ł o / MPI_Get_count(& status, MPI_CHAR, &( b u f f e r [ i ]. d a tasize ) ) ; / o p r ó ż n i j b u for i r o z p o c z n i j nowy proces odbioru / consume ( b u f f e r [ i ]. data, b u f f e r [ i ]. d a tasize ) ; MPI_Irecv ( b u f f e r [ i ]. data, MAXSIZE, MPI_CHAR, i, tag, comm, &( b u f f e r [ i ]. req ) ) ; Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 24/48
25 Komunikacja grupowa Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa OUT int MPI_Bcast (INOUT void* buffer, IN int count, IN MPI_Datatype datatype, IN int rank, IN MPI_Comm comm); UWAGA: Synchronizacja w operacjach grupowych odbywa się za pomoca barier: OUT MPI_Barrier(IN MPI_Comm comm); Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 25/48
26 Komunikacja grupowa Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa OUT int MPI_Reduce (IN void* send_buffer, OUT void* recv_buffer, IN int count, IN MPI_Datatype datatype, IN MPI_Op operation, IN int rank, IN MPI_Comm comm); Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 26/48
27 Komunikacja grupowa Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa OUT int MPI_Gather (IN void* send_buffer, IN int send_count, IN MPI_datatype send_type, OUT void* recv_buffer, IN int recv_count, IN MPI_Datatype recv_type, IN int rank, IN MPI_Comm comm); Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 27/48
28 Komunikacja grupowa Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa OUT int MPI_Allgather (IN void *sendbuf, IN int sendcount, IN MPI_Datatype sendtype, OUT void *recvbuf, IN int recvcount, IN MPI_Datatype recvtype, MPI_Comm comm); Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 28/48
29 Komunikacja grupowa Użyta notacja i uwagi ogólne Podstawowe funkcje Komunikacja blokujaca jeden do jednego Przykład - kom. blokujaca Typy danych MPI Pakowanie danych Przykład - pakowanie Typy użytkownika Przykład - typy użytkownika Tryby komunikacji Komunikacja nieblokujaca Przykład - kom. nieblokujaca Komunikacja grupowa OUT int MPI_Scatter (IN void *sendbuf, IN int sendcnt, IN MPI_Datatype sendtype, OUT void *recvbuf, int recvcnt, IN MPI_Datatype recvtype, IN int root, IN MPI_Comm comm); Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 29/48
30 Równoległe we-wy Przykład równoległego zapisu Przykład równoległego odczytu Zdalne operacje na pamięci (RMA) Przykład: RMA Dynamiczna struktura obliczeniowa Przykład: dynamiczny model master-slave Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 30/48
31 Równoległe we-wy Równoległe we-wy Przykład równoległego zapisu Przykład równoległego odczytu Zdalne operacje na pamięci (RMA) Przykład: RMA Dynamiczna struktura obliczeniowa Przykład: dynamiczny model master-slave Realizacja: zapis do pliku jest analogia nadawania komunikatu do systemu plików odczyt z pliku jest analogia odbierania komunikatu z systemu plików MPI-2 zawiera analogie do operacji Uniksowych: open, close, seek, read i write. Funkcje: MPI_File_open(); MPI_File_write(); MPI_File_read(); MPI_File_set_view(); MPI_File_close(); MPI_File_seek(); MPI_File_write_shared(); Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 31/48
32 Przykład: równoległy zapis do pliku Równoległe we-wy Przykład równoległego zapisu Przykład równoległego odczytu Zdalne operacje na pamięci (RMA) Przykład: RMA Dynamiczna struktura obliczeniowa Przykład: dynamiczny model master-slave #include " mpi. h " #include < s t d i o. h> # def ine BUFSIZE 100 i n t main ( i n t argc, char argv [ ] ) { i n t i, myrank, buf [ BUFSIZE ] ; MPI_File t h e f i l e ; MPI_Init (& argc, &argv ) ; MPI_Comm_rank (MPI_COMM_WORLD, &myrank ) ; for ( i =0; i <BUFSIZE ; i ++) buf [ i ] = myrank BUFSIZE + i ; MPI_File_open (MPI_COMM_WORLD, " t e s t f i l e ", MPI_MODE_CREATE MPI_MODE_WRONLY, MPI_INFO_NULL, & t h e f i l e ) ; MPI_File_set_view ( t h e f i l e, myrank BUFSIZE sizeof ( i n t ), MPI_INT, MPI_INT, " n a t i v e ", MPI_INFO_NULL ) ; MPI_File_write ( t h e f i l e, buf, BUFSIZE, MPI_INT, MPI_STATUS_IGNORE ) ; MPI_File_close (& t h e f i l e ) ; MPI_Finalize ( ) ; return 0 ; } Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 32/48
33 Przykład: równoległy odczyt pliku Równoległe we-wy Przykład równoległego zapisu Przykład równoległego odczytu Zdalne operacje na pamięci (RMA) Przykład: RMA Dynamiczna struktura obliczeniowa Przykład: dynamiczny model master-slave #include mpi. h #include < s t d i o. h> i n t main ( i n t argc, char argv [ ] ) { i n t myrank, numprocs, bufsize, buf, count ; MPI_File t h e f i l e ; MPI_Status s t a t u s } MPI_Offset f i l e s i z e ; MPI_Init (& argc, &argv ) ; MPI_Comm_rank (MPI_COMM_WORLD, &myrank ) ; MPI_Comm_size (MPI_COMM_WORLD, &numprocs ) ; MPI_File_open (MPI_COMM_WORLD, " t e s t f i l e ", MPI_MODE_RDONLY, MPI_INFO_NULL, & t h e f i l e ) ; MPI_File_get_size ( t h e f i l e, & f i l e s i z e ) ; / w bajtach / f i l e s i z e = f i l e s i z e / size ( i n t ) ; / w l i c z b i e i n t s / b u f s i z e = f i l e s i z e / numprocs + 1; / l o k a l n a l i c z b a do odczytu / buf = ( i n t ) malloc ( b u f s i z e + sizeof ( i n t ) ) ; MPI_File_set_view ( t h e f i l e, myrank b u f s i z e sizeof ( i n t ) ), MPI_INT, MPI_INT, " n a t i v e ", MPI_INFO_NULL ) ; MPI_File_read ( t h e f i l e, buf, bufsize, MPI_INT, &s t a t u s ) ; MPI_Get_count (& status, MPI_INT, &count ) ; p r i n t f ( " process %d read %d i n t s \ n ", myrank, count ) ; MPI_File_close (& t h e f i l e ) ; MPI_Finalize ( ) ; return 0; Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 33/48
34 Zdalne operacje na pamięci (RMA) Równoległe we-wy Przykład równoległego zapisu Przykład równoległego odczytu Zdalne operacje na pamięci (RMA) Przykład: RMA Dynamiczna struktura obliczeniowa Przykład: dynamiczny model master-slave Zdalne operacje na pamięci pamięć dzielona: MPI-2: dane sa przesyłane z jednej przestrzeni adresowej do drugiej za pomoca pary operacji sendreceive Pamięć dzielona: procesy maja dostęp do wspólnej puli pamięci i moga wprost wykonywać operacje na pamięci Realizacja: oddzielenia synchronizacji od przesyłania danych w celu zwiększenia efektywności, powstałe rozwi azanie jest oparte na idei okien zdalnego dostępu do pamięci (okno - to porcja przestrzeni adresowej każdego procesu dostępna dla innych). Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 34/48
35 RMA Równoległe we-wy Przykład równoległego zapisu Przykład równoległego odczytu Zdalne operacje na pamięci (RMA) Przykład: RMA Dynamiczna struktura obliczeniowa Przykład: dynamiczny model master-slave Operacje na oknach: pobieranie zawartości okna MPI_Get zapisywanie do okna MPI_Put zmiana zawartości okna MPI_Accumulate A wszystko: synchronizowane przez MPI_Win_Fence Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 35/48
36 Przykład: RMA Równoległe we-wy Przykład równoległego zapisu Przykład równoległego odczytu Zdalne operacje na pamięci (RMA) Przykład: RMA Dynamiczna struktura obliczeniowa Przykład: dynamiczny model master-slave / o b l i c z a n i e p i za pomoca całkowania numerycznego, we r sj a RMA / #include " mpi. h " # include <math. h> i n t main ( i n t argc, char argv [ ] ) { i n t n, myid, numprocs, i ; double PI25DT = ; double mypi, pi, h, sum, x ; MPI_Win nwin, piwin ; MPI_Init (& argc, &argv ) ; MPI_Comm_size (MPI_COMM_WORLD,& numprocs ) ; MPI_Comm_rank (MPI_COMM_WORLD,& myid ) ; i f ( myid == 0) { MPI_Win_create(&n, sizeof ( i n t ), 1, MPI_INFO_NULL, MPI_COMM_WORLD, &nwin ) ; MPI_Win_create(& pi, sizeof ( double ), 1, MPI_INFO_NULL, MPI_COMM_WORLD, &piwin ) ; } else { MPI_Win_create (MPI_BOTTOM, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &nwin ) ; MPI_Win_create (MPI_BOTTOM, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &p i w i n ) ; } Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 36/48
37 Przykład: RMA Równoległe we-wy Przykład równoległego zapisu Przykład równoległego odczytu Zdalne operacje na pamięci (RMA) Przykład: RMA Dynamiczna struktura obliczeniowa Przykład: dynamiczny model master-slave while ( 1 ) { i f ( myid == 0) { p r i n t f ( " Enter the number of i n t e r v a l s : (0 q u i t s ) " ) ; scanf ( "%d ",&n ) ; p i = 0. 0 ; } MPI_Win_fence ( 0, nwin ) ; i f ( myid!= 0) MPI_Get(&n, 1, MPI_INT, 0, 0, 1, MPI_INT, nwin ) ; MPI_Win_fence ( 0, nwin ) ; i f ( n == 0) break ; else { h = 1.0 / ( double ) n ; sum = 0. 0 ; for ( i = myid + 1; i <= n ; i += numprocs ) { x = h ( ( double ) i 0. 5 ) ; sum += ( 4. 0 / ( x x ) ) ; } Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 37/48
38 Przykład: RMA Równoległe we-wy Przykład równoległego zapisu Przykład równoległego odczytu Zdalne operacje na pamięci (RMA) Przykład: RMA Dynamiczna struktura obliczeniowa Przykład: dynamiczny model master-slave mypi = h sum ; MPI_Win_fence ( 0, piwin ) ; MPI_Accumulate(&mypi, 1, MPI_DOUBLE, 0, 0, 1, MPI_DOUBLE, MPI_SUM, piwin ) ; MPI_Win_fence ( 0, piwin ) ; i f ( myid == 0) p r i n t f ( " p i i s approximately %.16 f, E r r o r i s %.16 f \ n ", pi, fabs ( p i PI25DT ) ) ; } } MPI_Win_free(&nwin ) ; MPI_Win_free(& piwin ) ; MPI_Finalize ( ) ; return 0; } Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 38/48
39 Dynamiczna struktura obliczeniowa Równoległe we-wy Przykład równoległego zapisu Przykład równoległego odczytu Zdalne operacje na pamięci (RMA) Przykład: RMA Dynamiczna struktura obliczeniowa Przykład: dynamiczny model master-slave MPI-2 umożliwia dynamiczne tworzenie procesów w trakcie pracy poprzez funkcję MPI_Comm_Spawn. Maksymalna ilość procesów określa parametr MPI_UNIVERSE_SIZE. Procesy wywołujacy i wywołany łaczy interkomunikator - podawany jako argument w MPI_Comm_Spawn oraz otrzymywany w procesie wywołanym przez MPI_Comm_get_parent. Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 39/48
40 Przykład: dynamiczny model master-slave Równoległe we-wy Przykład równoległego zapisu Przykład równoległego odczytu Zdalne operacje na pamięci (RMA) Przykład: RMA Dynamiczna struktura obliczeniowa Przykład: dynamiczny model master-slave / master / #include " mpi. h " i n t main ( i n t argc, char argv [ ] ) { i n t world_size, universe_size, universe_sizep, f l a g ; MPI_Comm everyone ; / i n t e r k o m u n i k a t o r / char worker_program [ ] ; MPI_Init (& argc, &argv ) ; MPI_Comm_size (MPI_COMM_WORLD, &world_size ) ; i f ( world_size!= 1) e r r o r ( " Top heavy with management " ) ; MPI_Attr_get (MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, &universe_sizep, &f l a g ) ; i f (! f l a g ) { p r i n t f ( " This MPI does not support UNIVERSE_SIZE. How many \ n \ processes t o t a l? " ) ; scanf ( "%d ", &universe_size ) ; } else universe_size = universe_sizep ; i f ( universe_size == 1) e r r o r ( "No room to s t a r t workers " ) ; / / uruchamiamy procesy slave mozemy wczesniej sprecyzować l i n i ę poleceń choose_worker_program ( worker_program ) ; MPI_Comm_spawn( worker_program, MPI_ARGV_NULL, universe_size 1, MPI_INFO_NULL, 0, MPI_COMM_SELF, &everyone, MPI_ERRCODES_IGNORE) ; / Tu kod równoległy. Komunikator " everyone " może być używany do komunikacji z uruchomionymi procesami o rank 0,..., MPI_UNIVERSE_SIZE 1 w " everyone " / MPI_Finalize ( ) ; return 0; } Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 40/48
41 Przykład: dynamiczny model master-slave Równoległe we-wy Przykład równoległego zapisu Przykład równoległego odczytu Zdalne operacje na pamięci (RMA) Przykład: RMA Dynamiczna struktura obliczeniowa Przykład: dynamiczny model master-slave / slave / #include " mpi. h " i n t main ( i n t argc, char argv [ ] ) { i n t size ; MPI_Comm parent ; MPI_Init (& argc, &argv ) ; MPI_Comm_get_parent(& parent ) ; i f ( parent == MPI_COMM_NULL ) e r r o r ( "No parent! " ) ; MPI_Comm_remote_size ( parent, &size ) ; i f ( size!= 1) e r r o r ( " Something s wrong with the parent " ) ; / Tu kod równoległy. Master j e s t procesem o rank 0 w MPI_Comm parent Procesy slave moga komunikować s i ę ze soba przez MPI_COMM_WORLD. / MPI_Finalize ( ) ; return 0; } Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 41/48
42 MPI a język C++ Przykład: MPI, a C++ Użytkowanie MPICH w ZA Gdzie szukać informacji? Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 42/48
43 MPI a język C++ MPI a język C++ Przykład: MPI, a C++ Użytkowanie MPICH w ZA Gdzie szukać informacji? W standardzie MPI użyto "konserwatywnego" podejścia do implementacji w C++ - większość funkcji jest metodami klasy MPI. Większość zmiennych charakterystycznych dla MPI (takich jak statusy, żadania, pliki) jest obiektami w C++. Jeżeli funkcja jest naturalnie powiazana z obiektem to stanowi ona jego metodę. Funkcje tworzace obiekty zwracaja je - zamiast kodu błędu. Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 43/48
44 Przykład: MPI, a C++ MPI a język C++ Przykład: MPI, a C++ Użytkowanie MPICH w ZA Gdzie szukać informacji? i n t main ( i n t argc, char argv [ ] ) { i n t bufsize, buf, count ; char filename [ ] ; MPI : : Status s t a t u s ; MPI : : I n i t ( ) ; i n t myrank = MPI : :COMM_WORLD. Get_rank ( ) ; i n t numprocs = MPI : :COMM_WORLD. Get_size ( ) ; MPI : : F i l e t h e f i l e = MPI : : F i l e : : Open( MPI : :COMM_WORLD, " t e s t f i l e ", MPI : : MODE_RDONLY, MPI : : INFO_NULL ) ; MPI : : O f f s e t f i l e s i z e = t h e f i l e. Get_size ( ) ; / / w bajtach f i l e s i z e = f i l e s i z e / sizeof ( i n t ) ; / / w i n t b u f s i z e = f i l e s i z e / numprocs + 1; / / do przeczytania l o k a l n i e buf = ( i n t ) malloc ( b u f s i z e sizeof ( i n t ) ) ; t h e f i l e. Set_view ( myrank b u f s i z e sizeof ( i n t ), MPI_INT, MPI_INT, " n a t i v e ", MPI : : INFO_NULL ) ; t h e f i l e. Read ( buf, bufsize, MPI_INT, &s t a t u s ) ; count = s t a t u s. Get_count ( MPI_INT ) ; cout << " process " << myrank << " read " << count << " i n t s " << endl ; t h e f i l e. Close ( ) ; MPI : : F i n a l i z e ( ) ; return 0; } Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 44/48
45 Użytkowanie MPICH w ZA MPI a język C++ Przykład: MPI, a C++ Użytkowanie MPICH w ZA Gdzie szukać informacji? W laboratorium 102 Zakładu Automatyki dostępnych jest 6 komputerów pracujacych pod kontrola systemu operacyjnego Debian Linux, z zainstalowana biblioteka MPICH i kompilatorem GCC. Komputery posiadaja nazwy domenowe za-51, za-52, itd. Dla uruchamiania programów równoległych przygotowano konta mpilab1, mpilab2,... przypisane do każdego z komputerów (hasło: mpilab). Katalogi domowe s a dzielone przez NFS między wszystkimi maszynami (nie ma zatem potrzeby kopiowania kodów, można stosować metody równoległego we/wy). Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 45/48
46 Użytkowanie MPICH w ZA MPI a język C++ Przykład: MPI, a C++ Użytkowanie MPICH w ZA Gdzie szukać informacji? Kroki uruchamiania programu: kompilacja mpicc.mpich -g -o binary_file_name source_file.c (w przypadku C++ - mpicc) przygotowanie środowiska - stworzyć plik zawierajacy nazwy używanych komputerów i ilość procesów na każdym z nich np. za-51 za-52 za-54 uruchomienie programu - poprzez wywołanie mpirun np. mpirun.mpich -machinefile plik_z_maszynami -n ilosc_procesów binary_file Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 46/48
47 Gdzie szukać informacji? MPI a język C++ Przykład: MPI, a C++ Użytkowanie MPICH w ZA Gdzie szukać informacji? Szczególnie polecane sa strony danej implementacji MPI, specyfikacja samego standardu ( oraz: MPI: The Complete Reference, M. Snir, S. Otto, S. Huss-Lederman, D. Walker, J. Dongarra, ( Rozszerzenia standardu MPI: MPI-2, materiały szkoleniowe PCSS, ( MPI-2/rozszerzenia standardu MPI - MPI-2.pdf ) Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 47/48
48 Dziękuję za uwagę! Dziękuję za uwagę! Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 48/48
Programowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1
Programowanie w modelu przesyłania komunikatów specyfikacja MPI Krzysztof Banaś Obliczenia równoległe 1 Model przesyłania komunikatów Paradygmat send receive wysyłanie komunikatu: send( cel, identyfikator_komunikatu,
Bardziej szczegółowoProgramowanie Równoległe Wykład 5. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład 5 MPI - Message Passing Interface Maciej Matyka Instytut Fizyki Teoretycznej Dorobiliśmy się strony WWW www.ift.uni.wroc.pl/~koma/pr/index.html MPI, wykład 2. Plan: - komunikacja
Bardziej szczegółowoProgramowanie Równoległe Wykład 4. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład 4 MPI - Message Passing Interface Maciej Matyka Instytut Fizyki Teoretycznej Jak używać w MPI? Donald Knuth: We should forget about small efficiencies, say about 97% of
Bardziej szczegółowoProgramowanie w standardzie MPI
Programowanie w standardzie MPI 1 2 Podstawy programowania z przesyłaniem komunikatów Model systemu równoległego w postaci p procesów, każdy z nich z własną przestrzenią adresową, nie współdzieloną z innymi
Bardziej szczegółowoProgramowanie 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, cd. Krzysztof Banaś Obliczenia równoległe 1 Środowisko przesyłania komunikatów MPI Rodzaje procedur: blokujące nieblokujące Tryby przesyłania
Bardziej szczegółowoProgramowanie 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, cd. Krzysztof Banaś Obliczenia równoległe 1 MPI dynamiczne zarządzanie procesami MPI 2 umożliwia dynamiczne zarządzanie procesami, choć
Bardziej szczegółowoProgramowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1
Programowanie w modelu przesyłania komunikatów specyfikacja MPI Krzysztof Banaś Obliczenia równoległe 1 Środowisko przesyłania komunikatów MPI Rodzaje procedur: blokujące nieblokujące Tryby przesyłania
Bardziej szczegółowoProgramowanie współbieżne... (4) Andrzej Baran 2010/11
Programowanie współbieżne... (4) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html Przykład Zaczniemy od znanego już przykładu: Iloczyn skalarny różne modele Programowanie współbieżne...
Bardziej szczegółowoWprowadzenie do MPI. Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu.
Wprowadzenie do MPI Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu.pl Maciej Cytowski m.cytowski@icm.edu.pl Maciej Szpindler m.szpindler@icm.edu.pl
Bardziej szczegółowoModele 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 dla PR PP MPP - Cechy charakterystyczne 1 Prywatna, wyłączna przestrzeń adresowa.
Bardziej szczegółowoRozszerzenia MPI-2 1
Rozszerzenia MPI-2 1 2 Dynamiczne tworzenie procesów Aplikacja MPI 1 jest statyczna z natury Liczba procesów określana jest przy starcie aplikacji i się nie zmienia. Gwarantuje to szybką komunikację procesów.
Bardziej szczegółowoTryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla
Tryby komunikacji między procesami w standardzie Message Passing Interface Piotr Stasiak 171011 Krzysztof Materla 171065 Wstęp MPI to standard przesyłania wiadomości (komunikatów) pomiędzy procesami programów
Bardziej szczegółowoProgramowanie aplikacji równoległych i rozproszonych. Wykład 8
Wykład 8 p. 1/?? Programowanie aplikacji równoległych i rozproszonych Wykład 8 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Plan wykładu
Bardziej szczegółowoModele 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 MPP - Cechy charakterystyczne 1 Prywatna - wyłączna przestrzeń adresowa. Równoległość
Bardziej szczegółowoProgramowanie współbieżne i rozproszone
Programowanie współbieżne i rozproszone WYKŁAD 2 Jan Kazimirski 1 MPI 1/2 2 Dlaczego klastry komputerowe? Wzrost mocy obliczeniowej jednego jest coraz trudniejszy do uzyskania. Koszt dodatkowej mocy obliczeniowej
Bardziej szczegółowoOperacje grupowego przesyłania komunikatów. Krzysztof Banaś Obliczenia równoległe 1
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
Bardziej szczegółowoWprowadzenie do MPI. Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski
Wprowadzenie do MPI Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu.pl Maciej Cytowski m.cytowski@icm.edu.pl Maciej Szpindler m.szpindler@icm.edu.pl
Bardziej szczegółowoWprowadzenie do MPI. Interdyscyplinarne Centrum Modelowania. Matematycznego i Komputerowego Uniwersytet Warszawski
Wprowadzenie do MPI Matematycznego i Komputerowego Uniwersytet Warszawski http:// Maciej Cytowski m.cytowski@icm.edu.pl Maciej Szpindler m.szpindler@icm.edu.pl 31.03.2010 Wprowadzenie do MPI 1 Podziękowania
Bardziej szczegółowoOperacje grupowego przesyłania komunikatów
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
Bardziej szczegółowoKolejne funkcje MPI 1
Kolejne funkcje MPI 1 Przypomnienie: sieci typu mesh (Grama i wsp.) 2 Topologie MPI Standard MPI abstrahuje od topologii systemu wieloprocesorowego. Sposób uruchamiania aplikacji (mpirun) nie jest częścią
Bardziej szczegółowoMessage Passing Interface
Message Passing Interface Interfejs programowania definiujący powiązania z językami C, C++, Fortran Standaryzacja (de facto) i rozszerzenie wcześniejszych rozwiązań dla programowania z przesyłaniem komunikatów
Bardziej szczegółowoProgramowanie Równoległe Wykład 6. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład 6 MPI - Message Passing Interface Maciej Matyka Instytut Fizyki Teoretycznej Dorobiliśmy się strony WWW Za tydzień 1. wykład z CUDY (Z. Koza) www.ift.uni.wroc.pl/~koma/pr/index.html
Bardziej szczegółowoProgramowanie Współbieżne
Programowanie Współbieżne MPI ( główne źródło http://pl.wikipedia.org/wiki/mpi) 1 Historia Początkowo (lata 80) różne środowiska przesyłania komunikatów dla potrzeb programowania równoległego. Niektóre
Bardziej szczegółowoJak wygląda praca na klastrze
Jak wygląda praca na klastrze Upraszczając nieco sprawę można powiedzieć, że klaster to dużo niezależnych komputerów (jednostek) połączonych mniej lub bardziej sprawną siecią. Często poszczególne jednostki
Bardziej szczegółowoInterfejs MPI. Maciej Kasperski, Rafał Kozik. 16 kwietnia 2008
16 kwietnia 2008 Wprowadzenie Co to jest MPI? Plan prezentacji: co to jest MPI? komunikatory i grupy procesów; przesyłanie komunikatów; komunikacja kolektywna; wirtualne topologie;. Co to jest MPI? Wstęp
Bardziej szczegółowo51. Metody komunikacji nieblokującej.
51. Metody komunikacji nieblokującej. Funkcje nieblokujace różnia sie od wersji blokujacych przedrostkiem I (immediate) w nazwie oraz jednym dodatkowym argumentem: request, który jest używany do sprawdzenia,
Bardziej szczegółowohttp://www.mcs.anl.gov/research/projects/mpi/standard.html
z przedmiotu, prowadzonych na Wydziale BMiI, Akademii Techniczno-Humanistycznej w Bielsku-Białej. MPI czyli Message Passing Interface stanowi specyfikację pewnego standardu wysokopoziomowego protokołu
Bardziej szczegółowoWeryfikacja oprogramowania, korzystajacego z MPI
Weryfikacja oprogramowania, korzystajacego z MPI Krzysztof Nozderko kn201076@students.mimuw.edu.pl 23 maja 2005 Wprowadzenie Równoległe obliczenia olbiczenia naukowców sa często bardzo kosztowne obliczeniowo
Bardziej szczegółowoProgramowanie współbieżne Wykład 11 Wprowdzenie do MPI. Rafał Skinderowicz
Programowanie współbieżne Wykład 11 Wprowdzenie do MPI Rafał Skinderowicz Programowanie dla modelu z rozproszoną pamiecią Niezależne strumienie instrukcji wykonywane na (być może) oddalonych fizycznie
Bardziej szczegółowoOperacje kolektywne MPI
Operacje kolektywne MPI 1 Operacje kolektywne Do tej pory w operacje przesyłania komunikatu miały charakter punkt-punkt (najczęściej pomiędzy nadawcą i odbiorcą). W operacjach grupowych udział biorą wszystkie
Bardziej szczegółowoArchitektura sieci połączeń między procesorami, sterowanie komunikacjami, biblioteki komunikacyjne
Wykład 4 Architektura sieci połączeń między procesorami, sterowanie komunikacjami, biblioteki komunikacyjne Spis treści: 1. Statyczne sieci połączeń w systemach równoległych 2. Dynamiczne sieci połączeń
Bardziej szczegółowoProgramowanie współbieżne... (5)
Programowanie współbieżne... (5) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html 6 FUNKCJI Proste programy MPI można pisać używając tylko 6 funkcji Programowanie współbieżne...
Bardziej szczegółowoProgramowanie Równoległe Wykład 5. MPI - Message Passing Interface (część 3) Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład 5 MPI - Message Passing Interface (część 3) Maciej Matyka Instytut Fizyki Teoretycznej MPI, wykład 3. Plan: - wirtualne topologie - badanie skalowanie czasu rozwiązania
Bardziej szczegółowoPOZNA SUPERCOMPUTING AND NETWORKING. Rozszerzenia standardu MPI: MPI-2
Rozszerzenia standardu MPI: MPI-2 literatura wykład opracowany na podstawie: W. Gropp, E. Lusk, R. Thakur, Using MPI-2, The MIT Press 1999 R. Thakur, Introduction to parallel I/O and MPI-IO, ANL 2 agenda
Bardziej szczegółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowo61 Topologie wirtualne
61 Topologie wirtualne pozwalają opisać dystrybucję procesów w przestrzeni z uwzględnieniem struktury komunikowania się procesów aplikacji między sobą, umożliwiają łatwą odpowiedź na pytanie: kto jest
Bardziej szczegółowoOptymalizacja komunikacji w systemach rozproszonych i równoległych
Optymalizacja komunikacji w systemach rozproszonych i równoległych Szkolenie PCSS, 16.12.2001 literatura W. Gropp, E. Lusk, An Introduction to MPI, ANL P.S. Pacheco, A User s Guide to MPI, 1998 Ian Foster,
Bardziej szczegółowoPOZNA SUPERCOMPUTING AND NETWORKING. Wprowadzenie do MPI
Wprowadzenie do MPI literatura W. Gropp, E. Lusk, An Introduction to MPI, ANL P.S. Pacheco, A User s Guide to MPI, 1998 Ian Foster, Designing and Building Parallel Programs, Addison-Wesley 1995, http://www-unix.mcs.anl.gov/dbpp/
Bardziej szczegółowoProgramowanie współbieżne i rozproszone
Programowanie współbieżne i rozproszone WYKŁAD 11 dr inż. CORBA CORBA (Common Object Request Broker Architecture) standard programowania rozproszonego zaproponowany przez OMG (Object Management Group)
Bardziej szczegółowoArchitektury systemów równoległych
Architektury systemów równoległych 1 Architektury systemów z pamięcią wspólną Architektury procesorów Procesory wielordzeniowe Procesory graficzne Akceleratory Procesory hybrydowe Architektury systemów
Bardziej szczegółowoProgramowanie współbieżne Wykład 12 MPI c.d. Rafał Skinderowicz
Programowanie współbieżne MPI c.d. Rafał Skinderowicz Komunikacja grupowa Poprzednio rozważaliśmy komunikację między parami procesów synchroniczna (blokująca) np. MPI Recv, MPI Send asynchroniczna (nieblokująca)
Bardziej szczegółowoKomunikacja kolektywna w środowisku MPI
Komunikacja kolektywna w środowisku MPI Zakres ćwiczenia W tym ćwiczeniu dowiesz się, co to jest komunikacja kolektywna i w jaki sposób napisać swój pierwszy program wykorzystujący komunikację kolektywną
Bardziej szczegółowoPRiR dla maszyn DM i sieci komputerowych. (PRiR, wykład 5)
PRiR dla maszyn DM i sieci komputerowych (PRiR, wykład 5) 1 Program na dziś (?) Wprowadzenie Mechanizm gniazdek Interfejs MPI Koncepcja i zasady Komunikatory i grupy Tryby komunikacji Własne typy danych
Bardziej szczegółowoWstęp do MPI-2. Jacek Dziedzic FTiMS, Politechnika Gdańska Gdańsk, Algorytmy rozproszone 2017/2018. v1.14
Wstęp do MPI-2 Jacek Dziedzic FTiMS, Politechnika Gdańska Gdańsk, 2006-2018 Algorytmy rozproszone 2017/2018 v1.14 Pracujemy w systemie równoległym o architekturze MIMD, z pamięcią rozproszoną... N E T
Bardziej szczegółowoLaboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
Bardziej szczegółowoTemat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
Bardziej szczegółowoProgramowanie współbieżne... (6)
Programowanie współbieżne... (6) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html Powtórzenie. Proste operacje MPI MPI_send, MPI_recv,...! Programowanie współbieżne... 2 Send-receive
Bardziej szczegółowoJava. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
Bardziej szczegółowoTablice, funkcje - wprowadzenie
Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład
Bardziej szczegółowoJęzyk ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Bardziej szczegółowoWstęp do Programowania, laboratorium 02
Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite
Bardziej szczegółowoMiary Wydajności. Efektywność programu równoległego (E) jest definiowana jako stosunek przyśpieszenia do liczby procesorów
Miary Wydajności Czas wykonania równoległego (Tpar) jest czasem pomiędzy momentem rozpoczęcia obliczeń do momentu gdy ostatni procesor zakończy obliczenia Przyspieszenie (S) jest definiowane jako stosunek
Bardziej szczegółowo5. Model komunikujących się procesów, komunikaty
Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć
Bardziej szczegółowoIPC: Kolejki komunikatów
IPC: Kolejki komunikatów Systemy Operacyjne 2 laboratorium Mateusz Hołenko 7 listopada 2011 Plan zajęć 1 Mechanizmy IPC kolejki komunikatów pamięć współdzielona semafory 2 Kolejki komunikatów kolejka komunikat
Bardziej szczegółowoLaboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach
Laboratorium Systemów Operacyjnych Ćwiczenie 4. Operacje na plikach Wykonanie operacji wymaga wskazania pliku, na którym operacja ma zostać wykonana. Plik w systemie LINUX identyfikowany jest przez nazwę,
Bardziej szczegółowoPodstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie Krzysztof Banaś Podstawy programowania 1 są sposobem na przechowywanie w ramach pojedynczej zmiennej zestawu zmiennych różnych typów,
Bardziej szczegółowoCzęść 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Bardziej szczegółowoProgramowanie Proceduralne
Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami
Bardziej szczegółowoProgramowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30
Programowanie w C++ Wykład 9 Katarzyna Grzelak 14 maja 2018 K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe plus
Bardziej szczegółowo1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Bardziej szczegółowoKompilator języka C na procesor 8051 RC51 implementacja
Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub
Bardziej szczegółowoProgramowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35
Programowanie w C++ Wykład 3 Katarzyna Grzelak 12 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35 Zakres ważności obiektów K.Grzelak (Wykład 1) Programowanie w C++ 2 / 35 Zakres ważności obiektów
Bardziej szczegółowoWykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include
Bardziej szczegółowoProgramowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33
Programowanie w C++ Wykład 8 Katarzyna Grzelak 15 kwietnia 2019 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe
Bardziej szczegółowoTworzenie aplikacji rozproszonej w Sun RPC
Tworzenie aplikacji rozproszonej w Sun RPC Budowa aplikacji realizowana jest w następujących krokach: Tworzenie interfejsu serwera w języku opisu interfejsu RPCGEN Tworzenie: namiastki serwera namiastki
Bardziej szczegółowoISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Bardziej szczegółowoAlgorytmy i Struktury Danych
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 12: Wstęp
Bardziej szczegółowoSzablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoTypy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1
Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy
Bardziej szczegółowoZdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1
Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij proces (int pid){ int stat; stat = kill(pid,
Bardziej szczegółowomain( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!
Funkcja wysoce niezależny blok definicji i instrukcji programu (podprogram) Każdy program napisany w języku C/C++ zawiera przynajmniej jedną funkcję o predefiniowanej nazwie: main( ). Najczęściej wykorzystuje
Bardziej szczegółowoObliczenia 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 15 czerwca 2001 Spis treści Przedmowa............................................
Bardziej szczegółowoKurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Bardziej szczegółowoProgramowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz
Programowanie równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 23 października 2009 Spis treści Przedmowa...................................................
Bardziej szczegółowoFunkcje zawarte w bibliotece < io.h >
PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece
Bardziej szczegółowoGrzegorz Cygan. Wstęp do programowania mikrosterowników w języku C
Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego) Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy
Bardziej szczegółowoPlan wykładu. Programowanie aplikacji równoległych i rozproszonych. Wykład 8 p. Komunikacja typu punkt-punkt. Koncepcja standardu MPI
Plan wykładu Programowanie aplikacji równoległych i rozproszonych Wykład 8 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Koncepcja standardu
Bardziej szczegółowoFunkcje zawarte w bibliotece < io.h >
PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece
Bardziej szczegółowoProgramowanie współbieżne i rozproszone
Programowanie współbieżne i rozproszone WYKŁAD 3 Jan Kazimirski 1 Literatura 2 MPI 2/2 3 Komunikacja blokująca Funkcja MPI_Recv działa w trybie blokującym Powrót z MPI_Recv nastąpi dopiero po odebraniu
Bardziej szczegółowowykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,
, Programowanie, uzupełnienie notatek: dr Jerzy Białkowski , 1 2 3 4 , Wczytywanie liczb , Wczytywanie liczb 1 #include 2 #include < s t d l i b. h> 3 4 int main ( ) { 5 int rozmiar, numer
Bardziej szczegółowoZdalne wywoływanie procedur RPC 27. października 2010
Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_ proces (int pid){ int stat; stat
Bardziej szczegółowowykł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
i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje
Bardziej szczegółowoWywoływanie procedur zdalnych
Mechanizm wywołania Wywoływanie procedur zdalnych main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) int zabij_proces (int pid){ int stat; stat = kill(pid,
Bardziej szczegółowoMPI dla zaawansowanych
MPI dla zaawansowanych Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu.pl Maciej Cytowski m.cytowski@icm.edu.pl Maciej Szpindler m.szpindler@icm.edu.pl
Bardziej szczegółowoProgramowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory
Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-19 Pętla while Pętla while Pętla
Bardziej szczegółowoJęzyk C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
Bardziej szczegółowoWywoływanie procedur zdalnych
Wywoływanie procedur zdalnych Mechanizm wywołania main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces (int pid){ int stat; stat
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład
Bardziej szczegółowoProgramowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1
Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1 Wprowadzenie Procesory graficzne GPU (Graphics Processing Units) stosowane są w kartach graficznych do przetwarzania grafiki komputerowej
Bardziej szczegółowoWykład 1
Wstęp do programowania 1 Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Wprowadzenie Cel wykładów z programowania proceduralnego Wykład jest poświęcony językowi C i jego
Bardziej szczegółowoPARADYGMATY I JĘZYKI PROGRAMOWANIA. Programowanie współbieżne... (w13)
PARADYGMATY I JĘZYKI PROGRAMOWANIA Programowanie współbieżne... (w13) Treść 2 Wstęp Procesy i wątki Szybkość obliczeń prawo Amdahla Wyścig do zasobów Synchronizacja i mechanizmy synchronizacji semafory
Bardziej szczegółowoProgramowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.
Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411b Plan wykładu Operacje wejścia-wyjścia Dostęp do plików Struktury
Bardziej szczegółowoSUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)
Program my_ping: wysłanie komunikatu ICMP z żądaniem echa Struktura icmp (plik netinet/ip_icmp.h) 0 7 8 15 16 31 TYP (icmp_type) KOD (icmp_code) IDENTYFIKATOR (icmp_id) SUMA KONTROLNA (icmp_cksum) NUMER
Bardziej szczegółowoŁącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.
Przykład: $ ls more Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Tworzenie łącza #include int pipe(int filedes[2]); Przykład: int
Bardziej szczegółowoZdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1
Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int
Bardziej szczegółowoSystemy Operacyjne - Operacje na plikach
Systemy Operacyjne - Operacje na plikach Andrzej Stroiński Institute of Computer Science Poznań University of Technology 1 październik, 2012 Wprowadzenie do ANSI-C Pomoc systemowa man gcc man 2 write man
Bardziej szczegółowoĆwiczenie nr: 9 Obliczenia rozproszone MPI
Ćwiczenie nr: 9 Temat: Obliczenia rozproszone MPI 1. Informacje ogólne MPI (Message Passing Interface) nazwa standardu biblioteki przesyłania komunikatów dla potrzeb programowania równoległego w sieciach
Bardziej szczegółowoGlobalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)
Podstawy programowania (język C) Globalne / Lokalne Wykład 15. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Zmienne globalne / lokalne (1) int A, *Q; // definicja zmiennych globalnych
Bardziej szczegółowo