Dynamiczne zarzdzanie procesami
|
|
- Dariusz Kwiatkowski
- 7 lat temu
- Przeglądów:
Transkrypt
1 Dynamiczne zarzdzanie procesami Michał Sajkowski
2 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
3 troch historii co nowego w MPI-2: równoległe we/wy zdalne operacje na pamici dynamiczne zarzdzanie procesami 3
4 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 4
5 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 5
6 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 6
7 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) 7
8 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 8
9 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 9
10 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) 10
11 dynamiczne zarzdzanie procesami standard MPI-1 nic nie mówi o tym, jak uruchamiane s procesy start procesu wystpuje poza programem MPI, proces MPI wywołujempi_comm_size, aby si dowiedzie ile procesów uruchomiono, oraz MPI_Comm_rank, aby si dowiedzie, który to proces liczba procesów jest ustalona nie póniej ni wtedy, gdympi_init zwraca warto 11
12 dynamiczne zarzdzanie procesami uytkownicy MPI prosili MPI Forum, aby wróci do tej kwestii, z powodów: migracji uytkowników z PVM i ich przyzwyczaje przy zarzdzaniu procesami wanych klas aplikacji klient serwer i task farming jobs, wymagajcych dynamicznego zarzdzania zadaniami moliwoci pisania rodowiska oblicze równoległych w samym MPI 12
13 dynamiczne zarzdzanie procesami - agenda tworzenie nowych procesów - kontynuacja MPI_Comm_spawn komunikacja midzy grupami w interkomunikatorze, dwupunktowa (MPI-1) i kolektywna (MPI-2) łczenie dwóch programów MPI, korzystajc z przykładu programu obliczeniowego i wizualizacyjnego mieszane programowanie dyskusja procedur dynamicznego zarzdzania procesami 13
14 tworzenie nowych procesów podstawy MPI_Comm_spawn wprowadzono na poprzednim kursie przypomnijmy, e MPI_Comm_spawn tworzy interkomunikator zawierajcy jako dwie grupy procesy rozmnaajce (spawning processes) i procesy rozmnoone (spawned processes) 14
15 tworzenie nowych procesów zbadamy MPI_Comm_spawn szczegółowo, stosujc ponownie przykład mnoenia macierzy z rozdziału 3 pierwszego tomu Using MPI z 1999 roku pokazano ten program jako przykład paradygmatu master-slave zaadaptujemy go, uywajc zmiennej liczby procesów slave, o których uruchomieniu decyduje proces master 15
16 interkomunikatory dokonamy wpierw przegldu pojcia interkomunikatora interkomunikatory s mało widoczne w MPI-1, ale znaczce w MPI-2, szczególnie w zarzdzaniu procesami zwykły komunikator w MPI jest intrakomunikatorem, składa si z kontekstu i grupy procesów 16
17 interkomunikatory wyróniajc cech interkomunikatora jest to, e jest zwizany z dwoma grupami procesów, lokaln i zdaln, z punktu widzenia konkretnego procesu procesy s identyfikowane przez numer w grupie, ale komunikat nadany do procesu o danym numerze zawsze trafia do procesu w grupie zdalnej 17
18 interkomunikatory takie zachowanie si operacji dwupunktowych jest specyfikowane w MPI-1 MPI-1 nie specyfikuje zachowania operacji kolektywnych w interkomunikatorach, a MPI-2 to robi podobnie, jak w przypadku dwupunktowym, komunikacja zachodzi midzy dwoma grupami 18
19 interkomunikator na rysunku proces 0 z grupy lokalnej przesyła komunikat do procesu 1 w grupie zdalnej
20 przykład: mnoenie macierzy ten sam algorytm co w ksice Using MPI, z tym, e zamiast uruchamia wszystkie procesy poza programem, uruchamiamy jedynie proces nadrzdny master i pozwalamy mu, aby on uruchamiał procesy podległe slave za pomoc funkcji MPI_Comm_spawn 20
21 mnoenie macierzy oznacza to, e zasadnicz rónic midzy t wersj, a wersj poprzedni MPI-1, jest to, e proces master i procesy slave s oddzielnymi głównymi programami rozwamy pocztek kodu programu dla procesu master, uruchamiany poleceniem mpiexec n 1 master 21
22 mnoenie macierzy master cz.1! mnoenie macierzy z rozmnaaniem procesów slave PROGRAM main use mpi integer MAX_ROWS, MAX_COLS parameter (MAX_ROWS = 1000, MAX_COLS = 1000) double precision a(max_rows_,max_cols), b(max_cols), c(max_rows) double precision buffer(max_cols), ans integer slavecom integer ierr, status(mpi_status_size) integer i, j, numsent, sender, numslaves integer anstype, rows, cols 22
23 mnoenie macierzy master cz.1 call MPI_INIT(IERR)! master decyduje, ile procesów slave rozmnoy numslaves = 10 call MPI_COMM_SPAWN( slave, MPI_ARGV_NULL, numslaves, & MPI_INFO_NULL, 0, MPI_COMM_WORLD, &! master inicjuje i nastpnie rozsyła rows = 100 cols = 100! inicjalizuj a i b do 20 j = 1,cols b(j) = 1 do 10 i = 1,rows slavecomm, MPI_ERRCODES_IGNORE, ierr) 23
24 mnoenie macierzy master cz.1 10 continue 20 continue numsent = 0 a(i,j) = i! nadaj b do kadego procesu slave call MPI_BCAST(b, cols, MPI_DOUBLE_PRECISION, MPI_ROOT, & slavecomm, ierr) 24
25 mnoenie macierzy master cz.1 program ten mnoy macierzaprzez wektorbi pamita wynik wc równoległo wynika faktu, e iloczyn skalarny wierszy macierzy a przez wektor b odbywa si równolegle zakładamy, e jest wicej wierszy w macierzy a ni procesów, std kady proces wykonuje wiele iloczynów procesy nie pracuj z t sam szybkoci 25
26 mnoenie macierzy master cz.1 program master nadaje wiersze, jeden po drugim, do procesów slave, a kiedy proces slave zakoczy liczenie, przesyła wynik (iloczyn skalarny) do procesu master okrelamy liczb procesów slave dopiero, gdy proces master wystartuje, pokazujc działanie MPI_Comm_spawn i MPI_Bcast na interkomunikatorze nowe zmienne to interkomunikatorslavecomm, stworzony przez MPI_Comm_spawn, oraz zmienna numslaves, przechowujca liczb procesów slave 26
27 mnoenie macierzy master cz.1 program tego typu wykonuje pewien rodzaj oblicze, aby wyznaczy liczb procesów slave, które naley rozmnoy (spawn) aby to uproci, na razie zakładamy, e program decyduje aby stworzy dziesi procesów slave i ustawiamy numslaves na warto 10 procesy s tworzone funkcjmpi_comm_spawn : call MPI_COMM_SPAWN( slave, MPI_ARGV_NULL, numslaves, & MPI_INFO_NULL, 0, MPI_COMM_WORLD, & slavecomm, MPI_ERRCODES_IGNORE, ierr) 27
28 mnoenie macierzy master cz.1 call MPI_COMM_SPAWN( slave, MPI_ARGV_NULL, numslaves, & MPI_INFO_NULL, 0, MPI_COMM_WORLD, & slavecomm, MPI_ERRCODES_IGNORE, ierr) funkcja ta (w wersji Fortran) ma 9 argumentów, 6 wejciowych i 3 wyjciowe: pierwszy to plik wykonywalny, uruchamiany przez nowe procesy, drugi to tablica bdca lini polece dla pliku wykonywalnego, trzeci to liczba procesów slave, które mamy uruchomi 28
29 mnoenie macierzy master cz.1 call MPI_COMM_SPAWN( slave, MPI_ARGV_NULL, numslaves, & MPI_INFO_NULL, 0, MPI_COMM_WORLD, & slavecomm, MPI_ERRCODES_IGNORE, ierr) czwarty to informacja dodatkowa pity to process root, tutaj 0, bo jest tylko jeden proces master szósty to komunikator, na którym ta funkcja jest kolektywna, czyli MPI_COMM_WORLD 29
30 mnoenie macierzy master cz.1 call MPI_COMM_SPAWN( slave, MPI_ARGV_NULL, numslaves, & MPI_INFO_NULL, 0, MPI_COMM_WORLD, & slavecomm, MPI_ERRCODES_IGNORE, ierr) 3 argumenty wyjciowe to: siódmy to interkomunikator, tutaj slavecomm, zawierajcy proces master (w grupie lokalnej) i procesy slave (w grupie zdalnej) ósmy to wskazanie, e nie sprawdzamy pojedynczych kodów błdu dziewity to ogólny kod błdu zwracany przez funkcj, okrela czy funkcja jest sukcesem czy nie 30
31 operacje kolektywne w interkomunikatorze nastpnie proces master inicjuje macierzai wektor b i stosuje operacj kolektywn MPI_Bcast aby nadabdo procesów slave w MPI-1 było to niemoliwe, ale MPI-2 definiuje operacje kolektywne na interkomunikatorach, jak slavecomm rozgłaszanie jest realizowane przez proces root w grupie lokalnej do wszystkich procesów w grupie zdalnej, które w tym przypadku s procesami slave poniewa s dwie grupy, proces wskazuje siebie specjaln wartoci MPI_ROOT 31
32 operacje kolektywne w interkomunikatorze procesy odbierajce broadcast specyfikuj numer procesu root, tak jak by były w jednej grupie jeeli jest wicej ni jeden proces w grupie lokalnej, zawierajcej proces root, to te pozostałe procesy specyfikuj MPI_PROC_NULL jako warto root 32
33 operacje kolektywne w interkomunikatorze: rozgłaszanie 2 0 MPI_PROC_NULL 2 MPI_ROOT 2 1 MPI_PROC_NULL 2 3 MPI_PROC_NULL 2 33
34 komunikacja dwupunktowa w interkomunikatorze reszt kodu procesu master pokazano na kolejnych slajdach numery procesów s midzy0a numslaves-1, poniewa proces master je wskazuje w zdalnej grupie interkomunikatoraslavecomm, a nie jak w MPI-1 w MPI_COMM_WORLD 34
35 komunikacja dwupunktowa w interkomunikatorze proces master nadaje do wszystkich procesów slave wiersz, na którym maj działa, odbiera od nich odpowied, i przesyła do nich kolejne wiersze, a si wyczerpi nastpnie proces master nadaje komunikat z etykiet 0 do kadego procesu slave, aby wskaza, e obliczenia si skoczyły na koniec, proces master drukuje wektor c bdcy iloczynem a i b 35
36 mnoenie macierzy master cz.2! nadaj wiersz do kadego procesu slave;! etykietuj numerem wiersza do 40 i = 1,min(numslaves,rows) do 30 j = 1,cols buffer(j) = a(i,j) 30 continue call MPI_SEND(buffer, cols, MPI_DOUBLE_PRECISION, i-1, & i, slavecomm, ierr) numsent = numsent+1 40 continue 36
37 mnoenie macierzy master cz.2 do 70 i = 1,rows call MPI_RECV(ans, 1, MPI_DOUBLE_PRECISION, & sender = status(mpi_source) anstype = status(mpi_tag) c(anstype) if (numsent.lt. rows) then 50 continue do 50 j = 1,cols MPI_ANY_SOURCE, MPI_ANY_TAG, & slavecomm, status, ierr)! wiersz jest wartoci etykiety = ans! nadaj inny wiersz buffer(j) = a(numsent+1,j) call MPI_SEND(buffer, cols, MPI_DOUBLE_PRECISION, sender, & numsent+1, slavecomm, ierr) numsent = numsent+1 37
38 mnoenie macierzy master cz.2 else call MPI_SEND(buffer, 0,MPI_DOUBLE_PRECISION, sender, & 0, slavecomm, ierr) endif 70 continue! drukuj odpowied do 80 i = 1,rows print *, c( i, ) =, c(i) 80 continue call MPI_COMM_FREE(slavecomm, ierr) call MPI_FINALIZE(ierr) END PROGRAM main 38
39 proces slave kod procesu slave pokazano na kolejnych slajdach on jest bardzo podobny do czci slave w wersji dla MPI-1 now cech tutaj jest to, e po MPI_Init, procesy slave mog si porozumiewa ze sob, za pomoc ich MPI_COMM_WORLD, który zawiera wszystkie procesy rozmnoone tym samym MPI_Comm_spawn_call, ale nie z procesem master w tym przykładzie, procesy slave nie komunikuj si ze sob, komunikuj si jedynie z procesem master 39
40 proces slave aby uzyska komunikator zawierajcy proces master, procesy slave wykonuj: call MPI_COMM_GET_PARENT(parentcomm, ierr) to zwraca wparentcomm interkomunikator stworzony kolektywnym wywołaniem MPI_Comm_spawn w procesie master i MPI_Init w procesach slave lokalna grupa tego komunikatora (z punktu widzenia procesów slave), jest taka sama jak ich grupa MPI_COMM_WORLD 40
41 proces slave grupa zdalna jest zbiorem procesów, które kolektywnie wywołały MPI_Comm_spawn, która w tym przypadku zawiera jedynie proces master procesy slave wskazuj proces master jako numer 0 w parentcomm, podczas wymiany wierszy i iloczynów skalarnych kiedy procesy otrzymaj komunikat wszystko zrobione (tag=0), wtedy wywołuj MPI_Finalize i wychodz 41
42 mnoenie macierzy slave! Program slave dla mnoenia macierzy PROGRAM main use mpi integer MAX_COLS parameter (MAX_COLS = 1000) double precision b(max_cols) double precision buffer(max_cols), ans integer i, ierr, status(mpi_status_size) integer row, cols, rows, rank integer parentcom 42
43 mnoenie macierzy slave call MPI_INIT(ierr) call MPI_COMM_GET_PARENT(parentcomm, ierr)! proces master ma teraz numer 0 w zdalnej grupie! interkomunikatora rodzica.! procesy slave odbieraj b, nastpnie obliczaj! iloczyn a do odbioru komunikatu done rows = 100 cols = 100 call MPI_BCAST(b, cols, MPI_DOUBLE_PRECISION,0, & parentcomm, ierr) call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr) 43
44 mnoenie macierzy slave if (rank.ge. rows) go to 200! opu, jeeli jest wicej procesów ni prac 90 call MPI_RECV(buffer, cols, MPI_DOUBLE_PRECISION, 0, & MPI_ANY_TAG, parentcomm, status, ierr) if (status)mpi_tag).eq. 0) then go to 200 else row = status(mpi_tag) ans = 0.0 do 100 i = 1,cols ans = ans+buffer(i)*b(i) 100 continue call MPI_SEND(ans, 1, MPI_DOUBLE_PRECISION, 0, row, & parentcomm, ierr) go to 90 endif 44
45 mnoenie macierzy slave endif 200 continue call MPI_COMM_FREE(parentcomm, ierr) call MPI_FINALIZE(ierr) END PROGRAM main 45
46 znalezienie liczby dostpnych procesów MPI_UNIVERSE_SIZE daje aplikacji MPI informacje, ile procesów mona uruchomi MPI_UNIVERSE_SIZE jest atrybutem MPI_COMM_WORLD aplikacja wykorzystuje t informacj, ile dodatkowych procesów mona rozmnoy 46
47 znalezienie liczby dostpnych procesów modyfikacja czci master programu mnoenia macierzy w celu zastosowania MPI_UNIVERSE_SIZE do specyfikacji liczby dostpnych procesów wywołujemy MPI_Comm_get_attr, aby zobaczy, czy atrybut MPI_UNIVERSE_SIZE został ustawiony, jeeli tak, rozmnaamy o jeden proces slave mniej, ni jest ustawione (master te si liczy) 47
48 znalezienie liczby dostpnych procesów jeeli ten atrybut nie jest ustawiony (universe_size_flag = 0), stosujemy podejcie konserwatywne: tworzymy obiekt MPI_Info, stosujemy predefiniowany klucz soft i podajemy zakres procesów jak w argumencie soft w wywołaniu mpiexec MPI_Comm_spawn zwraca interkomunikator slavecomm, w którym zdalna grupa to rozmnoone procesy slave, rozmiar tej grupy okrela MPI_Comm_remote_size 48
49 modyfikacja programu master integer softinfo integer (kind=mpi_address_kind) universe_size logical universe_size_flag integer numslaves, i, errcodes(10) call MPI_COMM_GET_ATTR(MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, & universe_size, universe_size_flag, ierr) if (universe_size_flag) then else call MPI_COMM_SPAWN( slave, MPI_ARGV_NULL, universe_size-1, & MPI_INFO_NULL, 0, MPI_COMM_WORLD, & slavecomm, errcodes, ierr) call MPI_INFO_CREATE(softinfo, ierr) call MPI_INFO_SET(softinfo, soft, 1:10, ierr) 49
50 modyfikacja programu master call MPI_COMM_SPAWN( slave, MPI_ARGV_NULL,10, & softinfo, 0, MPI_COMM_WORLD, & slavecomm, errcodes, ierr) call MPI_INFO_FREE(softinfo, ierr) endif call MPI_COMM_REMOTE_SIZE(slavecomm, numslaves, ierr) do i=1, 10 if (errcodes(i).ne. MPI_SUCCESS) then print *, slave, i, did not start endif enddo print *, number of slaves =, numslaves 50
51 kod dostpu do wartoci MPI_UNIVERSE_SIZE z C int *universe_size_ptr, universe_size_flag;... MPI_Comm_get_attr( MPI_COMM_WORLD,MPI_UNIVERSE_SIZE, &universe_size_ptr,&universe_size_flag ); if (universe_sixe_flag) { printf( Number of processes available is %d\n, *universe_size_ptr ); } 51
52 przekazywanie argumentów do procesów rozmnaanych w dotychczasowych przykładach stosowalimympi_argv_null aby wskaza, e procesy rozmnaane s wywołane bez adnych argumentów w linii polece 52
53 przekazywanie argumentów do procesów rozmnaanych czasem przekazywanie parametrów jest uyteczne na przykład w programie kopiowania równoległego zamiast MPI_Bcast do rozsyłania nazwy pliku wyjciowego do procesów slave, mona uruchomi procesy z argumentem zawierajcym nazw pliku wyjciowego 53
54 przekazywanie argumentów do procesów rozmnaanych w przypadku gdy chcemy przekaza oddzielne argumenty w linii polece, stosujemy inn funkcj: MPI_Comm_spawn_multiple na przykład dla uruchomienia procesów stosujcych róne pliki wykonywalne 54
55 przekazywanie argumentów do procesów rozmnaanych char *slave... slave_argv[0] = argv[3] slave_argv[1] = NULL; MPI_Comm_spawn( pcp_slave, slave_argv, num_hosts,hostinfo, 0, MPI_COMM_SELF, &pcpslaves, MPI_ERRCODES_IGNORE ); 55
56 łczenie procesów MPI pewne aplikacje w sposób naturalny s stworzone z wielu oddzielnych programów jednym z przykładów jest symulacja klimatu stworzona z dwóch programów: symulacji oceanu i symulacji atmosfery innym przykładem jest aplikacja, łczca program wizualizacji z programem symulacji rozpatrzymy teraz ten przykład 56
57 łczenie procesów MPI jedn z zalet tego podejcia jest to, e wybór programu wizualizacji moe by dokonany w czasie wykonywania programu jest to odmienne od rozmnaania programu wizualizacji przez program symulacji to równie działa, gdy złoonorodowiska uruchomieniowego utrudnia start programu wizualizacji poleceniem mpiexec albo wywołaniem MPI_Comm_spawn 57
58 łczenie procesów MPI wiele dyskusji dotyczcych standardu MPI na temat łczenia procesów MPI mówi o modelu klient serwer my preferujemy spojrzenie na model MPI jak na model peer-to-peer (równorzdny, kady z kadym), gdzie jeden proces akceptuje połczenia, a drugi proces da połczenia 58
59 wizualizacja oblicze w programie MPI uruchamiajc symulacj, warto wizualizowa postpy symulacji, za pomoc grafiki trójwymiarowej, do narysowania biecego stanu rozwizania na siatce stosowanej do aproksymacji problemu jako przykład połczenia dwóch programów MPI, rozszerzamy solver Poissona, o połczenie z programem wizualizacji 59
60 wizualizacja oblicze w programie MPI modyfikacja programu Poissona polega na: program tworzy port i akceptuje połczenie na tym porcie. Port jest nazw, któr inny program moe uy do połczenia si z programem, który ten port utworzył wynikiem tego jest interkomunikator łczcy te dwa programy w kadej iteracji, solver Poissona nadaje biece rozwizanie do programu wizualizacji, stosujc operacje komunikacyjne w interkomunikatorze 60
61 wizualizacja oblicze w programie MPI pierwsza wersja zakłada, e program wizualizacji jest pojedynczym procesem jest on faktycznie do prosty w kadej iteracji, program odbiera numer iteracji, za pomoc dwupunktowej operacji interkomunikatora, i sam siatk, za pomoc MPI_Gatherv w operacji kolektywnej interkomunikatora 61
62 wizualizacja oblicze w programie MPI kod do inicjacji argumentów potrzebnych przez MPI_Gatherv stosuje MPI_Gather do odbioru danych, które kady proces w serwerze nadaje do tego programu rysowanie jest realizowane przez program DrawMesh funkcja MPI_Comm_connect ustala połczenie z innymi programami 62
63 wizualizacja oblicze w programie MPI poniewa decydujemy, aby program wizualizacji był dołczony do programu obliczeniowego, to program wizualizacji staje si klientem programu obliczeniowego argumentami wejciowymi wywołania funkcji MPI_Comm_connect s: nazwa portu, warto info, numer procesu wiodcego albo procesu root, oraz intrakomunikator 63
64 wizualizacja oblicze w programie MPI program wizualizacji aktualizuje dane przy kadej iteracji i rysuje z nich wykresy rozszerzeniem tego programu mogło by by uruchomienie tego programu w oddzielnym wtku, co pozwoliło by obraca i skalowa wykresy i współdziała z danymi 64
65 program wizualizacji #include mpi.h #define MAX_PROCS 128 #define MAX_MESH 512*512 int main( int argc, char *argv[] ) { MPI_Comm server; int it, i, nprocs,rcounts[max_procs], rdispls[max_procs]; double mesh[max_mesh]; char port_name[mpi_max_port_name]; MPI_Init( 0, 0 ); 65
66 program wizualizacji gets( port_name ); /* zakładamy tylko jeden proces w MPI_COMM_WORLD */ MPI_Comm_connect( port_name, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &server ); MPI_Comm_remote_size( server, &nprocs ); /* pobierz liczb wartoci danych z kadego procesu */ MPI_Gather( MPI_BOTTOM, 0, MPI_DATATYPE_NULL, rcounts, 1, MPI_INT, MPI_ROOT, server ); /* oblicz przesunicie siatki */ rdispls[0] = 0; for (i=0; i<nprocs-1; i++) rdispls[i+1] = rdispls[i] + rcounts[i]; 66
67 program wizualizacji } while (1) { MPI_Recv( &it, 1, MPI_INT, 0, 0, server, MPI_STATUS_IGNORE ); if (it < 0) break; MPI_Gatherv( MPI_BOTTOM, 0, MPI_DATATYPE_NULL, mesh, rcounts, rdispls, MPI_DOUBLE, MPI_ROOT, server ); DrawMesh( mesh ); } MPI_Comm_disconnect( &server ); MPI_Finalize(); return 0; 67
68 akceptacja połcze z innych programów musimy zmodyfikowa program obliczajcy aproksymacje problemu Poissona, aby akceptował połczenie z programu wizualizacji i nadawał do niego dane do wizualizacji (program obliczajcy aproksymacje jest w Fortranie, program wizualizacji jest w C) oryginalny program jest niezmieniony zmiany s dodatkiem do tego programu 68
69 akceptacja połcze z innych programów zmiany obejmuj: stworzenie portu do którego łczy si program klienta, w tym celu wywołujemy MPI_OPEN_PORT, który podaje numer portu (ten port jest czytany przez instrukcjgets w programie wizualizacji) kiedy port jest otwarty, program pozwala dołczy si do niego innemu programowi MPI przez wywołanie MPI_COMM_ACCEPT 69
70 akceptacja połcze z innych programów rodkowa cz kodu nadaje dane do procesu klienta, rozpoczynajc od informacji o dekompozycji danych w procesie obliczeniowym, kontynuujc z licznikiem iteracji i biecymi wynikami w ptli iteracji te operacje komunikacji odpowiadaj wywołaniom komunikacji w programie wizualizacji (kliencie) 70
71 akceptacja połcze z innych programów ostatnia cz programu zamyka port i odłcza si od klienta wywołujc kolejno: MPI_CLOSE_PORT i MPI_COMM_DISCONNECT ostatnie wywołanie oznacza, e zakoczyła si cała komunikacja na komunikatorze po zamkniciu portu, nazwa portu zwracana przez MPI_OPEN_PORT jest niewana 71
72 modyfikacja przykładu Poisson a modyfikacja przykładu Poisson a pozwalajca akceptowa połczenia od programu wizualizacji i nadawa dane do niego 72
73 modyfikacja przykładu Poisson a character*(mpi_max_port_name) port_name integer client... if (myid. eq. 0) then call MPI_OPEN_PORT( MPI_INFO_NULL, port_name, ierr) print *, port_name endif call MPI_COMM_ACCEPT( port_name, MPI_INFO_NULL, 0, & MPI_COMM_WORLD, client, ierr );! nadaj informacj potrzebn do nadania siatki call MPI_GATHER( mesh_size, 1, MPI_INTEGER, & MPI_BOTTOM, 0, MPI_DATATYPE_NULL, & 0, client, ierr ) 73
74 ... modyfikacja przykładu Poisson a! Dla kadej iteracji, nadaj lokaln cz siatki if (myid.eq. 0) then call MPI_SEND( it, 1, MPI_INTEGER, 0, 0, client, ierr ) endif call MPI_GATHERV( mesh, mesh_size, MPI_DOUBLE_PRECISION, & MPI_BOTTOM, 0, 0, & MPI_DATATYPE_NULL< 0, client, ierr )... 74
75 modyfikacja przykładu Poisson a! Odłcz od klienta przed wyjciem if (myid.eq. 0) then call MPI_CLOSE_PORT( port_name, ierr) endif call MPI_COMM_DISCONNECT( client, ierr) call MPI_FINALIZE( ierr ) 75
76 porównanie z gniazdami procedury MPI łczenia dwóch grup procesów odpowiadaj prostemu modelowi znanemu z gniazd Unixa podobiestwa wystpuj midzy: MPI_OPEN_PORT procedury socket, bind i listen w gniazdach MPI_COMM_ACCEPT procedura accept MPI_COMM_CONNECT procedury socket i connect 76
77 porównanie z gniazdami rónice wystpuj midzy: interfejs gniazda ustala połczenie midzy dwoma procesami, a interfejs MPI łczy dwie grupy procesów Forum MPI preferuje si uywanie wtków oraz blokujcych wersji gniazd inne cechy interfejsu gniazda, obejmujce n.p. sterowanie czasami oczekiwania, mona osign w MPI za pomoc pewnych zabiegów implementacyjnych 77
78 przesyłanie danych midzy grupami procesów jeeli dane s wielkie, program wizualizacji powinien by równoległy, np. wersja MPI programu POV-RAY nadajemy wtedy struktur danych, która jest rozdzielana w jeden sposób na jednej grupie procesów, a w inny na drugiej grupie procesów rozwamy dwie odmienne dekompozycje, gdzie procesy z lewej nadaj do procesów po prawej 78
79 przesyłanie danych midzy grupami procesów transfer danych midzy programem symulacji (4 procesy) a programem wizualizacji (3 procesy) P3 P2 P1 P P2 P1 P0 siatka w sekcji obliczeniowej siatka w sekcji wizualizacyjnej 79
80 przesyłanie danych midzy grupami procesów linie cigłe wskazuj dekompozycj siatki midzy procesy, linie przerywane wskazuj podział siatki za pomoc drugiej grupy procesów, strzałki wskazuj transfery P3 P2 P1 P P2 P1 P0 siatka w sekcji obliczeniowej siatka w sekcji wizualizacyjnej 80
81 przesyłanie danych midzy grupami procesów procedura MPI_Alltoallv jest elastyczniejsz wersj procedury MPI_Alltoall kolektywna procedura w interkomunikatorze kady proces w jednej grupie nadaje róne dane do kadego innego procesu w innej grupie u nas tak nie jest, nie kady proces nadaje do kadego, tam gdzie nie ma danych do nadania ustawiamy sendcounts = 0 81
82 przesyłanie danych midzy grupami procesów kolejny program oblicza argumenty sendcounts i sdispls dla MPI_Alltoallv, gdzie proces wywołujcy ma wiersze s do e w siatce, a dekompozycja na serwerze wizualizacji jest podany przez tablicm, gdzie m(i) jest liczb wierszy w procesie i MPI_Alltoallv jest uyteczne, gdy grafika jest na stacjach graficznych, a obliczenia na zdalnym superkomputerze 82
83 r_s = 1 displ = 0 obliczenie argumentów MPI_Alltoallv do i=0, viz_numporcs-1 if (s.ge. r_s + m(i)) then sendcounts(i) = 0 sdispls(i) = 0 elseif (e.lt. r_s) then sendcounts(i) = 0 sdispls(i) = 0 83
84 enddo else endif obliczenie argumentów MPI_Alltoallv sendcounts(i) = min( e s + 1, r_s + m(i) s) * nx sdispls(i) displ r_s = r_s + m(i) = displ = displ + sencounts(i) 84
85 publikacja nazwy portu we wczeniejszym przykładzie, zastosowano instrukcjprint aby umieci nazw portu na standardowym wyjciu, a instrukcj gets aby odczyta t nazw na standardowym wejciu jest to całkowicie ogólne, ale troch niezgrabne print *, port_name publikuje nazw portu, podobnie gets( port_name) powoduje, e klient szuka numeru portu 85
86 publikacja nazwy portu alternatyw do print i gets w MPI-2 jest usługa nazw (name service) program wybiera prywatn nazw zwan nazw usługi nazwa portu jest zwizana z nazw usługi za pomoc procedury MPI_Publish-name t asocjacj usuwa si poprzez MPI_Unpublish_name 86
87 publikacja nazwy portu proces poszukujcy danego portu przekazuje nazw usługi do MPI_Lookup_name pokaemy teraz zmiany w kodzie programu wizualizacji i symulacji aby zezwoli im na tak publikacj nazw publikacja ma pewne ograniczenia: nazw usługi wybiera programista, std dwóch moe wybra t sam nazw usługi w dwóch rónych aplikacjach, rozwizaniem moe by zcentralizowana rejestracja nazw albo dodanie do nazwy usługi unikalnego identyfikatora uytkownika 87
88 publikacja nazwy portu w programie wizualizacji: MPI_Lookup_name( Poisson, MPI_INFO_NULL, port_name ); MPI_Comm_connect( port_name, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &server); 88
89 publikacja nazwy portu w programie symulacji (przykład Poissona): character*(mpi_max_port_name) port_name integer client... if (myid.eq. 0) then endif call MPI_OPEN_PORT( MPI_INFO_NULL, port_name, ierr ) call MPI_PUBLISH_NAME( Poisson, MPI_INFO_NULL, & port_name, ierr ) call MPI_COMM_ACCEPT( port_name, MPI_INFO_NULL, 0, & MPI_COMM_WORLD, client, ierr ); 89
90 publikacja nazwy portu w programie symulacji (przykład Poissona):... if (myid.eq. 0) then call MPI_UNPUBLISH_NAME( Poisson, MPI_INFO_NULL, & port_name, ierr ) call MPI_CLOSE_PORT( port_name, ierr ) 90
91 cele dynamicznego zarzdzania procesami przenono (aplikacje uruchamiane dla rónych systemów szeregowanie zada i zarzdzanie procesami, jeden proces na wzeł, zbiór procesów niezmienny, zmiana wymaga operacji kolektywnych) determinizm (zbiór procesów niezmienny) skalowalno i efektywno (operacje kolektywne) 91
92 czego MPI nie standaryzuje? pewne cechy zalene od implementacji MPI nie standaryzuje si: zarzdcy zadaniami interfejsu uruchomienia procesu 92
93 podsumowanie omówilimy tutaj podstawowe kwestie dotyczce dynamicznego zarzdzania procesami oczywicie temat stosowania MPI-2 nie został w pełni wyczerpany oddzielnego potraktowania wymaga stosowanie MPI z wtkami 93
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ółowoProgramowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1
Programowanie w modelu przesyłania komunikatów specyfikacja MPI Krzysztof Banaś Obliczenia równoległe 1 Model przesyłania komunikatów Paradygmat send receive wysyłanie komunikatu: send( cel, identyfikator_komunikatu,
Bardziej szczegółowoRozszerzenia MPI-2 1
Rozszerzenia MPI-2 1 2 Dynamiczne tworzenie procesów Aplikacja MPI 1 jest statyczna z natury Liczba procesów określana jest przy starcie aplikacji i się nie zmienia. Gwarantuje to szybką komunikację procesów.
Bardziej szczegółowoPOZNA 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ółowoProgramowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1
Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1 Środowisko przesyłania komunikatów MPI Rodzaje procedur: blokujące nieblokujące Tryby przesyłania
Bardziej szczegółowoProgramowanie 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ółowoProgramowanie współbieżne... (5)
Programowanie współbieżne... (5) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html 6 FUNKCJI Proste programy MPI można pisać używając tylko 6 funkcji Programowanie współbieżne...
Bardziej szczegółowoProgramowanie Równoległe Wykład 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ółowoOperacje grupowego przesyłania komunikatów. Krzysztof Banaś Obliczenia równoległe 1
Operacje grupowego przesyłania komunikatów Krzysztof Banaś Obliczenia równoległe 1 Operacje grupowego przesyłania komunikatów Operacje, w ramach których ten sam komunikat lub zbiór komunikatów przesyłany
Bardziej szczegółowoProgramowanie 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ółowoBash i algorytmy. Elwira Wachowicz. 20 lutego
Bash i algorytmy Elwira Wachowicz elwira@ifd.uni.wroc.pl 20 lutego 2012 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Bash i algorytmy 20 lutego 2012 1 / 16 Inne przydatne polecenia Polecenie Dziaªanie Przykªad
Bardziej szczegółowoSposoby 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ółowo61 Topologie wirtualne
61 Topologie wirtualne pozwalają opisać dystrybucję procesów w przestrzeni z uwzględnieniem struktury komunikowania się procesów aplikacji między sobą, umożliwiają łatwą odpowiedź na pytanie: kto jest
Bardziej szczegółowoTworzenie 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ółowoProgramowanie Równoległe Wykład 5. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład 5 MPI - Message Passing Interface Maciej Matyka Instytut Fizyki Teoretycznej Dorobiliśmy się strony WWW www.ift.uni.wroc.pl/~koma/pr/index.html MPI, wykład 2. Plan: - komunikacja
Bardziej szczegółowo... 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ółowoOperacje grupowego przesyłania komunikatów
Operacje grupowego przesyłania komunikatów 1 Operacje grupowego przesyłania komunikatów Operacje, w ramach których ten sam komunikat lub zbiór komunikatów przesyłany jest pomiędzy więcej niż dwoma procesami
Bardziej szczegółowoBiblioteki 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ółowoTryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla
Tryby komunikacji między procesami w standardzie Message Passing Interface Piotr Stasiak 171011 Krzysztof Materla 171065 Wstęp MPI to standard przesyłania wiadomości (komunikatów) pomiędzy procesami programów
Bardziej szczegółowo3. Instalator rozpocznie proces instalacji
Uwaga! Podana instrukcja instalacji została przygotowana w oparciu o pliki instalacyjne SQL 2005 Express pobrany ze strony Microsoftu oraz oddzielny plik Service Pack 2 dedykowany pod SQL Express równie
Bardziej szczegółowoSpis 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ółowoWYKŁ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ółowoModele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak dla PR PP
Modele programowania równoległego Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak dla PR PP MPP - Cechy charakterystyczne 1 Prywatna, wyłączna przestrzeń adresowa.
Bardziej szczegółowoobsł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ółowoRPC. 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ółowoInstrukcja 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ółowoProblem 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ółowoModele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak
Modele programowania równoległego Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak MPP - Cechy charakterystyczne 1 Prywatna - wyłączna przestrzeń adresowa. Równoległość
Bardziej szczegółowoTworzenie aplikacji rozproszonej w Sun RPC
Tworzenie aplikacji rozproszonej w Sun RPC Budowa aplikacji realizowana jest w następujących krokach: Tworzenie interfejsu serwera w języku opisu interfejsu RPCGEN Tworzenie: namiastki serwera namiastki
Bardziej szczegółowoProces 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ółowoWprowadzenie 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Ł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ółowoProgramowanie współbieżne... (6)
Programowanie współbieżne... (6) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html Powtórzenie. Proste operacje MPI MPI_send, MPI_recv,...! Programowanie współbieżne... 2 Send-receive
Bardziej szczegółowoZdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1
Zdalne wywołanie procedur Krzysztof Banaś Systemy rozproszone 1 RPC Komunikacja za pomocą gniazd jest wydajna, gdyż korzystamy z funkcji systemowych niewygodna, gdyż musimy wyrażać ją za pomocą jawnego
Bardziej szczegółowoArchitektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1
Architektury systemów rozproszonych LABORATORIUM Ćwiczenie 1 Temat: Aplikacja klient-serwer - implementacja w środowisku QT Creator. Przykładowy projekt aplikacji typu klient - serwer został udostępniony
Bardziej szczegółowoBazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)
Plan wykładu Bazy danych Wykład 2: Diagramy zwizków encji (ERD) Diagramy zwizków encji elementy ERD licznoci zwizków podklasy klucze zbiory słabych encji Małgorzata Krtowska Katedra Oprogramowania e-mail:
Bardziej szczegółowo15. Funkcje i procedury składowane PL/SQL
15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp
Bardziej szczegółowoProgramowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1
Programowanie w modelu przesyłania komunikatów specyfikacja MPI Krzysztof Banaś Obliczenia równoległe 1 Środowisko przesyłania komunikatów MPI Rodzaje procedur: blokujące nieblokujące Tryby przesyłania
Bardziej szczegółowoBazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)
Plan wykładu Bazy danych Wykład 2: Diagramy zwizków encji (ERD) Diagramy zwizków encji elementy ERD licznoci zwizków podklasy klucze zbiory słabych encji Małgorzata Krtowska Katedra Oprogramowania e-mail:
Bardziej szczegółowoProgramowanie 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ółowoPodstawy 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ółowoPROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec
PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych
Bardziej szczegółowoProjektowanie bezpiecze stwa sieci
Laboratorium 5. Projektowanie bezpieczestwa sieci Temat: Instalacja i konfiguracja serwera VPN. 1. Przed instalacj odpowiednich ról serwera, na maszynie wirtualnej serwera musimy przygotowa dwie karty
Bardziej szczegółowo1. 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ółowoKlient-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ółowoKlonowanie 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ółowoPodstawy 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ółowoProgramowanie współbieżne i rozproszone
Programowanie współbieżne i rozproszone WYKŁAD 2 Jan Kazimirski 1 MPI 1/2 2 Dlaczego klastry komputerowe? Wzrost mocy obliczeniowej jednego jest coraz trudniejszy do uzyskania. Koszt dodatkowej mocy obliczeniowej
Bardziej szczegółowoUkłady VLSI Bramki 1.0
Spis treści: 1. Wstęp... 2 2. Opis edytora schematów... 2 2.1 Dodawanie bramek do schematu:... 3 2.2 Łączenie bramek... 3 2.3 Usuwanie bramek... 3 2.4 Usuwanie pojedynczych połączeń... 4 2.5 Dodawanie
Bardziej szczegółowoInstytut Teleinformatyki
Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska programowanie usług sieciowych Dziedzina Unix laboratorium: 06 Kraków, 2014 06. Programowanie Usług Sieciowych
Bardziej szczegółowoZdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1
Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int
Bardziej szczegółowoPOZNA SUPERCOMPUTING AND NETWORKING. Wprowadzenie do MPI
Wprowadzenie do MPI literatura W. Gropp, E. Lusk, An Introduction to MPI, ANL P.S. Pacheco, A User s Guide to MPI, 1998 Ian Foster, Designing and Building Parallel Programs, Addison-Wesley 1995, http://www-unix.mcs.anl.gov/dbpp/
Bardziej szczegółowoZdalne 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ółowoZdalne 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ółowo1. 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ółowoTworzenie 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ółowoProgramowanie - wykład 4
Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include
Bardziej szczegółowoTworzenie 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ółowowykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis
i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje
Bardziej szczegółowoProgramowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz
Programowanie równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 23 października 2009 Spis treści Przedmowa...................................................
Bardziej szczegółowoPODSTAWY INFORMATYKI 1 PRACOWNIA NR 6
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6 TEMAT: Programowanie w języku C/C++: instrukcje iteracyjne for, while, do while Ogólna postać instrukcji for for (wyr1; wyr2; wyr3) Instrukcja for twory pętlę działającą
Bardziej szczegółowoznajdował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ółowoAlgorytmy i Struktury Danych
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 12: Wstęp
Bardziej szczegółowoWstp. 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ółowoBazy 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ółowoSUPLEMENT 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ółowoProgramowanie wspóªbie»ne
1 Zadanie 1: Bar Programowanie wspóªbie»ne wiczenia 6 monitory cz. 2 Napisz monitor Bar synchronizuj cy prac barmana obsªuguj cego klientów przy kolistym barze z N stoªkami. Ka»dy klient realizuje nast
Bardziej szczegółowoTworzenie 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ółowoPodstawy 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ółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoZdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1
Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij proces (int pid){ int stat; stat = kill(pid,
Bardziej szczegółowoPrzegldanie stron wymaga odpowiedniej mikroprzegldarki w urzdzeniu mobilnym lub stosownego emulatora.
I. Temat wiczenia Podstawy tworzenia stron WAP II. Wymagania Podstawowe wiadomoci z technologii Internetowych. III. wiczenie 1. Wprowadzenie WAP (ang. Wireless Application Protocol) - to protokół umoliwiajcy
Bardziej szczegółowoMessage Passing Interface
Message Passing Interface Interfejs programowania definiujący powiązania z językami C, C++, Fortran Standaryzacja (de facto) i rozszerzenie wcześniejszych rozwiązań dla programowania z przesyłaniem komunikatów
Bardziej szczegółowoZdalne wywoływanie procedur RPC 27. października 2010
Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_ proces (int pid){ int stat; stat
Bardziej szczegółowoInstalacja programu Sprzeda
Instalacja programu Sprzeda 1. Aby zainstalowa program Sprzeda w wersji 2.10, na serwerze lub komputerze, na którym przechowywane bd dane programu, pozamykaj wszystkie działajce programy i uruchom plik
Bardziej szczegółowo1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca
Bardziej szczegółowoWska¹niki, tablice dynamiczne wielowymiarowe
Rozdziaª 11 Wska¹niki, tablice dynamiczne wielowymiarowe 11.1 Wst p Identycznie, jak w przypadku tablic statycznych, tablica dynamiczna mo»e by tablic jedno-, dwu-, trójitd. wymiarow. Tablica dynamiczna
Bardziej szczegółowoMetody Metody, parametry, zwracanie wartości
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca
Bardziej szczegółowoStruktury. Przykład W8_1
Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla
Bardziej szczegółowoSystem midzybankowej informacji gospodarczej Dokumenty Zastrzeone MIG DZ ver. 2.0. Aplikacja WWW ver. 2.1 Instrukcja Obsługi
System midzybankowej informacji gospodarczej Dokumenty Zastrzeone MIG DZ ver. 2.0. Aplikacja WWW ver. 2.1 Instrukcja Obsługi 1.Wymagania techniczne 1.1. Wymagania sprztowe - minimalne : komputer PC Intel
Bardziej szczegółowoPlanowanie 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ółowoStudium przypadku Case Study CCNA2-ROUTING
Na podstawie oryginału CISCO, przygotował: mgr in. Jarosław Szybiski Studium przypadku Case Study CCNA2-ROUTING Ogólne załoenia dla projektu Przegld i cele Podczas tego wiczenia uczestnicy wykonaj zadanie
Bardziej szczegółowoProgramowanie 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ółowoPOZNA SUPERCOMPUTING AND NETWORKING. Rozszerzenia standardu MPI: MPI-2
Rozszerzenia standardu MPI: MPI-2 literatura wykład opracowany na podstawie: W. Gropp, E. Lusk, R. Thakur, Using MPI-2, The MIT Press 1999 R. Thakur, Introduction to parallel I/O and MPI-IO, ANL 2 agenda
Bardziej szczegółowoW2 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ółowoBazy danych. Plan wykładu. Podzapytania - wskazówki. Podzapytania po FROM. Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych.
Plan wykładu azy danych Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych. Dokoczenie SQL Zalenoci wielowartociowe zwarta posta normalna Dekompozycja do 4NF Przykład sprowadzanie do
Bardziej szczegółowoAutorzy: Kraków, stycze 2007 Łukasz Dziewanowski Filip Haftek (studenci AGH III roku kierunku Automatyka i Robotyka)
Autorzy: Kraków, stycze 2007 Łukasz Dziewanowski Filip Haftek (studenci AGH III roku kierunku Automatyka i Robotyka) PROGRAM DO OBSŁUGI TELEFONU KOMÓRKOWEGO I. Instalacja: MOLIWOCI POŁCZENIA TELEFONU Z
Bardziej szczegółowoInstalacja programu Sprzeda z motorem. bazy danych Pervasive V8
Instalacja programu Sprzeda z motorem bazy danych Pervasive V8 1. Z katalogu instalacyjnego programu Pervasive uruchom plik setup.exe. Program instalacyjny w spakowanej wersji jest dostpny na naszym FTP
Bardziej szczegółowoWątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego
Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować
Bardziej szczegółowoProjektowanie 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ółowoInstrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal
Instrukcja wyboru, pętle 2 wykład. Podstawy programowania - Paskal Tematy Instrukcja wyboru jeden z wielu wariantów: case Pętle while repeat for Instrukcje sterowania pętli break continue goto Instrukcja
Bardziej szczegółowoAplikacja 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ółowoOptymalizacja komunikacji w systemach rozproszonych i równoległych
Optymalizacja komunikacji w systemach rozproszonych i równoległych Szkolenie PCSS, 16.12.2001 literatura W. Gropp, E. Lusk, An Introduction to MPI, ANL P.S. Pacheco, A User s Guide to MPI, 1998 Ian Foster,
Bardziej szczegółowoInstrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia
Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia 1 Cel laboratoriów: Specyfikacja wymagań, zdefiniowanych w ramach laboratorium 2 (wg instrukcji 2),
Bardziej szczegółowoTemat: Technika zachłanna. Przykłady zastosowania. Własno wyboru zachłannego i optymalnej podstruktury.
Temat: Technika zachłanna. Przykłady zastosowania. Własno wyboru zachłannego i optymalnej podstruktury. Algorytm zachłanny ( ang. greedy algorithm) wykonuje zawsze działanie, które wydaje si w danej chwili
Bardziej szczegółowoJęzyk ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Bardziej szczegółowoTemat: 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ółowoWYKŁAD 4 PLAN WYKŁADU. Sieci neuronowe: Algorytmy uczenia & Dalsze zastosowania. Metody uczenia sieci: Zastosowania
WYKŁAD 4 Sieci neuronowe: Algorytmy uczenia & Dalsze zastosowania PLAN WYKŁADU Metody uczenia sieci: Uczenie perceptronu Propagacja wsteczna Zastosowania Sterowanie (powtórzenie) Kompresja obrazu Rozpoznawanie
Bardziej szczegółowoTworzenie bazy danych Biblioteka tworzenie tabel i powiza, manipulowanie danymi. Zadania do wykonani przed przystpieniem do pracy:
wiczenie 2 Tworzenie bazy danych Biblioteka tworzenie tabel i powiza, manipulowanie danymi. Cel wiczenia: Zapoznanie si ze sposobami konstruowania tabel, powiza pomidzy tabelami oraz metodami manipulowania
Bardziej szczegółowo