POZNA SUPERCOMPUTING AND NETWORKING. Rozszerzenia standardu MPI: MPI-2

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

Download "POZNA SUPERCOMPUTING AND NETWORKING. Rozszerzenia standardu MPI: MPI-2"

Transkrypt

1 Rozszerzenia standardu MPI: MPI-2

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

3 agenda troch historii co nowego w MPI-2 równoległe we/wy zdalne operacje na pamici dynamiczne zarzdzanie procesami co dalej? 3

4 troch historii 1992 pocztek prac nad MPI 1994 MPI pocztek prac nad MPI MPI-2 4

5 co nowego jest w MPI-2? wielka trójka: równoległe we/wy zdalne operacje na pamici dynamiczne zarzdzanie procesami oraz: 5

6 co nowego jest w MPI-2? rozszerzone operacje kolektywne wsparcie dla C++ i Fortran90 współdziałanie midzy jzykami (programowanie w wielu jzykach jednoczenie) zewntrzne interfejsy wtki 6

7 uruchomienie procesu MPI uyteczn cech MPI-2 jest standardowa metoda uruchomienia programu MPI najprostsz jej wersj jest: uruchamiajca program o nazwie na 16 procesorach 7

8 uruchomienie procesu MPI to, jak MPI uruchamia programy jest poza specyfikacj MPI, niemniej MPI Forum rekomenduje, aby była jedn z metod uruchamiania programu MPI wybrano, aby unikn konfliktu z rónymi znaczeniami wybór oznacza przenaszalno uruchomienia procesu 8

9 uruchomienie procesu MPI std w poleceniu to rozmiar oprócz argumentu ma inne argumenty specyfikowane przez MPI:! "! #"! $%! # " oraz & przykłady uruchomienia procesu 9

10 przykłady uruchomienia procesów MPI ' () uruchomienie procesów zamiast (), ze wzgldu na ograniczenia szeregowania ' * " #&"# $% +"++ & uruchomienie 4 procesów na okrelonej maszynie (#&"#) w katalogu roboczym +"++ & 10

11 przykłady uruchomienia procesów MPI ' ),) #" # - # " +"++& próba uruchomienia maks 12 procesów na maszynie # w katalogu +"++& ' & & szuka co ma zrobi w pliku & 11

12 równoległe we/wy równoległe we/wy, czasem nazywane MPI-IO, jest inicjatyw IBM, badajc analogi midzy we/wy a przesyłaniem komunikatów zapis do pliku jest analogi nadawania komunikatu do systemu plików odczyt pliku jest analogi odbioru komunikatu z systemu plików 12

13 równoległe we/wy równoległe we/wy wymaga operacji kolektywnych, definiowania niecigłych bloków danych w pamici i w plikach oraz operacji nieblokujcych czyli tych poj, które pojawiały si ju w MPI 13

14 równoległe we/wy we/wy w MPI-2 to we/wy w Uniksie plus troch wicej MPI zawiera analogie do operacji open, close, seek, read i write celem we/wy w MPI jest uzyskanie lepszej efektywnoci ni Unix API 14

15 równoległe we/wy MPI musi dostarczy nastpujce cechy: niecigły dostp do pamici i pliku kolektywne operacje we/wy jawne przesunicia dla uniknicia oddzielnych operacji. nieblokujce we/wy przenona reprezentacja danych wskazówki implementacyjne 15

16 zdalne operacje na pamici cech charakterystyczn modelu przesyłania komunikatów jest to, e dane s przesyłane z jednej przestrzeni adresowej do drugiej za pomoc pary operacji send/receive odrónia to ten model od modelu współdzielenia pamici, w którym procesy maj dostp do wspólnej puli pamici i mog wprost wykonywa operacje na pamici (ładuj z, zapamitaj do) (load from, store into) 16

17 zdalne operacje na pamici w MPI-2 zdefiniowano API, który wprowadza elementy modelu współdzielcego pami do rodowiska MPI te operacje nazywaj si jednostronnymi (one-sided) albo zdalnymi operacjami na pamici (remote memory) 17

18 zdalne operacje na pamici - motywacja zrównowaenie efektywnoci i przenonoci midzy rónymi architekturami: SMPs (shared memory multiprocessors), NUMA (nonuniform memory access), MPPs (distributed memory massively parallel processors), klastrów SMP, sieci heterogenicznych 18

19 zdalne operacje na pamici - motywacja pozostawienia zasady look and feel z MPI-1 uwzgldnienie koherencji pamici notatnikowej i spójnoci sekwencyjnej oddzielenia synchronizacji od przesyłania danych w celu zwikszenia efektywnoci 19

20 zdalne operacje na pamici powstałe rozwizanie jest oparte na idei okien zdalnego dostpu do pamici okno zdalnego dostpu do pamici to porcja przestrzeni adresowej kadego procesu, na którym mog by przeprowadzane zdalne operacje przez inne procesy wystpujce w komunikatorze MPI 20

21 zdalne operacje na pamici wtedy mog na tym oknie by dokonane operacje jednostronne: put, get i accumulate, do zapamitania do, ładowania z i aktualizacji okna wystawionego dla innych procesów wszystkie zdalne operacje na pamici s operacjami nieblokujcymi, std s konieczne operacje synchronizacji do zapewnienia ich zakoczenia 21

22 zdalne operacje na pamici wiele takich operacji synchronizacji jest zapewnionych, niektóre dla uproszczenia, niektóre dla precyzyjnego sterowania, a niektóre analogiczne do operacji synchronizacji w pamici współdzielonej synchronizacja: rozdział 4 ksiki Using MPI-2 22

23 dynamiczne zarzdzanie procesami trzecim głównym odstpstwem od modelu MPI-1 jest zdolno procesu MPI do: udziału w tworzeniu nowego procesu MPI ustanowienia komunikacji z procesem MPI, który został uruchomiony oddzielnie 23

24 dynamiczne zarzdzanie procesami główne problemy, na jakie trafiamy przy projektowaniu API dla dynamicznego zarzdzania procesami: utrzymanie prostoty i elastycznoci współdziałanie z systemem operacyjnym, zarzdc zasobów, i zarzdc procesów w złoonym rodowisku programowym unikanie warunków wycigu, które naraaj na szwank poprawno 24

25 dynamiczne zarzdzanie procesami kluczem do tej poprawnoci jest to, aby operacje dynamicznego zarzdzania procesami były kolektywne, zarówno midzy procesami tworzcymi nowe procesy, jak pomidzy nowo utworzonymi procesami otrzymane zbiory procesów s reprezentowane w interkomunikatorze 25

26 dynamiczne zarzdzanie procesami interkomunikator komunikator zawierajcy dwie grupy procesów zamiast jednej dwie rodziny operacji oparte na interkomunikatorach: tworzca nowe procesy, nazywa si rozmnaaniem (spawning) ustalajca komunikacj z ju istniejcymi programami MPI nazywa si łczeniem (connecting) 26

27 dynamiczne zarzdzanie procesami ta ostatnia pozwala aplikacjom na posiadanie struktury równoległy klient /równoległy serwer szczegóły dynamicznego zarzdzania procesami - rozdział 7 ksiki Using MPI-2 27

28 dynamiczne zarzdzanie procesami dodatkowe kwestie: rozszerzone operacje kolektywne, dla interkomunikatorów (analogiczne do operacji w MPI-1 dla intrakomunikatorów) obsługa C++ i Fortran90, Fortranu na dwóch poziomach: podstawowym i rozszerzonym mieszane programowanie w wielu jzykach zewntrzne interfejsy do bibliotek itp. wtki 28

29 MPI-2 przejdziemy teraz do szczegółowego omówienia cech MPI-2 29

30 równoległe we/wy równoległe we/wy w MPI rozpoczyna si od funkcji znanych uytkownikom klasycznego jzyka we/wy i bibliotek omawiamy równie dodatkowe cechy MPI konieczne dla zapewnienia efektywnoci i przenonoci w tej czci skupimy si na odpowiednikach MPI otwierajcych i zamykajcych plik oraz na odczycie i zapisie cigłego bloku danych z i do pliku 30

31 równoległe we/wy na tym poziomie, główn cech jak pokaemy jest to, jak MPI moe wygodnie wyrazi równoległo w tych operacjach podamy kilka wariantów prostego przykładu, w którym procesy zapisuj tablic liczb całkowitych do pliku 31

32 sekwencyjne we/wy w programie MPI MPI nie obsługuje jawnie równoległego we/wy aplikacje MPI realizowały we/wy za pomoc mechanizmów wiadczonych przez system operacyjny jeden proces wykonuje całe we/wy, na zlecenie innych procesów 32

33 sekwencyjne we/wy w programie równoległym pami procesy plik 33

34 przykład programu zbiór procesów posiada rozproszon tablic liczb całkowitych, do zapisania do pliku kady proces ma 100 liczb z tej tablicy kółka to procesy, górne prostokty to bloki pamici w kadym procesie, po 100 liczb dolny prostokt to plik do zapisu 34

35 sekwencyjne we/wy w programie równoległym /* przyklad sekwencyjnego zapisu w Uniksie do wspolnego pliku */ #include mpi.h #include <stdio.h> #define BUFSIZE 100 int main(int argc, char *argv[]) { int i, myrank, numprocs, buf[bufsize] MPI_Status status; FILE *myfile 35

36 sekwencyjne we/wy w programie równoległym MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); for (i=0; i<bufsize, i++) buf[i] = myrank + BUFSIZE + 1; if myrank!= 0) MPI_Send(buf, BUFSIZE, MPI_INT, 0, 99, MPI_COMM_WORLD); 36

37 sekwencyjne we/wy w programie równoległym else { myfile = fopen( testfile, w ); fwrite(buf, sizeof(int), BUFSIZE, myfile); for (i=1; i<numprocs; i++) { MPI_Recv(buf, BUFSIZE, MPI_INT, i, 99, MPI_COMM_WORLD, &status); fwrite(buf, sizeof(int), BUFSIZE, myfile); } 37

38 sekwencyjne we/wy w programie równoległym } fclose(myfile); } MPI_Finalize(); return 0; 38

39 sekwencyjne we/wy w programie równoległym jest to czsto pierwszy sposób, w jaki we/wy jest realizowane w programie równoległym, jako przeniesienie z programu sekwencyjnego jeeli w programie z poprzedniego slajdu, /, wtedy nie ma adnej operacji komunikacji MPI 39

40 sekwencyjne we/wy w programie równoległym mona tak zrobi, gdy: maszyna równoległa, na której działa program, moe obsługiwa we/wy tylko z jednego procesu mona uywa zaawansowanych bibliotek we/wy, które nie maj zdolnoci równoległego we/wy powstały jeden plik jest wygodny do obsługi poza programem (0,, ) 40

41 sekwencyjne we/wy w programie równoległym... mona tak zrobi, gdy: mona zwikszy wydajno, kiedy proces wykonujcy we/wy jest zdolny do zbierania duych bloków danych nie naley tak robi, gdy: brak równoległoci ogranicza efektywno i skalowalno, zwłaszcza wtedy, gdy system plików dopuszcza równoległe fizyczne we/wy 41

42 równoległe we/wy nie-mpi w programie MPI aby podkreli brak równoległoci, nastpnym krokiem w przejciu od programu sekwencyjnego do równoległego jest pozwolenie kademu procesowi na zapis do oddzielnego pliku, w ten sposób realizujc równoległy transfer danych 42

43 równoległe we/wy nie-mpi w programie MPI pami procesy pliki 43

44 równoległe we/wy nie-mpi w programie MPI /* przyklad rownoleglego zapisu w Uniksie do oddzielnych plikow */ #include mpi.h #include <stdio.h> #define BUFSIZE 100 int main(int argc, char *argv[]) { int i, myrank, buf[bufsize]; char filename[128] FILE *myfile 44

45 równoległe we/wy nie-mpi w programie MPI MPI_Init(&argc,&argv); } MPI_Comm_rank(MPI_COMM_WORLD, &myrank); for (i=0; i<bufsize; i++) buf[i] = myrank * BUFSIZE + i; sprint(filename, testfile.%d, myrank); myfile = fopen(filename, w ); fwrite(buf, sizeof(int), BUFSIZE, myfile); fclose(myfile); MPI_Finalize(); return 0; 45

46 równoległe we/wy nie-mpi w programie MPI kady proces funkcjonuje niezalenie od innych w odniesieniu do we/wy, std program jest sekwencyjny wzgldem we/wy kady proces otwiera swój plik, zapisuje do niego i go zamyka pliki s oddzielne, co zapewniane jest przez przydział numeru procesu do nazwy pliku 46

47 równoległe we/wy nie-mpi w programie MPI zalet tego podejcia jest to, e operacje we/wy mog odbywa si równolegle i nadal mog stosowa sekwencyjne biblioteki we/wy, gdy to jest wymagane to podejcie ma jednak wiele wad 47

48 równoległe we/wy nie-mpi w programie MPI wady s nastpujce: pliki by moe musz by połczone razem, zanim bd wejciem do innej aplikacji moe si zdarzy, e aplikacja, która czyta te pliki, sama jest programem równoległym, i musi by uruchomiona z tak sam liczb procesów 48

49 równoległe we/wy nie-mpi w programie MPI wady s nastpujce: moe by utrudnione ledzenie zbioru plików jako całej grupy, w celu jego przesuwania, kopiowania albo nadawania moe zmniejszy si efektywno, poniewa poszczególne procesy mog mie swoje dane w małych, cigłych blokach, co powoduje wiele operacji we/wy na niewielkich danych, straty te mog przewysza zyski z równoległoci 49

50 we/wy MPI do oddzielnych plików jako nasz pierwszy program po prostu przekształcimy poprzedni program do wersji, w której wszystkie operacje we/wy s wykonane za pomoc MPI program ma te same zalety i wady, co poprzednia wersja 50

51 we/wy MPI do oddzielnych plików /* przyklad rownoleglego zapisu MPI do oddzielnych plikow */ #include mpi.h #include <stdio.h> #define BUFSIZE 100 int main(int argc, char *argv[]) { int i, myrank, buf[bufsize]; char filename[128] MPI_File *myfile 51

52 we/wy MPI do oddzielnych } plików MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); for (i=0; i<bufsize; i++) buf[i] = myrank * BUFSIZE + i; sprint(filename, testfile.%d, myrank); MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_WRONLY MPI_MODE_CREATE, MPI_INFO_NULL, &myfile); MPI_File_write(myfile, buf, BUFSIZE, MPI_INT, MPI_STATUS_IGNORE); MPI_File_close(&myfile); MPI_Finalize(); return 0; 52

53 we/wy MPI do oddzielnych plików midzy tymi programami s 4 rónice: deklaracjfile zastpiono przez MPI_File, myfile jest teraz zmienn typu MPI_File, zamiast wskanikiem do obiektu typu FILE funkcj MPI odpowiadajc fopen jest MPI_File_open, pierwszym jej argumentem jest komunikator, który zapewnia, e procesy operujce na pliku nawzajem si znaj i mog si ze sob komunikowa 53

54 we/wy MPI do oddzielnych plików pierwszym argumentem funkcji MPI_File_open jest komunikator MPI_COMM_SELF, poniewa kady proces otwiera własny plik dla swojego wyłcznego uytku drugim argumentem funkcji jest nazwa pliku trzeci argument, to tryb otwarcia pliku, tworzonego albo nadpisywanego, opisywany flagami, np. MPI_MODE_WRONLY i MPI_MODE_CREATE 54

55 we/wy MPI do oddzielnych plików czwarty argument,mpi_info_null, to warto domylna argumentuinfo funkcji MPI_File_open ostatnim argumentem jest adres zmiennej MPI_File, któr wypełnia funkcja MPI_File_open operacja ta zwraca jako warto funkcji kod powrotu, czyli MPI_SUCCESS, czego nie badamy 55

56 we/wy MPI do oddzielnych plików nastpn funkcj wykonujc we/wy w tym programie jest: MPI_File_write(myfile, buf, BUFSIZE, MPI_INT, MPI_STATUS_IGNORE); jest tu analogia midzy we/wy, a przesyłaniem komunikatów, dane do zapisu s opisywane trójk(address, count, datatype), czyli w taki sam sposób, jak komunikat w MPI-1 56

57 we/wy MPI do oddzielnych plików sposób opisu bufora do zapisu albo odczytu ma te same zalety, co w przesyłaniu komunikatów pozwala na dowoln dystrybucj niecigłych danych w pamici zapisanych jednym wywołaniem typ danych pozwala na zastosowanie transformacji przy zapisie albo odczycie w rodowisku heterogenicznym 57

58 we/wy MPI do oddzielnych plików kocowy argument to status, tego samego typu, co zwracany przezmpi_recv MPI-2 podaje, aby zamiast argumentu statusu, przekaza dowolnej funkcji MPI specjaln wartompi_status_ignore, w ten sposób mówic implementacji MPI, aby nie zajmowała si statusem, gdy i tak jest ignorowany to rozwizanie poprawia efektywno 58

59 we/wy MPI do oddzielnych plików na koniec, MPI_File_close(&myfile); zamyka plik, przekazujc adres pliku myfile 59

60 we/wy MPI do jednego pliku zmodyfikujemy teraz nasz przykład, tak aby procesy współdzieliły jeden plik, zamiast zapisywa do oddzielnych plików, pokaemy jak to realizuje MPI eliminuje to niewygod posiadania wielu plików, a pozostawia zalet zwikszonej efektywnoci zapewnianej przez równoległo 60

61 we/wy MPI do jednego pliku /* przyklad rownoleglego zapisu MPI do jednego pliku */ #include mpi.h #include <stdio.h> #define BUFSIZE 100 int main(int argc, char *argv[]) { int i, myrank, buf[bufsize]; MPI_File thefile; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); 61

62 we/wy MPI do jednego pliku for (i=0; i<bufsize; i++) buf[i] = myrank * BUFSIZE + i; } MPI_File_open(MPI_COMM_WORLD, testfile, MPI_MODE_CREATE MPI_MODE_WRONLY, MPI_INFO_NULL, &thefile); MPI_File_set_view(thefile, myrank * BUFSIZE * sizeof(int), MPI_INT, MPI_INT, native, MPI_INFO_NULL); MPI_File_write(thefile, buf, BUFSIZE, MPI_INT, MPI_STATUS_IGNORE); MPI_File_close(&thefile); MPI_Finalize(); return 0; 62

63 we/wy MPI do jednego pliku midzy tym programem, a poprzednim, s nastpujce rónice: argumentem funkcji MPI_File_open jest teraz MPI_COMM_WORLD, zamiast MPI_COMM_SELF, oznacza to, e wszystkie procesy razem otwieraj jeden plik taka operacja komunikatora nazywana jest operacj kolektywn 63

64 we/wy MPI do jednego pliku sposobem na zapis współdzielonego pliku jest danie kademu procesowi dostpu do czci pliku: 64

65 we/wy MPI do jednego pliku cz pliku, która jest widziana przez pojedynczy proces, jest zwana widokiem pliku, i jest ustawiona dla kadego procesu wywołaniem MPI_File_set_view MPI_File_set_view(thefile, myrank * BUFSIZE * sizeof(int), MPI_INT, MPI_INT, native, MPI_INFO_NULL); pierwszy argument to nazwa pliku thefile 65

66 we/wy MPI do jednego pliku drugi argument to przesunicie (w bajtach) w pliku, w którym zaczyna si widok pliku z danego procesu - mnoymy tutaj rozmiar zapisywanych danych przez numer procesu myrank * BUFSIZE * sizeof(int) std widok pliku z kadego procesu rozpoczyna si w odpowiednim miejscu w pliku jest to argument typu MPI_Offset 66

67 we/wy MPI do jednego pliku trzeci argument to etype widoku, okrela on jednostk danych w pliku, tutaj jest nim MPI_INT czwarty argument, filetype, słuy do opisu danych niecigłych w pliku. Poniewa tutaj nie ma adnych danych niecigłych, stosujemy etype MPI_INT pity argument to reprezentacja danych w pliku, native oznacza, e dane w pliku s takie same jak dane w pamici 67

68 we/wy MPI do jednego pliku nie ma wtedy konwersji, jest precyzja, std efektywno inne reprezentacje to:internal i external32, które zapewniaj przenono midzy komputerami o rónych architekturach ostatni argument to obiekt info, który jest ignorowany: MPI_INFO_NULL 68

69 we/wy MPI do jednego pliku teraz kady proces ma swój własny widok pliku, a operacja zapisu jest taka sama jak poprzednio: MPI_File_write(thefile, buf, BUFSIZE, MPI_INT, MPI_STATUS_IGNORE); ale poniewa MPI_File_open okrelił MPI_COMM_WORLD jako komunikator, a MPI_File_set_view dał kademu procesowi odmienny widok pliku, wtedy operacja zapisu przebiega równolegle 69

70 we/wy MPI do jednego pliku - wersja Fortran 90 przedstawimy ostatni program w wersji na jzyk Fortran standard MPI-2 ma dwa poziomy wsparcia Fortranu: podstawowy i rozszerzony poziom podstawowy wymaga, aby plik mpif.h był wany zarówno w formacie dla dowolnego ródła i jak i ustalonego ródła (działa dla kompilatora Fortran 90 i 77) 70

71 we/wy MPI do jednego pliku - wersja Fortran 90 poziom rozszerzony wymaga zastosowania modułu MPI, i zastpuje linimpif.h przezuse mpi MPI_Offset w jzyku C jest zastpiony w Fortranie przez typ INTEGER(kind=MPI_OFFSET_KIND) 71

72 we/wy MPI do jednego pliku - wersja Fortran 90! Rownolegly zapis MPI do jednego pliku w Fortranie PROGRAM main use mpi integer ierr, i, myrank, BUFSIZE, thefile parameter (BUFSIZE=100) integer buf(bufsize) integer(kind=mpi_offset_kind) disp call MPI_INIT(ierr) call MPI_COMM_RANK(MPI_COMM_WORLD, myrank, ierr) do i = 0, BUFSIZE buf(i) = myrank * BUFSIZE + i enddo 72

73 we/wy MPI do jednego pliku - wersja Fortran 90 call MPI_FILE_OPEN(MPI_COMM_WORLD, 'testfile', & MPI_MODE_WRONLY + MPI_MODE_CREATE, & MPI_INFO_NULL, thefile, ierr) call MPI_TYPE_SIZE(MPI_INTEGER, intsize) disp = myrank * BUFSIZE * intsize call MPI_FILE_SET_VIEW(thefile, disp, MPI_INTEGER, & MPI_INTEGER, 'native', & MPI_INFO_NULL, ierr) call MPI_FILE_WRITE(thefile, buf, BUFSIZE, MPI_INTEGER, & MPI_STATUS_IGNORE, ierr) call MPI_FILE_CLOSE(thefile, ierr) call MPI_FINALIZE(ierr) END PROGRAM main 73

74 odczyt pliku przez dowoln liczb procesów jedn z zalet równoległego we/wy do jednego pliku jest moliwo natychmiastowego odczytu pliku równolegle przez dowoln liczb procesów pokaemy teraz program, niezaleny od liczby procesów, które go uruchomi 74

75 odczyt pliku przez dowoln liczb procesów jest znany całkowity rozmiar pliku i s ustawione widoki pliku dla rónych procesów, tak, e kady ma w przyblieniu t sam ilo do odczytu jest tutaj jedna funkcja, której jeszcze nie znamy: MPI_File_get_size 75

76 odczyt pliku przez dowoln liczb procesów MPI_File_get_size (thefile, &thefile) pierwszym argumentem jest plik do otwarcia, drugim adres pola, do którego zapisuje si rozmiar pliku w bajtach MPI definiuje nowy typ MPI_Offset, który jest wystarczajco duy do zmieszczenia rozmiaru pliku 76

77 odczyt pliku przez dowoln liczb procesów jedn rónic midzy zapisem i odczytem jest to, e przy odczycie nie zawsze wiadomo, jak duo danych jest do odczytu chocia moemy to obliczy, kademu procesowi pozwalamy wyda to samo wywołanie MPI_File_read i przekaza adres rzeczywistego MPI_Status zamiast MPI_STATUS_IGNORE 77

78 odczyt pliku przez dowoln liczb procesów wtedy, tak jak w przypadku MPI_Recv, moemy uympi_get_count aby znale jak wiele wystpie danego typu danych przeczytano jeeli było mniej ni liczba danych elementów, wtedy osiga si koniec pliku 78

79 odczyt pliku przez dowoln liczb procesów /* równolegly MPI odczyt pliku przez dowoln liczb procesów */ #include mpi.h #include <stdio.h> int main(int argc, char *argv[]) { int myrank, numprocs, bufsize, *buf, count; MPI_File thefile; MPI_Status status MPI_Offset filesize; 79

80 odczyt pliku przez dowoln MPI_Init(&argc, &argv); liczb procesów MPI_Comm_rank(MPI_COMM_WORLD, &myrank); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_File_open(MPI_COMM_WORLD, testfile, MPI_MODE_RDONLY, MPI_INFO_NULL, &thefile); MPI_File_get_size(thefile, &filesize); /* w bajtach */ filesize = filesize /size(int); /* w liczbie ints */ bufsize = filesize / numprocs + 1;/*lokalna liczba do odczytu */ buf = (int *) malloc (bufsize + sizeof(int)); 80

81 odczyt pliku przez dowoln liczb procesów } MPI_File_set_view(thefile, myrank * bufsize * sizeof(int)), MPI_INT, MPI_INT, native, MPI_INFO_NULL); MPI_File_read(thefile, buf, bufsize, MPI_INT, &status); MPI_Get_count(&status, MPI_INT, &count); printf( process %d read %d ints\n, myrank, count); MPI_File_close(&thefile); MPI_Finalize(); return 0; 81

82 odczyt pliku przez dowoln liczb procesów przyczyn zastosowania bufsize = filesize / numprocs + 1; jest przypadek, gdy filesize < numprocs bez +1 wszystkie procesy odczytaj zero elementów, przy tej definicji bufsize, cały plik bdzie odczytany wad jest nieoptymalna liczba elementów, gdy filesize jest parzycie podzielny przez numprocs 82

83 odczyt pliku przez dowoln liczb procesów wersja C++ zastosowano tu nastpujce cechy wiza C++: wikszo obiektów MPI (grupy, komunikatory, pliki, dania, statusy) to obiekty C++ funkcja MPI zwizana z obiektem staje si metod na tym obiekcie, np. MPI_Send(..., comm) staje si metod na komunikatorze: comm.send(...) 83

84 odczyt pliku przez dowoln liczb procesów wersja C++ zastosowano tu nastpujce cechy wiza C++ (c.d): obiekty nie bdce składnikami innych obiektów istniej w przestrzeni nazw MPI, np. MPI_COMM_WORLD staje si MPI::COMM_WORLD, a stała MPI_INFO_NULL staje si MPI::INFO_NULL funkcje tworzce obiekty zwracaj obiekt jako warto zwrotn zamiast zwracania kodu błdu, np. MPI::File::Open zwraca obiekt typu MPI::File 84

85 odczyt pliku przez dowoln liczb procesów wersja C++ zastosowano tu nastpujce cechy wiza C++ (c.d): funkcje, które w C zwracaj warto w argumencie, tu zwracaj jako warto funkcji stosuje si sposób obsługi błdów, stosowany w C++. Domylna obsługa błdów to MPI::ERRORS_ARE_FATAL, ale mona j zmieni na: MPI::ERRORS_THROW_EXCEPTIONS 85

86 odczyt pliku przez dowoln liczb procesów wersja C++ zwrómy uwag na dwie wersje MPI::Init ta nowa, bez argumentów: MPI_Init() pozwala na przekazanie (NULL, NULL) do funkcji C: MPI_Init zamiast (&argc, &argv) 86

87 odczyt pliku przez dowoln liczb procesów wersja C++ /* równolegly MPI odczyt z jednego pliku, w C++ */ #include <iostream.h> #include mpi.h int main(int argc, char *argv[]) { intbufsize, *buf, count; char filename[128] MPI::Status status; MPI::Init(); int myrank = MPI::COMM_WORLD.Get_rank(); 87

88 odczyt pliku przez dowoln liczb procesów wersja C++ int numprocs = MPI::COMM_WORLD.Get_size(); MPI::File thefile = MPI::File::Open(MPI::COMM_WORLD, testfile, MPI::MODE_RDONLY, MPI::INFO_NULL); MPI::Offset filesize = thefile.get_size(); //w bajtach filesize = filesize / sizeof(int); //w liczbie ints bufsize = filesize / numprocs + 1; //lokalna liczba do //odczytu buf = (int *) malloc (bufsize * sizeof(int)); thefile.set_view(myrank * bufsize * sizeof(int)), MPI_INT, MPI_INT, native, MPI::INFO_NULL); 88

89 odczyt pliku przez dowoln liczb procesów wersja C++ } thefile.read(buf, bufsize, MPI_INT, status); count = status.get_count(mpi_int); cout << proces << myrank << read << << count << ints << endl; thefile.close(); MPI::Finalize(); return 0; 89

90 inne sposoby zapisu do pliku współdzielonego zastosowalimy wczeniej (slajd 65), MPI_File_set_view aby pokaza, jak mona poinstruowa wiele procesów, aby współdzieliły jeden plik w MPI jest wiele sposobów na uzyskanie tego samego celu 90

91 inne sposoby zapisu do pliku współdzielonego MPI_File_seek pozwala wielu procesom, aby ustawiły si na okrelone przesunicie w bajtach (byte offset), czyli przesunły wskanik do pliku, przed rozpoczciem odczytu albo zapisu (analogia do lseek w Uniksie) dla wikszej efektywnoci, operacje seek i read mog by połczone w jedn funkcj: MPI_File_read_at, podobnie jest z funkcj MPI_File_write_at 91

92 inne sposoby zapisu do pliku współdzielonego jeszcze jeden wskanik do pliku, zwany współdzielonym wskanikiem do pliku jest współdzielony midzy procesami nalecymi do komunikatora, przekazanego wczeniej do MPI_File_open takie funkcje, jak MPI_File_write_shared, uzyskuj dostp do danych z biecej lokalizacji współdzielonego wskanika do pliku, a nastpnie zwikszaj ten wskanik o wielko tych danych wykorzystanie: zapis logu przez wiele procesów 92

93 zdalny dostp do pamici MPI-2 uogólnia cisły model przesyłania komunikatów, realizowany przez MPI-1 zapewnia bezporedni dostp z jednego procesu do czci pamici innego procesu operacje to realizujce to:get, put i accumulate, zwane s operacjami zdalnego dostpu do pamici (remote memory access, RMA) pokaemy prosty przykład RMA 93

94 zdalny dostp do pamici charakterystyczn cech modelu przesyłania komunikatów oblicze równoległych jest to, e dane s przesuwane z przestrzeni adresowej jednego procesu do przestrzeni adresowej drugiego procesu, jedynie za pomoc kooperatywnej pary operacji nadawania i odbioru 94

95 zdalny dostp do pamici te same operacje, które przesuwaj (move) dane, wykonuj jednoczenie konieczn synchronizacj kiedy operacja odbioru si koczy, odebrane dane s gotowe do wykorzystania w procesie odbiorczym MPI-2 nie realizuje rzeczywistego modelu z pamici współdzielon, niemniej jednak RMA daje wiele z jego elastycznoci przesuwanie danych moe w całoci inicjowa jeden proces, std taka operacja nazywa si jednostronn (one sided) 95

96 zdalny dostp do pamici na dodatek synchronizacja, wymagana dla zakoczenia operacji przesuwania danych, jest oddzielona od jednostronnej inicjacji tej operacji operacje RMA w MPI-2 obejmuj mały, ale istotny zbiór operacji przesuwania danych, i stosunkowo złoony zbiór operacji synchronizacji tutaj rozpatrzymy jedynie najprostsz posta synchronizacji 96

97 zdalny dostp do pamici naley zauway, e operacje RMA nie dajadnej szczególnej gwarancji efektywnoci w stosunku do operacji nadawania i odbioru s zaprojektowane do pracy w rodowisku z pamici współdzielon jak i bez niej ich główn zalet jest efektywno w projektowaniu algorytmów, powstałe programy s przenone na róne implementacje MPI 97

98 zdalny dostp do pamici główny pomysł: okna pamici w cisłym przesyłaniu komunikatów, bufory nadawczo/odbiorcze okrelone przez typy danych MPI odpowiadaj tym porcjom przestrzeni adresowej procesu, które s eksportowane do innych procesów (przy operacji nadawania) albo s dostpne do zapisu przez inne procesy (przy operacji odbioru) 98

99 zdalny dostp do pamici w MPI-2, to pojcie pamici komunikacyjnej, jest uogólnione na pojcie okna zdalnego zapisu do pamici kady proces moe wyznaczy porcje swojej przestrzeni adresowej dostpne dla innych procesów zarówno przy odczycie jak i zapisie 99

100 zdalny dostp do pamici operacje odczytu i zapisu, wykonywane przez inne procesy s nazywane operacjami zdalnego dostpu do pamiciget iput trzeci rodzaj operacji to accumulate odnosi si ona do aktualizacji lokacji zdalnej pamici, na przykład dodawania do niej jakiej wartoci 100

101 zdalny dostp do pamici okno w MPI-2 odnosi si do porcji pamici jednego procesu, któr on przedkłada do rozproszonego obiektu, zwanego obiektem okna w ten sposób obiekt okna składa si z wielu okien, z których kade składa si z lokalnych obszarów pamici przedłoonych do innych procesów za pomoc kolektywnej funkcji tworzenia okna 101

102 zdalny dostp do pamici zbiór procesów moe mie wiele obiektów okna okno przedłoone obiektowi okna przez zbiór procesów moe si zmienia z procesu na proces pokaemy teraz obiekt okna utworzony przez okna przedłoone przez dwa procesy 102

103 zdalny dostp do pamici proces 0 proces 1 get Put okno RMA obiekt okna okno RMA lokalna przestrze adresowa 103

104 zdalny dostp do pamici operacje put i get, przesuwajce dane do i ze zdalnej pamici innego procesu, s nieblokujce wymagana jest oddzielna operacja synchronizacji do ich zakoczenia rozwamy prosty przykład 104

105 zdalny dostp do pamici przedstawimy program cpi, wyliczajcy warto liczby π za pomoc całkowania numerycznego w wersji oryginalnej, bez RMA, proces 0 pyta uytkownika o liczb przedziałów do wykorzystania w całkowaniu, i stosuje MPI_Bcast do nadania tej liczby do innych procesów kady proces wylicza sum czciow, suma całkowita jest uzyskana przez dodanie sum czciowych operacjmpi_reduce 105

106 zdalny dostp do pamici w wersji jednostronnej tego programu, proces 0 zapamituje warto przeczytan od uytkownika do swojej czci okna obiektu RMA, skd inne procesy mog po prostu j pobra (get) po obliczeniu sumy czciowej, wszystkie procesy dodadz swoje wyliczenia do wartoci w innym obiekcie okna, za pomoc accumulate synchronizacj załatwi nam najprostsza z operacji synchronizacji okna, czyli fence 106

107 zdalny dostp do pamici pocztek programu, zawiera ustawianie obiektu okna (druga cz to ptla główna) tutaj kady obiekt okna zawiera jedynie pojedyncz liczb w pamici procesu 0 obiekty okna s reprezentowane przez zmienne typu MPI_Win w jzyku C potrzebujemy dwa dwa obiekty okna, poniewa s tu dwa typy danych, mamy liczb integerni doublepi, do których wszystkie procesy maj oddzielny dostp 107

108 zdalny dostp do pamici utworzenie pierwszego okna, dokonane na procesie 0, wyglda nastpujco: MPI_Win_create(&n, sizeof(int), 1, MPI_INFO_NULL, MPI_COMM_WORLD, &nwin); to jest odwzorowane na inne procesy za pomoc: MPI_Win_create(MPI_BOTTOM, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &nwin); 108

109 zdalny dostp do pamici wywołanie na procesie 0 musi by odwzorowane na inne procesy, nawet wtedy, gdy nie przedkładaj one adnej pamici obiektowi okna, poniewa MPI_Win_create jest operacj kolektywn na komunikatorze, podanym jako ostatni argument komunikator ten wyznacza, które procesy bd mogły mie dostp do obiektu okna 109

110 zdalny dostp do pamici pierwsze dwa argumenty MPI_Win_create to adres i długo okna lokalnej pamici w bajtach, w ten sposób proces wywołujcy jest podatny na operacje put i get z innych procesów tutaj jest to jedna liczba całkowita n w procesie 0 i nie ma adnej pamici w innych procesach, co jest oznaczone długoci 0 110

111 zdalny dostp do pamici stosujemy MPI_BOTTOM jako adres, poniewa jest to adres poprawny, a my chcemy podkreli, e te procesy nie przedkładajadnych lokalnych okien do tworzonego obiektu okna nastpnym argumentem jest jednostka przesunicia (displacement unit), wykorzystana do okrelenia przesunicia (offset) w pamici w oknach 111

112 zdalny dostp do pamici tutaj kady obiekt okna zawiera tylko jedn zmienn, do której mamy dostp z przesuniciem 0, std jednostka przesunicia nie jest wana, podajemy 1 bajt czwarty argument to MPI_Info, stosowany do optymalizacji operacji RMA, tutaj jest MPI_INFO_NULL 112

113 zdalny dostp do pamici pity argument to komunikator, okrelajcy zbiór procesów majcych dostp do pamici, nalecych do obiektu okna MPI zwraca obiekt MPI_Win jako ostatni argument po pierwszym wywołaniu MPI_Win_create, kady proces ma dostp do danych w nwin (zawierajcych jedn liczb całkowitn), za pomoc operacji put i get do zapamitania i odczytu, aaccumulate do aktualizacji 113

114 zdalny dostp do pamici nie musimy pozyskiwaadnej specjalnej pamici dla okna, stosujemy zmienn programow n w procesie 0 czasem mona pozyskiwa tak pami za pomocmpi_alloc_mem, ale tego tu nie pokazujemy drugie wywołanie MPI_Win_create w kadym procesie jest podobne do pierwszego, i tworzy obiekt okna piwin, dajcy kademu procesowi dostp do zmiennej pi w procesie 0, gdzie całkowita warto π jest sumowana 114

115 zdalny dostp do pamici fragment programu ustawiania obiektu okna /* obliczanie pi za pomoc całkowania numerycznego, wersja RMA */ #include mpi.h #include <math.h> int main(int argc, char *argv[]) { int n, myid, numprocs, i; double PI25DT = ; double mypi, pi, h, sum, x; MPI_Win nwin, piwin; 115

116 zdalny dostp do pamici fragment programu ustawiania obiektu okna MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); if (myid == 0) { MPI_Win_create(&n, sizeof(int), 1, MPI_INFO_NULL, MPI_COMM_WORLD, &nwin); MPI_Win_create(&pi, sizeof(double), 1, MPI_INFO_NULL, MPI_COMM_WORLD, &piwin); } 116

117 zdalny dostp do pamici fragment programu ustawiania obiektu okna else { } MPI_Win_create(MPI_BOTTOM, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &piwin); MPI_Win_create(MPI_BOTTOM, 0, 1, MPI_INFO_NULL, MPI_COMM_WORLD, &piwin); 117

118 zdalny dostp do pamici główna ptla programu obliczania π za pomoc całkowania numerycznego, w wersji RMA, której kada iteracja zawiera: prob procesu 0 do uytkownika o podanie liczby przedziałów równoległe obliczanie wydrukowanie aproksymacji liczby π przez proces 0 ptla si koczy, gdy uytkownik wpisuje 0 118

119 zdalny dostp do pamici proces o niezerowym numerze pobiera (get) wartonbezporednio z obiektu okna, bez adnej jawnej akcji ze strony procesu 0, nadajcej t warto jednak przed wywołaniem MPI_Get, czy innej funkcji komunikacji RMA, naley wywoła specjaln funkcj synchronizacji, MPI_Win_fence, aby rozpocz tzw. epok dostpu RMA (RMA access epoch) 119

120 zdalny dostp do pamici naley wyranie podkreli, e funkcja MPI_Barrier nie moe by stosowana w celu osignicia synchronizacji wymaganej przez RMA MPI zapewnia w tym celu trzy specjalne mechanizmy, oprócz MPI_Win_fence, s to: locks (blokady, zatrzaski) oraz skalowalna, niekolektywna wersja MPI_Win_fence 120

121 zdalny dostp do pamici operacja fence, (płot), jest wywołana przez funkcjmpi_win_fence, i ma dwa argumenty: argument kontroli (assertion), do optymalizacji, tutaj jest nim 0 okno, na którym jest wykonana operacja fence MPI_Win_fence moe by rozumiane jako bariera, oddzielajca lokalne operacje na oknie od zdalnych operacji na oknie 121

122 zdalny dostp do pamici operacja fence moe równie oddziela dwa zbiory operacji zdalnych, czego tu nie pokazujemy tutaj MPI_Win_fence(0, nwin); oddziela przydział wartoci n od operacji zdalnych, takich jak: MPI_Get(&n, 1, MPI_INT, 0, 0, 1, MPI_INT, nwin); 122

123 zdalny dostp do pamici MPI_Get(&n, 1, MPI_INT, 0, 0, 1, MPI_INT, nwin); naley o tej licie argumentów myle jak o parze receive/send, których argumenty s w jednym wywołaniu w jednym procesie get jest jak receive, bufor odbiorczy jest okrelony w stylu MPI przez trójk: &n, 1, MPI_INT, czyli adres, licznik, typ danych 123

124 zdalny dostp do pamici MPI_Get(&n, 1, MPI_INT, 0, 0, 1, MPI_INT, nwin); potem jest numer procesu docelowego, czyli procesu, do którego pamici chcemy si dosta, jest nim 0, poniewa wszystkie procesy z wyjtkiem procesu 0 chc si tam dosta 124

125 zdalny dostp do pamici MPI_Get(&n, 1, MPI_INT, 0, 0, 1, MPI_INT, nwin); nastpne trzy argumenty: 0, 1, MPI_INT, definiuj bufor nadawczy w oknie, w stylu MPI, czyli: adres, licznik, typ danych tutaj adresem jest przesunicie w zdalnej pamici w procesie docelowym, jest nim 0, poniewa jest to jedyna warto w oknie, a przesunicie od pocztku okna to 0 125

126 zdalny dostp do pamici MPI_Get(&n, 1, MPI_INT, 0, 0, 1, MPI_INT, nwin); ostatni argument (nwin) to obiekt okna operacje RMA tylko inicjuj przesunicie danych, nie ma gwarancji, e jak wraca MPI_Get, to dane s pobrane do zmiennej n czyli MPI_Get jest operacj nieblokujc aby zapewni, e operacja si zakoczyła, trzeba ponownie wywołampi_win_fence 126

127 zdalny dostp do pamici nastpny fragment ptli głównej dotyczy sumy czciowejmypi w kadym procesie, włczajc proces 0 uzyskujemy aproksymacj π pozwalajc kademu procesowi na aktualizacj wartoci pi w obiekcie okna, poprzez dodanie do niej swojej wartoci mypi 127

128 zdalny dostp do pamici wpierw wywołujemy kolejne MPI_Win_fence, tym razem na obiekcie okna piwin, aby rozpocz kolejn epok dostpu RMA nastpnie wykonujemy operacjaccumulate MPI_Accumulate(&mypi, 1, MPI_DOUBLE, 0, 0, 1, MPI_DOUBLE, MPI_SUM, piwin); pierwsze trzy argumenty &mypi, 1, MPI_DOUBLE okrelaj lokaln warto stosowan do aktualizacji (jej adres, licznik, typ danych) 128

129 zdalny dostp do pamici MPI_Accumulate(&mypi, 1, MPI_DOUBLE, 0, 0, 1, MPI_DOUBLE, MPI_SUM, piwin); czwartym argumentem jest numer procesu docelowego, tutaj 0 kolejne trzy argumenty: 0, 1, MPI_DOUBLE, okrelaj warto aktualizowan w postaci (przesunicie, licznik, typ danych) nastpnie jest operacja stosowana do aktualizacji, jest nimpi_sum 129

130 zdalny dostp do pamici MPI_Accumulate(&mypi, 1, MPI_DOUBLE, 0, 0, 1, MPI_DOUBLE, MPI_SUM, piwin); ten argument jest podobny do argumentuop wmpi_reduce, rónic jest to, e w MPI_Accumulate mona stosowa jedynie wczeniej zdefiniowane operacje redukcji MPI tutaj kady proces dodaje swoj wartomypi do pi, std stosujemy operacjmpi_sum ostatni argument to obiekt okna, na którym dokonuje si aktualizacji, czyli piwin 130

131 zdalny dostp do pamici poniewa MPI_Accumulate jest funkcj nieblokujc, wywołujemympi_win_fence w celu zakoczenia operacji nastpnie drukujemy wynik z procesu 0 jeeli proces 0 nie stosujempi_accumulate, lecz pi += mypi, program da złe wyniki program koczy si uwolnieniem obiektów okna, za pomocmpi_win_free, kolektywnej operacji na tym samym komunikatorze, który wystpował w MPI_Win_create 131

132 zdalny dostp do pamici główna ptla programu obliczania π za pomoc całkowania numerycznego, wersja RMA while (1) { if (myid == 0) { printf( Wprowadz liczbe przedzialow: (0 konczy petle) ); fflush(stdout); scanf( %d,&n); pi = 0.0; } MPI_Win_fence(0, nwin); 132

133 zdalny dostp do pamici główna ptla programu obliczania π za pomoc całkowania numerycznego, wersja RMA if (myid!= 0) MPI_Get(&n, 1, MPI_INT, 0, 0, 1, MPI_INT, nwin); MPI_Win_fence(0, nwin); if (n == 0) break; else { h = 1.0 / (double) n; sum = 0.0; 133

134 zdalny dostp do pamici główna ptla programu obliczania π za pomoc całkowania numerycznego, wersja RMA 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_Win_fence( 0, piwin); MPI_Accumulate(&mypi, 1, MPI_DOUBLE, 0, 0, 1, MPI_DOUBLE, MPI_SUM, piwin); MPI_Win_fence(0, piwin); 134

135 zdalny dostp do pamici główna ptla programu obliczania π za pomoc całkowania numerycznego, wersja RMA } if (myid == 0) printf( pi jest w przyblizeniu %.16f, blad wynosi %.16f\n, pi, fabs(pi PI25DT)); } } MPI_Win_free(&nwin); MPI_Win_free(&piwin); MPI_Finalize(); return 0; 135

136 dynamiczne zarzdzanie procesami MPI-1 nie pozwala na dynamiczne zarzdzanie procesami MPI-2 realizuje to za pomoc funkcji MPI_Comm_spawn, która jest kolektywn operacj na rozmnaajcych si procesach (zwanych parents, rodzicami) i równie kolektywna przy wywołaniach MPI_Init w procesach rozmnaanych (zwanych children, dziemi) 136

137 podsumowanie omówilimy tutaj podstawowe kwestie dotyczce nastpujcych rozszerze standardu MPI: równoległe we/wy zdalne operacje na pamici oczywicie temat ten nie został w pełni wyczerpany oddzielnego potraktowania wymaga dynamiczne zarzdzanie procesami 137

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

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

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

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

Ł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

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

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

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

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

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

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

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

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

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

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

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

Problem decyzyjny naley do klasy NP. (Polynomial), jeeli moe by rozwizany w czasie conajwyej wielomianowym przez algorytm A dla DTM.

Problem decyzyjny naley do klasy NP. (Polynomial), jeeli moe by rozwizany w czasie conajwyej wielomianowym przez algorytm A dla DTM. WYKŁAD : Teoria NP-zupełnoci. Problem decyzyjny naley do klasy P (Polynomial), jeeli moe by rozwizany w czasie conajwyej wielomianowym przez algorytm A dla DTM. (przynaleno ta jest zachowana równie dla

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

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

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim

Bardziej szczegółowo

Bazy danych Podstawy teoretyczne

Bazy danych Podstawy teoretyczne Pojcia podstawowe Baza Danych jest to zbiór danych o okrelonej strukturze zapisany w nieulotnej pamici, mogcy zaspokoi potrzeby wielu u!ytkowników korzystajcych z niego w sposóbs selektywny w dogodnym

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

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych Wykªad 3 1 / 37 tekstowe binarne Wyró»niamy dwa rodzaje plików: pliki binarne pliki tekstowe 2 / 37 binarne tekstowe binarne Plik binarny to ci g bajtów zapami tanych w

Bardziej szczegółowo

Klonowanie MAC adresu oraz TTL

Klonowanie MAC adresu oraz TTL 1. Co to jest MAC adres? Klonowanie MAC adresu oraz TTL Adres MAC (Media Access Control) to unikalny adres (numer seryjny) kadego urzdzenia sieciowego (jak np. karta sieciowa). Kady MAC adres ma długo

Bardziej szczegółowo

Programowanie Obiektowe

Programowanie Obiektowe Programowanie Obiektowe dr in. Piotr Zabawa IBM/Rational Certified Consultant pzabawa@pk.edu.pl WYKŁAD 1 Wstp, jzyki, obiektowo Cele wykładu Zaznajomienie słuchaczy z głównymi cechami obiektowoci Przedstawienie

Bardziej szczegółowo

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły

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

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

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

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

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15 ANALIZA NUMERYCZNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Metoda Eulera 3 1.1 zagadnienia brzegowe....................... 3 1.2 Zastosowanie ró»niczki...................... 4 1.3 Output do pliku

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

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

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

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com Programowanie wykład dla I roku bioinformatyki semestr letni 2013 Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel. 58 523 2466 e-mail: danuta.makowiec at gmail.com Cel bloku

Bardziej szczegółowo

geometry a w przypadku istnienia notki na marginesie: 1 z 5

geometry a w przypadku istnienia notki na marginesie: 1 z 5 1 z 5 geometry Pakiet słuy do okrelenia parametrów strony, podobnie jak vmargin.sty, ale w sposób bardziej intuicyjny. Parametry moemy okrela na dwa sposoby: okrelc je w polu opcji przy wywołaniu pakiety:

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

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

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

Laboratorium 5: Tablice. Wyszukiwanie binarne

Laboratorium 5: Tablice. Wyszukiwanie binarne Wojciech Myszka Laboratorium 5: Tablice. Wyszukiwanie binarne 2016-05-07 09:02:17 +0200 1. Tablice Do tej pory nie było potrzeby odwoływać się do zmiennych złożonych. Programy były bardzo proste i korzystały

Bardziej szczegółowo

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;

Bardziej szczegółowo

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje

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

Instrukcja obsługi programu Pilot PS 5rc

Instrukcja obsługi programu Pilot PS 5rc Instrukcja obsługi programu Pilot PS 5rc Spis treci 1.Wprowadzenie....3 2. Wymagania....3 3. Instalacja oprogramowania...3 4. Uruchomienie Programu...5 4.1. Menu główne...5 4.2. Zakładki...6 5. Praca z

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

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

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

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

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

Wskaźniki w C. Anna Gogolińska

Wskaźniki w C. Anna Gogolińska Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

Bardziej szczegółowo

Instrukcja obsługi dodatku InsERT GT Smart Documents

Instrukcja obsługi dodatku InsERT GT Smart Documents Instrukcja obsługi dodatku InsERT GT Smart Documents InsERT, grudzie 2003 http://www.insert.com.pl/office2003 InsERT GT Smart Documents to przygotowany przez firm InsERT specjalny dodatek, umoliwiajcy

Bardziej szczegółowo

Architektura, oprogramowanie i uytkowanie klastra PCSS. Marek Zawadzki <mzawadzk@man.poznan.pl>

Architektura, oprogramowanie i uytkowanie klastra PCSS. Marek Zawadzki <mzawadzk@man.poznan.pl> Architektura, oprogramowanie i uytkowanie klastra PCSS Marek Zawadzki Plan prezentacji: klastry krótkie wprowadzenie klaster PCSS budowa jak otrzyma konto na klastrze sposób dostpu

Bardziej szczegółowo

obsług dowolnego typu formularzy (np. formularzy ankietowych), pobieranie wzorców formularzy z serwera centralnego,

obsług dowolnego typu formularzy (np. formularzy ankietowych), pobieranie wzorców formularzy z serwera centralnego, Wstp GeForms to program przeznaczony na telefony komórkowe (tzw. midlet) z obsług Javy (J2ME) umoliwiajcy wprowadzanie danych według rónorodnych wzorców. Wzory formularzy s pobierane z serwera centralnego

Bardziej szczegółowo

5 Przygotował: mgr inż. Maciej Lasota

5 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 5 1/6 Język C Instrukcja laboratoryjna Temat: Funkcje, parametry linii poleceń, typ wyliczeniowy. 5 Przygotował: mgr inż. Maciej Lasota 1) Parametry linii poleceń. Język C oprócz wprowadzania

Bardziej szczegółowo

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

Mikrokontroler ATmega32. Tryby adresowania Rejestry funkcyjne

Mikrokontroler ATmega32. Tryby adresowania Rejestry funkcyjne Mikrokontroler ATmega32 Tryby adresowania Rejestry funkcyjne 1 Rozrónia si dwa główne tryby: adresowanie bezporednie i porednie (jeli jeden z argumentów jest stał, ma miejsce take adresowanie natychmiastowe)

Bardziej szczegółowo

Wstp. Warto przepływu to

Wstp. Warto przepływu to 177 Maksymalny przepływ Załoenia: sie przepływow (np. przepływ cieczy, prdu, danych w sieci itp.) bdziemy modelowa za pomoc grafów skierowanych łuki grafu odpowiadaj kanałom wierzchołki to miejsca połcze

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

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

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

SUPLEMENT SM-BOSS WERSJA 6.15

SUPLEMENT SM-BOSS WERSJA 6.15 SUPLEMENT SM-BOSS WERSJA 6.15 Spis treci Wstp...2 Pierwsza czynno...3 Szybka zmiana stawek VAT, nazwy i PKWiU dla produktów...3 Zamiana PKWiU w tabeli PKWiU oraz w Kartotece Produktów...4 VAT na fakturach

Bardziej szczegółowo

Spis treci. Dzie 1. I Wprowadzenie (wersja 0911) II Dostp do danych biecych specyfikacja OPC Data Access (wersja 0911)

Spis treci. Dzie 1. I Wprowadzenie (wersja 0911) II Dostp do danych biecych specyfikacja OPC Data Access (wersja 0911) I Wprowadzenie (wersja 0911) Kurs OPC Integracja i Diagnostyka Spis treci Dzie 1 I-3 O czym bdziemy mówi? I-4 Typowe sytuacje I-5 Klasyczne podejcie do komunikacji z urzdzeniami automatyki I-6 Cechy podejcia

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

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()

Bardziej szczegółowo

Planowanie adresacji IP dla przedsibiorstwa.

Planowanie adresacji IP dla przedsibiorstwa. Planowanie adresacji IP dla przedsibiorstwa. Wstp Przy podejciu do planowania adresacji IP moemy spotka si z 2 głównymi przypadkami: planowanie za pomoc adresów sieci prywatnej przypadek, w którym jeeli

Bardziej szczegółowo

Język C zajęcia nr 11. Funkcje

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

System Connector Opis wdrożenia systemu

System Connector Opis wdrożenia systemu System Connector Opis wdrożenia systemu Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Spistre ci Wymagania z perspektywy Powiatowego Urzdu Pracy... 3

Bardziej szczegółowo

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika. Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika. 1. Pojcie struktury danych Nieformalnie Struktura danych (ang. data

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

Wskaźniki. Informatyka

Wskaźniki. Informatyka Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą

Bardziej szczegółowo

Bazy danych. Zaliczenie. Literatura. Strony WWW. Wykład 1: Wprowadzenie do baz danych. Semestr 1

Bazy danych. Zaliczenie. Literatura. Strony WWW. Wykład 1: Wprowadzenie do baz danych. Semestr 1 Zaliczenie Bazy Wykład 1: Wprowadzenie do baz Semestr 1 Wykład: Podstawowe informacje z zakresu baz - relacyjne bazy, DDL, SQL, indeksy, architektura baz Pracownia specjalistyczna: projekt bazy, SQL, Access

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

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą, jak

Bardziej szczegółowo

Argumenty wywołania programu, operacje na plikach

Argumenty wywołania programu, operacje na plikach Temat zajęć: Argumenty wywołania programu, operacje na plikach Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Zmienne statyczne) W języku C można decydować o sposobie przechowywania zmiennych. Decydują

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

Wskaźniki. Programowanie Proceduralne 1

Wskaźniki. Programowanie Proceduralne 1 Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres

Bardziej szczegółowo

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std; Programowanie C++ Zadanie 1 Napisz program do obliczenia sumy i iloczynu ciągu liczb zakooczonego liczbą zero. Zakładamy, że ciąg zawiera co najmniej jedną liczbę (założenie to jest konieczne przy obliczeniu

Bardziej szczegółowo

AltiumLive Dashboard - sownik. AltiumLive Dashboard - Glossary. Language. Contents

AltiumLive Dashboard - sownik. AltiumLive Dashboard - Glossary. Language. Contents AltiumLive Dashboard - sownik Language AltiumLive Dashboard - Glossary Contents Konto (Account) Aktywacja (Activation) Kod aktywacji (Activation Code) Kontakt (Contact) Grupa (Group) Administrator grupy

Bardziej szczegółowo

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

// Liczy srednie w wierszach i kolumnach tablicy dwuwymiarowej // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib. Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy

Bardziej szczegółowo

Wprowadzenie do kompilatorów

Wprowadzenie do kompilatorów Wprowadzenie do kompilatorów Czy ja kiedykolwiek napisz jaki kompilator? Jakie zadania ma do wykonania kompilator? Czy jzyk formalny to rodzaj jzyka programowania? Co to jest UML?, Czy ja kiedykolwiek

Bardziej szczegółowo

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Tablice (jedno i wielowymiarowe), łańcuchy znaków Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie

Bardziej szczegółowo

Funkcje zawarte w bibliotece < io.h >

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

Wzorce (szablony) template<class T> {definicja wzorca} lub template<class TypElementu> lub template<class TypElementu1, class TypElementu2>

Wzorce (szablony) template<class T> {definicja wzorca} lub template<class TypElementu> lub template<class TypElementu1, class TypElementu2> Wzorce (szablony) Wzorce pozwalaj na okrelenie, za pomoc pojedynczego fragmentu kodu, całej gamy powizanych (przecionych) funkcji nazywanych funkcjami wzorcowymi lub powizanych kas nazywanych klasami wzorcowymi.

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

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

Tytuły Wykonawcze. Opis systemu tworzenia dokumentacji TW-1

Tytuły Wykonawcze. Opis systemu tworzenia dokumentacji TW-1 Tytuły Wykonawcze Opis systemu tworzenia dokumentacji TW-1 Program pozwala na tworzenie tytułów wykonawczych według Rozporządzenia Ministra Finansów z dnia 16 maja 2014 r. 1.Główne cechy systemu -ewidencja

Bardziej szczegółowo

Programowanie w językach

Programowanie w językach Programowanie w językach wysokiego poziomu Obsługa plików za pomocą strumieni Elektronika i Telekomunikacja, semestr III rok akademicki 2013/2014 dr inż. Paweł Myszkowski Plan zajęć a) otwieranie i zamykanie

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

tablica: dane_liczbowe

tablica: dane_liczbowe TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica

Bardziej szczegółowo

Projektowanie algorytmów rekurencyjnych

Projektowanie algorytmów rekurencyjnych C9 Projektowanie algorytmów rekurencyjnych wiczenie 1. Przeanalizowa działanie poniszego algorytmu dla parametru wejciowego n = 4 (rysunek 9.1): n i i

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

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia Materiały Operacje na plikach Informatyka Operacje wejścia-wyjścia w C/C++: Podejście proceduralne Podejście obiektowe Standardowe strumienie wejścia i wyjścia stdin - strumień wejściowy (klawiatura) cin

Bardziej szczegółowo

.! $ Stos jest list z trzema operacjami: dodawanie elementów na wierzch stosu, zdejmowanie elementu z wierzchu stosu, sprawdzanie czy stos jest pusty.

.! $ Stos jest list z trzema operacjami: dodawanie elementów na wierzch stosu, zdejmowanie elementu z wierzchu stosu, sprawdzanie czy stos jest pusty. !"! " #$%& '()#$$ &%$! #$ %$ &%$& &$&! %&'" )$$! *$$&%$! +,- +-.! $ Celem wiczenia jest zapoznanie studenta ze strukturami: lista, stos, drzewo oraz ich implementacja w jzyku ANSI C. Zrozumienie działania

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

Poradnik korzystania z serwisu UNET: Dostp do poczty elektronicznej ze strony WWW

Poradnik korzystania z serwisu UNET: Dostp do poczty elektronicznej ze strony WWW Poradnik korzystania z serwisu UNET: Dostp do poczty elektronicznej ze strony WWW W przypadku braku stosownego oprogramowania słucego do komunikacji z systemem pocztowym UNET uytkownik ma moliwo skorzystania

Bardziej szczegółowo