POZNA SUPERCOMPUTING AND NETWORKING. Wprowadzenie do MPI

Wielkość: px
Rozpocząć pokaz od strony:

Download "POZNA SUPERCOMPUTING AND NETWORKING. Wprowadzenie do MPI"

Transkrypt

1 Wprowadzenie do MPI

2 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, 2

3 literatura J. Dongarra, I. Foster, G. Fox, W. Gropp, K. Kennedy, L. Torczon, A. White, The Sourcebook of Parallel Computing, Morgan Kaufmann 2002 W. Gropp, E. Lusk, T. Sterling, Beowulf Cluster Computing, Second Edition, The MIT Press,

4 literatura W. Gropp, E. Lusk, R. Thakur, Advanced Features of the Message Passing Interface, The MIT Press 1999 W. Gropp, E. Lusk, A. Skjellum, Portable Parallel Programming with the Message Passing Interface, 2nd edition, The MIT Press

5 literatura P.S. Pacheco, Parallel Programming with MPI, Morgan Kaufmann

6 literatura Neil MacDonald, Elspeth Minty, Mario Antonioletti, Joel Malard, Tim Harding, Simon Brown, Writing Message-Passing Parallel Programs with MPI. Course Notes. Edinburgh Parallel Computing Centre, The University of Edinburgh, Epic Version

7 co to jest przesyłanie komunikatów? przesyłanie komunikatów jest modelem programowania komputerów równoległych z pamici rozproszon kady procesor wykonuje niezaleny proces przestrzenie adresów s rozłczne, nie ma danych współdzielonych, kady proces ma swoj własn pami 7

8 co to jest przesyłanie komunikatów? komunikacja midzy procesami odbywa si za pomoc wywołania podprogramu procesy nadaj dane do siebie za pomoc przesyłania komunikatów komunikaty maj etykiety pozwalajce je rozrónia (sortowa) komunikaty odbiera si w dowolnej kolejnoci 8

9 co to jest przesyłanie komunikatów? przesyłanie danych + synchronizacja Proces 0 Proces 1 dane mog nadawa? tak Data Data Data Data Data Data Data dane czas wymaga współpracy nadawcy i odbiorcy współpraca ta nie zawsze jest widoczna w kodzie programu 9

10 co to jest MPI? MPI = Message Passing Interface interfejs przesyłania komunikatów standard biblioteki przesyłania komunikatów formalna specyfikacja interfejsu nie jest to konkretna implementacja 10

11 dlaczego MPI? kryzys oprogramowania w przetwarzaniu równoległym kady dostawca daje własny interfejs adnej krytycznej masy uytkowników współdzielenie kodu aplikacje równoległe pod klucz, do natychmiastowego uytku 11

12 dlaczego MPI? uniwersalny - stosowany na wielu platformach zrozumiały - równoległo i komunikacja s jawne mobilny - powoduje przenaszalno programu wygodny pozwala na zrównoleglenie programu 12

13 jak to si zaczło? przedtem: oddzielna, inna biblioteka dla kadej platformy PVM niska efektywno 1992 pocztek prac 1994 MPI MPI-2 13

14 MPI-1 tradycyjne przesyłanie komunikatów funkcje kim jestem i ile jest procesów funkcje nadawania i odbioru komunikatu funkcje rozgłaszania komunikatu funkcje agregacji wyników (redukcji) funkcje komunikacji wszyscy ze wszystkimi 14

15 zdalna pami równoległe we/wy MPI-2 procesy dynamiczne C++ Fortran 90 funkcja komunikacji jednostronnej get/put wtki 15

16 gdzie si stosuje MPI? w komputerach równoległych w klastrach w sieciach heterogenicznych 16

17 co daje MPI? pozwala w łatwy sposób uruchamia programy równoległe zazwyczaj napisane w jzyku C, albo w jzyku Fortran 17

18 model programowania MPI SPMD Single Program Multiple Data jeden program, wiele danych, kady proces jest taki sam, np. a.out, moe działa na wielu danych MPMD Multiple Program Multiple Data wiele programów, wiele danych, procesy s róne: a.out. b.out, c.out 18

19 podstawowe 6 funkcji MPI MPI_Init inicjuje obliczenie MPI MPI_Finalize koczy obliczenie MPI MPI_Comm_size podaje liczb procesów MPI_Comm_rank podaje numer mojego procesu MPI_Send nadaje komunikat MPI_Recv odbiera komunikat 19

20 MPI_Init inicjuje obliczenie MPI, przed t funkcj nie ma adnej innej funkcji MPI MPI_Init (&argc, &argv) 20

21 MPI_Finalize koczy obliczenie MPI, po tej funkcji nie ma ju adnej innej funkcji MPI MPI_Finalize() 21

22 MPI_Comm_size podaje liczb procesów MPI_Comm_size(MPI_COMM_WORLD, &size) 22

23 MPI_Comm_rank podaje numer mojego procesu MPI_Comm_rank(MPI_COMM_WORLD, &rank) 23

24 MPI_Send nadaje komunikat MPI_Send(void* message, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) 24

25 MPI_Recv odbiera komunikat MPI_Recv(void* message, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status* status) 25

26 #include <stdio.h> #include mpi.h Hello, world! Main(int argc, char** argv) { int my_rank; /* Rank of process */ int p; /* Number of processes */ int source; /* Rank of sender */ int dest; /* Rank of receiver */ int tag = 50 /* Tag for messages */ char message[100];/* Storage for the message */ MPI_Status status;/* Return status for recv */ 26

27 Hello, world! MPI_Init(&argc, &argv) MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); MPI_Comm_size(MPI_COMM_WORLD, &p); if (my_rank!=0) { sprintf(message, Greetings from process %d!, my_rank); dest = 0; /* Use strlen(message)+1 to include \0 */ MPI_Send(message, strlen(message)+1, MPI_CHAR,dest, tag, MPI_COMM_WORLD); 27

28 Hello, world! }else {/* my_rank == 0 */ } for (source = 1; source < p; source++) { } MPI_Recv(message, 100, MPI_CHAR, source, tag, MPI_COMM_WORLD, &status); printf( %s\n, message); MPI_Finalize(); } /* main */ 28

29 Hello, world! po skompilowaniu programu i uruchomieniu w dwóch procesach, wywietlany jest tekst: Greetings from process 1! po uruchomieniu w 4 procesach, wywietla si tekst: Greetings from process 1! Greetings from process 2! Greetings from process 3! 29

30 zasady uruchamiania programu Hello, world! pod warunkiem, e uruchamiamy jeden proces na kadym procesorze, obowizuj nastpujce zasady: uytkownik wydaje polecenie do systemu operacyjnego, umieszczajce kopi programu wykonywalnego na kadej maszynie kady procesor rozpoczyna wykonywanie programu róne procesy mog wykonywa róne instrukcje przeskakujc w programie, kolejno procesów okrelaj ich numery 30

31 zasady uruchamiania programu Hello, world! program ten stosuje paradygmat Single Program Multiple Data uzyskujemy efekt rónych programów uruchamianych na rónych procesorach poprzez skakanie w jednym programie zgodnie z numerami procesów instrukcje wykonywane przez proces 0 s inne od instrukcji wykonywanych przez inne procesy, nawet gdy wszystkie procesy wykonuj ten sam program 31

32 ogólne zasady dot. programów MPI kady program musi zawiera dyrektyw preprocesora: #include "mpi.h plik ten zawiera definicje, makra i prototypy funkcji konieczne dla kompilacji programu MPI 32

33 ogólne zasady dot. programów MPI przed wywołaniem dowolnej innej funkcji MPI naley wywoła funkcj MPI_Init, i to tylko raz jej argumentami s wskaniki do parametrów funkcjimain, tzn.argc i argv pozwalaj one systemom na wykonanie specjalnego programu inicjujcego, pozwalajcego na wykorzystanie biblioteki MPI 33

34 ogólne zasady dot. programów MPI po zakoczeniu korzystania programu z biblioteki MPI, program wywołuje MPI_Finalize to czyci nigdy nie odebrane odbiory typowy program MPI ma nastpujc struktur: 34

35 struktura typowego programu MPI... #include mpi.h main(int argc, char** argv) {... MPI_Init(&argc, &argv);... MPI_Finalize();... } 35

36 informacja o innych procesach MPI ma funkcj MPI_Comm_Rank, która zwraca numer procesu w drugim argumencie: int MPI_Comm_rank(MPI_Comm comm, int rank) pierwszy argument to komunikator jest to zbiór procesów, które mog midzy sob nadawa komunikaty zazwyczaj jest to predefiniowany komunikator MPI_COMM_WORLD, zawierajcy wszystkie procesy, kiedy rozpoczyna si wykonywanie programu 36

37 liczba procesów wykonujcych program wiele konstrukcji programowych zaley od liczby procesów wykonujcych program MPI daje funkcjmpi_comm_size, która to zapewnia. Jej pierwszym argumentem jest komunikator, zwraca liczb procesów komunikatora jako drugi argument: int MPI_Comm_size(MPI_Comm comm, int size) 37

38 przesyłanie komunikatu przesyłanie komunikatu realizuj dwie funkcje: MPI_Send i MPI_Recv MPI_Send nadaje komunikat do wskazanego procesu MPI_Recv odbiera komunikat od procesu aby to si udało, system musi dołczy pewn informacj do nadawanych danych, informacja ta tworzy kopert komunikatu 38

39 koperta komunikatu koperta zawiera: numer procesu odbiorcy numer procesu nadawcy etykiet (tag) komunikator elementy te moe wykorzysta proces odbiorcy do rozrónienia midzy przychodzcymi komunikatami 39

40 koperta komunikatu argument source mona uy do rozrónienia komunikatów odebranych od rónych procesów tag do rozrónienia komunikatów odebranych od tego samego procesu komunikatory s szczególnie wane, gdy oddzielne moduły programu s napisane niezalenie. Komunikator pozwala stworzy zbiór procesów korzystajcych z danego narzdzia (np. liniowego solvera przy rozwizywaniu równa róniczkowych) 40

41 MPI_Send składnia: int MPI_Send(void* message, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) 41

42 MPI_Recv składnia: int MPI_Recv(void* message, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status* status) 42

43 MPI_Send i MPI_Recv tre komunikatu jest zapamitana w bloku pamici wskazanym argumentem message argumentycount i datatype pozwalaj systemowi okreli koniec komunikatu ilo miejsca przydzielona w buforze odbiorczym nie musi odpowiada dokładnie iloci miejsca w odbieranym komunikacie 43

44 MPI_Send i MPI_Recv proces odbierajcy nie musi zna dokładnego rozmiaru odbieranego komunikatu, jak zabraknie miejsca, wystpi błd przepełnienia argumenty dest i source to numery procesu obierajcego i nadajcego istnieje dzika karta dla dowolnego procesu nadajcego, stała zdefiniowana w MPI_ANY_SOURCE 44

45 MPI_Send i MPI_Recv MPI posiada dwa mechanizmy przeznaczone do podziału przestrzeni komunikatów: s to etykiety tag i komunikatory comm etykieta tag jest typuint istnieje dzika karta dla etykiety, jest to MPI_ANY_TAG, stosowana przezmpi_recv nie stosuje si dzikiej karty dla komunikatora czyli argument comm, jaki stosuje proces nadajcy w MPI_Send, musi by identyczny z argumentem comm, jaki stosuje proces odbierajcy w MPI_Recv 45

46 MPI_Send i MPI_Recv argument status wmpi_recv, zwraca informacj o danych, które włanie odebrano odwołuje si on do rekordu, który ma dwa pola, jednosource i drugietag na przykład, jeeli ródłem przy odbiorze jestmpi_any_source, wtedy status zawiera numer procesu nadajcego komunikat 46

47 komunikacja kolektywna załómy, e program działa na 8 procesorach wszystkie procesy rozpoczynaj wykonywanie programu prawie jednoczenie jednak po wykonaniu podstawowych zada (wywoła MPI_Init, MPI_Comm_Size i MPI_Comm_rank), proces 0 zbiera dane wejciowe, a procesy od 1 do 7 s bezczynne, czekajc na dane od procesu 0 naley to zmieni, wprowadzajc komunikacj o strukturze drzewiastej 47

48 komunikacja kolektywna jak rozdziela dane? Jak dzieli zadania bardziej równomiernie midzy procesy? naturalnym rozwizaniem jest struktura drzewiasta procesów, z 0 jako korzeniem 48

49 struktura drzewiasta procesów

50 w 1 etapie, 0 nadaje dane do

51 w drugim etapie, 0 nadaje dane do 2, a 4 nadaje dane do

52 w 3 etapie, 0 nadaje do 1,2 nadaje do 3, 4 nadaje do 5, a 6 nadaje do

53 komunikacja o strukturze drzewiastej w ten sposób zredukowano pocztkowe rozdzielanie danych z 7 etapów do 3 etapów w ogólnoci, jeeli mamy p procesów, procedura ta pozwala rozdziela dane wejciowe w log 2 (p) etapach, zamiast w p-1 etapów dla duego p, s to due oszczdnoci 53

54 rozgłaszanie wzorzec komunikacji, angaujcy wszystkie procesy w komunikatorze, jest komunikacj kolektywn czyli komunikacja kolektywna zazwyczaj angauje wicej ni dwa procesy rozgłaszanie jest komunikacj kolektywn, w której jeden proces nadaje te same dane do kadego procesu 54

55 rozgłaszanie w MPI int MPI_Bcast(void* message, int count, MPI_Datatype datatype, int root, MPI_Comm comm) nadaje kopi danych w message z procesu root do kadego procesu w komunikatorze comm powinien by wywołany przez wszystkie procesy w komunikatorze z tymi samymi argumentami dla root i comm skutkiem tego, komunikat rozgłaszania nie moe by odbierany przez MPI_Recv 55

56 rozgłaszanie w MPI parametry count i datatype maj te same funkcje co w MPI_Send i MPI_Recv: okrelaj rozmiar komunikatu jednak inaczej ni w funkcjach od punktu do punktu, MPI wymaga, aby w komunikacji kolektywnej, count i datatype były takie same we wszystkich procesach w komunikatorze przyczyna jest taka, e w pewnych operacjach kolektywnych, jeden proces moe odbiera dane od wielu innych procesów, i aby program mógł okreli, ile danych odebrano, potrzebuje całej tablicy statusów zwrotnych 56

57 redukcja w fazie sumowania wyników proces 0 ma znowu mnóstwo pracy moemy t prac rozdzieli przez odwrócenie strzałek w drzewie, moemy podzieli zadanie obliczenia sumy midzy poszczególne procesy 57

58 redukcja

59 redukcja w pierwszym etapie proces 1 nadaje swój wynik oblicze do procesu 0, proces 3 nadaje swój wynik do procesu 2, proces 5 nadaje swój wynik do procesu 4, a proces 7 nadaje swój wynik do procesu 6 nastpnie proces 0 dodaje swój wynik do wyniku procesu 1, proces 2 dodaje swój wynik do wyniku procesu 3, itd. 59

60 redukcja

61 redukcja w drugim etapie proces 2 nadaje sum wyników do procesu 0, proces 6 nadaje sum wyników do procesu 4 proces 0 sumuje swój wynik z sum wyników od procesu 2 proces 4 sumuje swój wynik z sum wyników otrzyman od procesu 6 61

62 redukcja w trzecim etapie proces 4 nadaje swoj sum (wyniki od procesów 4, 5, 6 i 7) do procesu 0 proces 0 dodaje swoj sum (wyniki od procesów 0, 1, 2 i 3) do sumy otrzymanej od procesu 4 62

63 redukcja pojawia si pytanie, czy struktura drzewiasta optymalnie wykorzystuje topologi maszyny? to zaley od maszyny, najlepiej to sprawdzi, uruchamiajc MPI obliczenie sumy globalnej jest przykładem klasy komunikacji kolektywnej, zwanej operacj redukcji 63

64 operacja redukcji w tej operacji wszystkie procesy w komunikatorze wnosz dane, które s przekształcane za pomoc operacji binarnej (dodawanie, max, min, logiczne and) funkcja MPI wykonujca operacj redukcji to: 64

65 operacja redukcji int MPI_Reduce(void* operand, void* result, int count, MPI_Datatype datatype, MPI_Op op, in root, MPI_Comm comm) MPI_Reduce przekształca argumenty operacji zapamitane w *operand stosujc operacj op i zapamituje wynik w *result w procesie root zarówno operand jak i count odnosz si do lokalizacji pamici okrelanej przez count i typ datatype 65

66 operacja redukcji MPI_Reduce musi by wywołane przez wszystkie procesy w komunikatorze comm, acount, datatype, i op musz by takie same w kadym procesie 66

67 operacja redukcji na przykład: int MPI_Reduce(&integral, &total, 1, MPI_FLOAT, MPI_SUM, 0, MPI_COMM_WORLD); co odpowiada składni: int MPI_Reduce(void* operand, void* result, int count, MPI_Datatype datatype, MPI_Op op, in root, MPI_Comm comm) 67

68 inne funkcje komunikacji kolektywnej MPI_Barrier MPI_Gather MPI_Scatter MPI_Allgather MPI_Allreduce 68

69 funkcja MPI_Barrier int MPI_Barrier(MPI_Comm comm) MPI_Barrier zapewnia mechanizm synchronizacji wszystkich procesów w komunikatorze comm kady proces blokuje si (pauzuje) dopóki kady proces w komunikatorze comm nie wywoła MPI_Barrier 69

70 funkcja MPI_Gather int MPI_Gather(void* send_buf, int send_count, MPI_Datatype send_type, void* recv_buf, int recv_count, MPI_Datatype recv_type, int root, MPI_Comm comm) kady proces wcomm nadaje zawarto bufora send_buf do procesu o numerze root proces root konkatenuje odebrane dane w porzdku okrelanym przez numery procesów w buforze recv_buf, tzn. po danych od procesu 0 s dane od procesu 1, a nastpnie dane od procesu 2, itd. argumenty recv s istotne tylko w procesie root argument recv_count wskazuje liczb elementów odebranych od kadego procesu 70

71 funkcja MPI_Scatter int MPI_Scatter(void* send_buf, int send_count, MPI_Datatype send_type, void* recv_buf, int recv_count, MPI_Datatype recv_type, int root, MPI_Comm comm) proces o numerze root rozsyła zawarto bufora send_buf midzy procesami zawarto bufora send_buf jest podzielona na p segmentów, z których kady składa si z send_count elementów pierwszy segment przekazany jest do procesu 0, drugi do procesu 1, itd. argumenty send s istotne jedynie w procesie root 71

72 funkcja MPI_Allgather int MPI_Allgather(void* send_buf, int send_count, MPI_Datatype send_type, void* recv_buf, int recv_count, MPI_Datatype recv_type, int root, MPI_Comm comm) zbiera zawarto kadego bufora send_buf w kadym procesie efekt jest taki sam, jak sekwencji p wywoła MPI_Gather, z których kade ma inny proces jako root 72

73 funkcja MPI_Allreduce MPI_Allreduce(void* operand, void* result, int count, MPI_Datatype datatype, MPI_Op op, in root, MPI_Comm comm) zapamituje wynik operacji redukcjiop w buforze result kadego procesu 73

74 grupowanie danych dla komunikacji nadawanie komunikatu jest kosztown operacj, std im mniej komunikatów nadanych, tym lepsza efektywno programu w naszym przykładzie programu trapezowego, komunikaty s przesyłane oddzielnie (za pomoc MPI_Send i MPI_Recv, albo za pomoc MPI_Bcast) 74

75 grupowanie danych dla komunikacji MPI zapewnia trzy mechanizmy do grupowania pojedynczych elementów danych w jeden komunikat, s to: parametr count do rónych podprogramów wyprowadzane typy danych MPI_Pack/MPI_Unpack 75

76 parametrcount zauwa, e funkcje MPI_Send i MPI_Recv, MPI_Bcast i MPI_Reduce maj argumenty count i datatype te parametry pozwalaj uytkownikowi grupowa dane majce ten sam typ podstawowy w jeden komunikat warunkiem jest, aby dane były zapamitane w cigłych lokacjach pamici elementy tablicy s pamitane w cigłych lokacjach pamici, moemy wic przesła np. podzbiór tablicy 76

77 przykład przesłania podzbioru tablicy float vector[100] int tag, count, dest, source; MPI_Status status; int p; int my rank;... 77

78 przykład przesłania podzbioru tablicy if (my_rank == 0) {... /* Initialize vector and send */ tag = 47; count = 50; dest = 1; MPI_Send(vector + 50, count, MPI_FLOAT, dest, tag,mpi_comm_world); 78

79 przykład przesłania podzbioru tablicy }else {/*my_rank == 1 */ } tag = 47 count = 50; source = 0 MPI_Recv(vector+50, count, MPI_FLOAT, source, tag, MPI_COMM_WORLD, &status); 79

80 parametrcount to nie pomaga w programie trapezowym dane a, b, n nie s pamitane w cigłych lokacjach pamici nawet gdy deklarujemy po kolei: float a; float b: int n; i deklarujemy n jako float 80

81 wyprowadzane typy danych konstruktory wyprowadzanych typów danych: gdy róne typy danych: MPI_Type_Struct gdy równe typy danych: MPI_Type_contiguous MPI_Type_vector MPI_Type_indexed 81

82 MPI_Pack/MPI_Unpack MPI_Pack - jawne zapamitanie danych niecigłych MPI_Unpack kopiowanie danych z bufora cigłego do niecigłych lokacji pamici 82

83 komunikator mechanizm pozwalajcy traktowa podzbiór procesów jako komunikacyjny wszechwiat dwa typy komunikatorów: intra-komunikator (kolekcja procesów nadajcych komunikaty midzy sob i zaangaowanych w komunikacj kolektywn), np. MPI_COMM_WORLD inter-komunikator do nadawania komunikatów midzy procesami nalecymi do rónych intrakomunikatorów dalej mówimy jedynie o intra-komunikatorach 83

84 intra-komunikator minimalny intra-komunikator składa si z grupy i kontekstu grupa to uporzdkowany zbiór procesów kiedy grupa składa si z p procesów, kady proces ma unikalny numer, od 0 do p-1 kontekst: etykieta systemowa przydzielona do grupy na procesy w komunikatorze mona nałoy topologi (schemat adresacji) 84

85 prosty program MPI w jzyku C #include "mpi.h" #include <stdio.h> int main( int argc, char *argv[] ) { MPI_Init( &argc, &argv ); printf( "Hello, world!\n" ); MPI_Finalize(); return 0; } 85

86 uwagi o programie MPI w jzyku C musi by zawarty mpi.h funkcje MPI zwracaj albo kod błdu albo MPI_SUCCESS 86

87 prosty program MPI w jzyku Fortran program main use MPI integer ierr call MPI_INIT( ierr ) print *, 'Hello, world!' call MPI_FINALIZE( ierr ) end 87

88 uwagi o programie MPI w jzyku Fortran musi by zawartympif.h, albo zastosowany moduł MPI w MPI-2 wszystkie wywołania MPI s do podprogramów, z miejscem na kod zwrotu w ostatnim argumencie 88

89 uruchamianie programów MPI standard MPI-1 nie specyfikuje, jak uruchamia program MPI uruchamianie zalene od implementacji MPI, wymaga skryptów, argumentów, i zmiennych rodowiskowych standard MPI-2 zaleca stosowanie mpiexec <args>, ale nie jest to obowizujce 89

90 uzyskanie informacji o rodowisku pytania o rodowisko: jak wiele procesów bierze udział w obliczeniach? którym jestem procesem? odpowiedzi za pomoc funkcji: MPI_Comm_size podaje liczb procesów MPI_Comm_rank podaje numer procesu wywołujcego (midzy 0 a size-1) 90

91 lepsza wersja programu MPI Hello w jzyku C #include "mpi.h" #include <stdio.h> int main( int argc, char *argv[] ) { int rank, size; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); printf( "I am %d of %d\n", rank, size ); MPI_Finalize(); return 0; } 91

92 lepsza wersja programu MPI Hello w jzyku Fortran program main use MPI integer ierr, rank, size call MPI_INIT( ierr ) call MPI_COMM_RANK( MPI_COMM_WORLD, rank, ierr ) call MPI_COMM_SIZE( MPI_COMM_WORLD, size, ierr ) print *, 'I am ', rank, ' of ', size call MPI_FINALIZE( ierr ) end 92

93 nadawanie i odbiór w MPI powinnimy okreli szczegóły operacji nadawania i odbioru w MPI: Proces 0 Proces 1 Send(data) Receive(data) 93

94 nadawanie i odbiór w MPI szczegóły te dotycz tego: jak opisa dane? jak si identyfikuje procesy? jak odbiorca rozpozna komunikaty? kiedy te operacje s zakoczone? 94

95 pojcia podstawowe procesy mog tworzy grupy kady komunikat jest nadawany w pewnym kontekcie i powinien by odbierany w takim samym kontekcie grupa + kontekst = komunikator proces jest identyfikowany przez numer (rank) w grupie zwizanej z komunikatorem 95

96 pojcia podstawowe istnieje komunikator domylny, którego grupa zawiera wszystkie procesy pocztkowe, zwanympi_comm_world 96

97 typy danych MPI dane w komunikacie nadawanym albo odbieranym s opisane trójk (address, count, datatype) typ danych MPI jest rekursyjnie zdefiniowany przez: predefiniowanie odpowiadajce typowi danych w jzyku programowania, np. MPI_INT, MPI_DOUBLE_PRECISION cigł tablic bloku typów danych 97

98 etykiety MPI komunikaty maj etykiety nadawane przez uytkownika etykieta (tag) jest liczb całkowit, umoliwiajc identyfikacj komunikatu w procesie odbiornika odbiornik moe zrezygnowa z identyfikacji komunikatu podajc MPI_ANY_TAG zamiast etykiety 98

99 podstawowa operacja blokujcego nadawania MPI_SEND (start, count, datatype, dest, tag, comm) start, count, datatype opisuj bufor komunikatów dest opisuje proces docelowy, jest on numerem tego procesu w komunikatorze, okrelonym przez comm 99

100 podstawowa operacja blokujcego nadawania po powrocie z tej funkcji, dane s dostarczane do systemu, a bufor si zwalnia do ponownego wykorzystania komunikat wcale nie musi by odebrany przez proces docelowy 100

101 podstawowa operacja blokujcego odbioru MPI_RECV (start, count, datatype, source, tag, comm, status) czeka a zostanie odebrany z systemu komunikat pasujcy do nadawcy source i etykiety tag 101

102 podstawowa operacja blokujcego odbioru source jest rang w komunikatorze okrelonym przezcomm, albo dowolnym nadawc wskazanym przez MPI_ANY_SOURCE status zawiera dalsze informacje odbiór mniejszej iloci danych typu datatype ni licznik count jest poprawny, wikszej jest błdem 102

103 odzyskiwanie dalszej informacji status jest struktur danych przydzielon w programie uytkownika w jzyku C: int recvd_tag, recvd_from, recvd_count; MPI_Status status; MPI_Recv(..., MPI_ANY_SOURCE, MPI_ANY_TAG,..., &status ) recvd_tag = status.mpi_tag; recvd_from = status.mpi_source; MPI_Get_count( &status, datatype, &recvd_count ); 103

104 odzyskiwanie dalszej informacji status jest struktur danych przydzielon w programie uytkownika w jzyku Fortran: integer recvd_tag, recvd_from, recvd_count integer status(mpi_status_size) call MPI_RECV(..., MPI_ANY_SOURCE, MPI_ANY_TAG,.. status, ierr) tag_recvd = status(mpi_tag) recvd_from = status(mpi_source) call MPI_GET_COUNT(status, datatype, recvd_count, ierr) 104

105 prosty przykład w Fortranie program main use MPI integer rank, size, to, from, tag, count, i, ierr integer src, dest integer st_source, st_tag, st_count integer status(mpi_status_size) double precision data(10) 105

106 prosty przykład w Fortranie call MPI_INIT( ierr ) call MPI_COMM_RANK( MPI_COMM_WORLD, rank, ierr ) call MPI_COMM_SIZE( MPI_COMM_WORLD, size, ierr ) print *, 'Process ', rank, ' of ', size, ' is alive' dest = size - 1 src = 0 106

107 prosty przykład w Fortranie if (rank.eq. 0) then do 10, i=1, 10 data(i) = i 10 continue 107

108 prosty przykład w Fortranie call MPI_SEND( data, 10, MPI_DOUBLE_PRECISION, + dest, 2001, MPI_COMM_WORLD, ierr) else if (rank.eq. dest) then tag = MPI_ANY_TAG source = MPI_ANY_SOURCE call MPI_RECV( data, 10, MPI_DOUBLE_PRECISION, + source, tag, MPI_COMM_WORLD, + status, ierr) 108

109 prosty przykład w Fortranie call MPI_GET_COUNT( status, MPI_DOUBLE_PRECISION, st_count, ierr ) st_source = status( MPI_SOURCE ) st_tag = status( MPI_TAG ) print *, 'status info: source = ', st_source, + ' tag = ', st_tag, 'count = ', st_count endif call MPI_FINALIZE( ierr ) end 109

110 dlaczego typy danych? poniewa wszystkie dane s etykietowane przez typ, implementacja MPI obsługuje komunikacj pomidzy procesami na maszynach o rónych reprezentacjach pamici i o rónych długociach elementarnych typów danych, czyli komunikacj heterogeniczn 110

111 dlaczego typy danych? specyfikacja układu danych w pamici zorientowanych na aplikacj zmniejsza ilo kopiowa z pamici do pamici pozwala zastosowa specjalistyczny sprzt do i rozdzielania i zbierania danych 111

112 etykiety czasowe separacja komunikatów zwykle jest uzyskiwana za pomoc etykiet czasowych to wymaga, aby biblioteki były wiadome etykiet czasowych pochodzcych z innych bibliotek mona to pokona za pomoc dzikich etykiet czasowych etykiety czasowe definiowane przez uytkownika dla zorganizowania aplikacji 112

113 konteksty róni si od etykiet czasowych niedopuszczalne s dzikie etykiety czasowe s przydzielane dynamicznie przez system, kiedy biblioteka ustanawia komunikator dla samej siebie nowe komunikatory tworzone za pomoc MPI_COMM 113

114 operacje zbiorowe w MPI operacje zbiorowe s wywoływane przez wszystkie procesy w komunikatorze MPI_BCAST rozsyła dane z jednego procesu korzenia do wszystkich innych procesów w komunikatorze MPI_REDUCE łczy dane ze wszystkich procesów w komunikatorze i zwraca do jednego procesu w wielu algorytmach numerycznych operacje SEND/RECEIVE s zastpowane przez operacje BCAST/REDUCE 114

115 przykład PI w Fortranie program main use MPI double precision PI25DT parameter (PI25DT = d0) double precision mypi, pi, h, sum, x, f, a integer n, myid, numprocs, i, ierr c function to integrate f(a) = 4.d0 / (1.d0 + a*a) call MPI_INIT( ierr ) call MPI_COMM_RANK( MPI_COMM_WORLD, myid, ierr ) call MPI_COMM_SIZE( MPI_COMM_WORLD, numprocs, ierr ) 10 if ( myid.eq. 0 ) then write(6,98) 98 format('enter the number of intervals: (0 quits)') read(5,99) n 99 format(i10) endif 115

116 przykład PI w Fortranie call MPI_BCAST( n, 1, MPI_INTEGER, 0, + MPI_COMM_WORLD, ierr) c check for quit signal if ( n.le. 0 ) goto 30 c calculate the interval size h = 1.0d0/n sum = 0.0d0 do 20 i = myid+1, n, numprocs x = h * (dble(i) - 0.5d0) sum = sum + f(x) 20 continue mypi = h * sum c collect all the partial sums call MPI_REDUCE( mypi, pi, 1, MPI_DOUBLE_PRECISION, + MPI_SUM, 0, MPI_COMM_WORLD,ierr) 116

117 przykład PI w Fortranie c node 0 prints the answer if (myid.eq. 0) then write(6, 97) pi, abs(pi - PI25DT) 97 format(' pi is approximately: ', F18.16, + ' Error is: ', F18.16) endif goto call MPI_FINALIZE(ierr) end 117

118 przykład PI w jzyku C #include "mpi.h" #include <math.h> int main(int argc, char *argv[]) { int done = 0, n, myid, numprocs, i, rc; double PI25DT = ; double mypi, pi, h, sum, x, a; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); while (!done) { if (myid == 0) { printf("enter the number of intervals: (0 quits) "); scanf("%d",&n); } MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); if (n == 0) break; 118

119 przykład PI w jzyku C } 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 / (1.0 + x*x); } mypi = h * sum; MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) printf("pi is approximately %.16f, Error is %.16f\n", pi, fabs(pi - PI25DT)); } MPI_Finalize(); return 0; 119

120 alternatywny zbiór funkcji w uproszczonym MPI MPI_INIT MPI_FINALIZE MPI_COMM_SIZE MPI_COMM_RANK MPI_BCAST MPI_REDUCE 120

121 ródła zakleszcze nadaj duy komunikat od procesu 0 do procesu 1 jeeli u odbiorcy jest zbyt mało pamici, operacjasend musi czeka, a uytkownik zwolni miejsce w pamici za pomoc operacji receive 121

122 ródła zakleszcze co si stanie, kiedy: Process 0 Process 1 Send(1) Recv(1) Send(0) Recv(0) tak wymian okrela si jako niebezpieczn, poniewa zaley ona od dostpnoci buforów w systemie 122

123 rozwizanie problemu niebezpiecznej wymiany staranniejsze uporzdkowanie operacji: Process 0 Send(1) Recv(1) Process 1 Recv(0) Send(0) 123

124 rozwizanie problemu niebezpiecznej wymiany zastosowanie operacji nieblokujcej Process 0 Isend(1) Irecv(1) Waitall Process 1 Isend(0) Irecv(0) Waitall 124

125 przenone rodowisko MPI MPICH efektywna przenona implementacja MPI działa na MPP, klastrach i w heterogenicznych sieciach stacji roboczych 125

126 przenone rodowisko MPI w celu jego postawienia, skompilowania, uruchomienia i dokonania analizy działania, naley wykona polecenia: configure make mpicc -mpitrace myprog.c mpirun -np 10 myprog upshot myprog.log 126

127 rozszerzenia MPI dynamiczne zarzdzanie procesami dynamiczny start procesu dynamiczne nawizanie połcze komunikacja jednostronna put/get inne operacje równoległe we/wy 127

128 rozszerzenia MPI cechy MPI-2 dania uogólnione wizania dla C++ i Fortranu 90 kwestie współpracy midzy jzykami 128

129 kiedy stosowa MPI? dla przenoszalnoci i efektywnoci przy nieregularnych strukturach danych budujc narzdzia dla innych (biblioteki) przy zarzdzaniu pamici dla kadego procesu 129

130 kiedy nie stosowa MPI? gdy rozwizanie (biblioteka) ju istnieje wymaga tolerancji na błdy przetwarzanie rozproszone (CORBA, DCOM) 130

131 wnioski rodowisko przetwarzania równoległego współpracuje w celu rozwoju normy dla bibliotek MPI jest wiele implementacji, prawie na wszystkie platformy podzbiory MPI s łatwe do nauczenia i wykorzystania jest wiele materiałów nt. MPI 131

Optymalizacja komunikacji w systemach rozproszonych i równoległych

Optymalizacja 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ółowo

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 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ółowo

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

Programowanie 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ółowo

Programowanie 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 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ółowo

Programowanie 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 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ółowo

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

Modele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak 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ółowo

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 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ółowo

Operacje 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 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ółowo

Message Passing Interface

Message 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ółowo

Programowanie w standardzie MPI

Programowanie 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ółowo

Operacje grupowego przesyłania komunikatów

Operacje 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ółowo

Programowanie 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 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ółowo

Programowanie 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 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ółowo

Programowanie współbieżne i rozproszone

Programowanie 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ółowo

Tryby 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 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ółowo

Biblioteki graficzne MPI - MPE

Biblioteki graficzne MPI - MPE Biblioteki graficzne MPI - MPE Michał Sajkowski Mirosław Kupczyk literatura [Chan1998] A. Chan, W. Gropp, E. Lusk, User s Guide formpe: Extensions to MPI Programs, ANL 1998. Web pages for MPI and MPE:

Bardziej szczegółowo

Operacje kolektywne MPI

Operacje 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ółowo

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

Programowanie 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ółowo

Łagodne wprowadzenie do Message Passing Interface (MPI)

Łagodne wprowadzenie do Message Passing Interface (MPI) Łagodne wprowadzenie do Message Passing Interface (MPI) Szymon Łukasik Zakład Automatyki PK szymonl@pk.edu.pl Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 1/48 Czym jest MPI? Własności

Bardziej szczegółowo

Rozszerzenia MPI-2 1

Rozszerzenia 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ółowo

Wprowadzenie 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. 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ółowo

Programowanie 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 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ółowo

Programowanie Współbieżne

Programowanie 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ółowo

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

Miary 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ółowo

Architektury systemów równoległych

Architektury 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ółowo

Jak wygląda praca na klastrze

Jak 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ółowo

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

Programowanie 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ółowo

Programowanie 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 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ółowo

POZNA SUPERCOMPUTING AND NETWORKING. Wtki w MPI. Michał Sajkowski

POZNA SUPERCOMPUTING AND NETWORKING. Wtki w MPI. Michał Sajkowski Wtki w MPI Michał Sajkowski literatura wykład opracowany na podstawie: W. Gropp, E. Lusk, R. Thakur, Using MPI-2, The MIT Press 1999 W. Gropp, E. Lusk, A. Skjellum, Using MPI, 2nd. Ed., The MIT Press 1999

Bardziej szczegółowo

Komunikacja kolektywna w środowisku MPI

Komunikacja 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ółowo

Sposoby przekazywania parametrów w metodach.

Sposoby przekazywania parametrów w metodach. Temat: Definiowanie i wywoływanie metod. Zmienne lokalne w metodach. Sposoby przekazywania parametrów w metodach. Pojcia klasy i obiektu wprowadzenie. 1. Definiowanie i wywoływanie metod W dotychczas omawianych

Bardziej szczegółowo

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

Programowanie współbieżne... (12) Andrzej Baran 2010/11 Programowanie współbieżne... (12) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html Dekompozycja danych. Wejście. rank 0 rank 1 rank 2 A B C A B C A B C indata indata indata wejście

Bardziej szczegółowo

http://www.mcs.anl.gov/research/projects/mpi/standard.html

http://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ółowo

51. Metody komunikacji nieblokującej.

51. 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ółowo

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

PARADYGMATY 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ółowo

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

Programowanie współbieżne WYKŁADY - CZ. 5EX. PRZYKŁAD. LICZBY PIERWSZE. Andrzej Baran Programowanie współbieżne WYKŁADY - CZ. 5EX. PRZYKŁAD. LICZBY PIERWSZE. Andrzej Baran baran@kft.umcs.lublin.pl Liczby pierwsze I Program: pierwsze.f90 - znajdowanie liczb pierwszych w przedziale 2..n Metoda:

Bardziej szczegółowo

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

Wprowadzenie 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ółowo

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

METODY 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ółowo

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

Wprowadzenie 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ółowo

... Ireneusz Mrozek. Wydział Informatyki

... Ireneusz Mrozek. Wydział Informatyki Ireneusz Mrozek Wydział Informatyki Proces wykonujcy si program Proces jednostka pracy systemu zarzdzan przez system operacyjny. W skład procesu wchodz: - program; - dane - zawarto rejestrów, stosu; -

Bardziej szczegółowo

Weryfikacja oprogramowania, korzystajacego z MPI

Weryfikacja 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ółowo

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

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Obliczenia rozproszone z wykorzystaniem MPI

Obliczenia rozproszone z wykorzystaniem MPI 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

Bardziej szczegółowo

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 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ółowo

Klient-Serwer Komunikacja przy pomocy gniazd

Klient-Serwer Komunikacja przy pomocy gniazd II Klient-Serwer Komunikacja przy pomocy gniazd Gniazda pozwalają na efektywną wymianę danych pomiędzy procesami w systemie rozproszonym. Proces klienta Proces serwera gniazdko gniazdko protokół transportu

Bardziej szczegółowo

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

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

Programowanie 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ółowo

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

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1 Metodologia programowania równoległego Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje (functional

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy 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ółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

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

Architektura 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ółowo

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Zdalne 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ółowo

Wprowadzenie. System rozproszony jest kolekcją niezależnych, autonomicznych komputerów, które dla użytkownika prezentują się jak jeden komputer.

Wprowadzenie. System rozproszony jest kolekcją niezależnych, autonomicznych komputerów, które dla użytkownika prezentują się jak jeden komputer. Wprowadzenie System rozproszony jest kolekcją niezależnych, autonomicznych komputerów, które dla użytkownika prezentują się jak jeden komputer. ożna wyróżnić dwa aspekty tej definicji: sprzętowy komputery

Bardziej szczegółowo

Pierwsze kroki w środowisku MPI

Pierwsze kroki w środowisku MPI Pierwsze kroki w środowisku MPI Zakres ćwiczenia W tym ćwiczeniu dowiesz się, w jaki sposób napisać swój pierwszy program wykorzystujący środowisko MPI i jak taki program uruchomić. Etapy tworzenia i uruchamiania

Bardziej szczegółowo

Część 4 życie programu

Część 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ółowo

Wstęp do programowania

Wstę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ółowo

Wywoływanie procedur zdalnych

Wywoł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ółowo

Język ludzki kod maszynowy

Ję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ółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC 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

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC 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ółowo

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++ Podstawy Programowania - Roman Grundkiewicz - 013Z Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub

Bardziej szczegółowo

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

Zdalne 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ółowo

Wywoływanie procedur zdalnych

Wywoł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ółowo

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

5. 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ółowo

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

Zdalne 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ółowo

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

Programowanie 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ółowo

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

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie

Bardziej szczegółowo

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.

Bardziej szczegółowo

Pobieranie argumentów wiersza polecenia

Pobieranie argumentów wiersza polecenia Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:

Bardziej szczegółowo

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

Systemy rozproszone. Państwowa Wyższa Szkoła Zawodowa w Chełmie. ** Instytut Fizyki Uniwersytet Marii Curie-Skłodowskiej w Lublinie Systemy rozproszone Rafał Ogrodowczyk *, Krzysztof Murawski **,*, Bartłomiej Bielecki * * Katedra Informatyki Państwowa Wyższa Szkoła Zawodowa w Chełmie ** Instytut Fizyki Uniwersytet Marii Curie-Skłodowskiej

Bardziej szczegółowo

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

Programowanie współbieżne... (2) Programowanie współbieżne... (2) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html Prawo Amdahla - powtórka Wydajność E = S/n (na procesor). Stąd S = En E 1 f + 1 f n 1 fn+1 f

Bardziej szczegółowo

Programowanie 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 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ółowo

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

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 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ółowo

Wstęp do Programowania, laboratorium 02

Wstę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ółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++ Podstawy Programowania :: Roman Grundkiewicz :: 014 Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub

Bardziej szczegółowo

Wywoływanie procedur zdalnych

Wywoł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

Bardziej szczegółowo

61 Topologie wirtualne

61 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ółowo

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!! Temat: Klasy typu sealed. Klasy abstrakcyjne. Deklaracja i implementacja interfejsu. Typ Object i operatory is oraz as. Czas ycia obiektu. Destruktory. 1. Klasa typu sealed Przykład 1 Klasa typu sealed

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego

Bardziej szczegółowo

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

main( ) 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ółowo

Proces tworzenia programu:

Proces tworzenia programu: Temat 1 Pojcia: algorytm, program, kompilacja i wykonanie programu. Proste typy danych i deklaracja zmiennych typu prostego. Instrukcja przypisania. Operacje wejcia/wyjcia. Przykłady prostych programów

Bardziej szczegółowo

zdefiniowanie kilku grup dyskusyjnych, z których chcemy odbiera informacje, dodawanie, usuwanie lub edycj wczeniej zdefiniowanych grup dyskusyjnych,

zdefiniowanie kilku grup dyskusyjnych, z których chcemy odbiera informacje, dodawanie, usuwanie lub edycj wczeniej zdefiniowanych grup dyskusyjnych, Wstp W nowoczesnym wiecie coraz istotniejsz rol odgrywa informacja i łatwy dostp do niej. Nie dziwi wic fakt, i nowoczesne telefony komórkowe to nie tylko urzdzenia do prowadzenia rozmów telefonicznych,

Bardziej szczegółowo

Sosnowiec, dn... Imię i nazwisko...

Sosnowiec, dn... Imię i nazwisko... Sosnowiec, dn.... Imię i nazwisko... Test znajomości zaawansowanch technik programowania składa się z 10 ptań. Dla każdego ptania zaproponowano czter odpowiedzi, z którch tlko jedna jest prawidłowa. Na

Bardziej szczegółowo

Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński Wprowadzenie Programowanie Obiektowe Mateusz Cicheński Paradygmaty programowania C++ Krótki przykład Kompilacja i linkowanie Makefile Przydatne flagi kompilatora Zaliczenie przedmiotu Harmonogram roku

Bardziej szczegółowo

Temat: 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. 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ółowo

Systemy Operacyjne - Operacje na plikach

Systemy 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

Procedury i funkcje składowane

Procedury i funkcje składowane Procedury i funkcje składowane Zmienne podstawienia i zmienne wiązane, podprogramy, procedury składowane, typy argumentów, wywoływanie procedur, funkcje składowane, poziomy czystości funkcji, funkcje tablicowe

Bardziej szczegółowo

Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation).

Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation). Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation). 1. Programowanie zdarzeniowe Programowanie zdarzeniowe

Bardziej szczegółowo

Aplikacja Sieciowa wątki po stronie klienta

Aplikacja Sieciowa wątki po stronie klienta Aplikacja Sieciowa wątki po stronie klienta Na ostatnich zajęciach zajmowaliśmy się komunikacją pomiędzy klientem a serwerem. Wynikiem naszej pracy był program klienta, który za pomocą serwera mógł się

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r. M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Programowanie wspóªbie»ne wiczenia 5 monitory cz. 1 Zadanie 1: Stolik dwuosobowy raz jeszcze W systemie dziaªa N par procesów. Procesy z pary s nierozró»nialne. Ka»dy proces cyklicznie wykonuje wªasnesprawy,

Bardziej szczegółowo

Programowanie Rozproszone i Równoległe. Edward Görlich http://th.if.uj.edu.pl/~gorlich goerlich@th.if.uj.edu.pl

Programowanie Rozproszone i Równoległe. Edward Görlich http://th.if.uj.edu.pl/~gorlich goerlich@th.if.uj.edu.pl Programowanie Rozproszone i Równoległe Edward Görlich http://th.if.uj.edu.pl/~gorlich goerlich@th.if.uj.edu.pl Motywacja wyboru Programowanie rozproszone równoległość (wymuszona) Oprogramowanie równoległe/rozproszone:

Bardziej szczegółowo

WYKŁAD 10. Wzorce projektowe czynnociowe Command Strategy

WYKŁAD 10. Wzorce projektowe czynnociowe Command Strategy WYKŁAD 10 Wzorce projektowe czynnociowe Command Strategy Behavioral Design Pattern: Command [obj] Kapsułkuje dania w postaci obiektu, co umoliwia parametryzowanie klientów rónymi daniami, kolejkowanie

Bardziej szczegółowo

Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W E, 2L PRZEWODNIK PO PRZEDMIOCIE

Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W E, 2L PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: PROGRAMOWANIE ROZPROSZONE I RÓWNOLEGŁE Distributed and parallel programming Kierunek: Forma studiów: Informatyka Stacjonarne Rodzaj przedmiotu: moduł specjalności obowiązkowy: Sieci komputerowe

Bardziej szczegółowo

Kolejne funkcje MPI 1

Kolejne 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ółowo