Weryfikacja oprogramowania, korzystajacego z MPI
|
|
- Bogna Lisowska
- 6 lat temu
- Przeglądów:
Transkrypt
1 Weryfikacja oprogramowania, korzystajacego z MPI Krzysztof Nozderko kn201076@students.mimuw.edu.pl 23 maja 2005
2 Wprowadzenie Równoległe obliczenia olbiczenia naukowców sa często bardzo kosztowne obliczeniowo oprogramowanie naukowe często korzysta ze współbieżności obliczenia sa dzielone między różne komputery komunikacja między współbieżnymi procesami poprzez interfejs MPI (Message Passing Interface)
3 Przykładowy program naukowy Diffusion2d program wylicza funkcję u : X Y Z dziedzina funkcji u jest dyskretna, dwuwymiarowa funkcja u ewoluuje - wartości funkcji zmieniaja się w kolejnych krokach zmiany te sa opisane przez jakieś równania obliczone wartości funkcji sa okresowo zapisywane
4 Message-Passing Interface MPI - co to jest? standard, definujacy składnię i semantykę dla biblioteki funkcji, wykorzystywanych do komunikacji między współbieżnymi procesami poczatki w latach 90-tych pierwsze biblioteki dla programów w C i Fortranie obecnie dostępne różne open-source owe implementacje wysokiej jakości rzeczywisty standard dla równoległego oprogamowania naukowego
5 MPI - podstawy jest wiele autonomicznych programów, każdy wykonuje swój własny kod komunikacja między nimi poprzez wywołanie funkcji MPI standard zawiera 140 funkcji, my omówimy kilka najprostszych wykorzystywanych przez Diffusion2d Pojęcia komunikator (communicator) - opisuje zbiór procesów, które moga się ze soba komunikować jeśli komunikator zawiera n procesów numeruje je sobie od 0 do n - 1 MPI COMM WORLD - predefinowany komunikator zawierajacy wszystkie procesy rank (rank) - identyfikator procesu w obrębie komunikatora
6 Wysyłanie i odbieranie MPI SEND(buf, count, datatype, dest, tag, comm) MPI RECV(buf, count, datatype, source, tag, comm, status) buf tablica z danymi do wysłania / gdzie otrzymane dane będa skopiowane count ile danych chcę wysłać / co najwyżej ile danych mogę otrzymać datatype typ danych które wysyłam / dostaję dest rank procesu do którego wysyłam source rank procesu od którego odbieram tag by można było rozróżniać wiadomości (id wiadomości) comm komunikator status parametr wyjściowy, zawiera informacje o otrzymanej wiadomości W przypadku odbierania wiadomości source i tag moga być odpowiednio MPI ANY SOURCE i MPI ANY TAG
7 Komunikacja MPI dostarcza różnych funkcji do przesyłania komunikatów synchronicznie i asynchronicznie, w różnych trybach komunikaty wysyłane przez jeden proces do drugiego procesu odbierane sa w prawidłowej kolejności komunikaty wysłane przez różne procesy do tego samego odbiorcy moga być odebrane w dowolnej kolejności Jednoczesne wysłanie i odebranie wiadomości MPI SENDRECV(sendbuf, sendcount, sendtype, dest, sendtag, recvbuf, recvcount, recvtype, source, recvtag, comm, status) (proces rozdziela się na 2 niezależne watki) Synchronizacja wszystkich procesów z komunikatora MPI BARRIER(comm)
8 Diffusion2d - sieć procesów procesy zorganizowane sa w prostokatn a, cykliczna sieć M N dziedzina funkcji jest podzielona na kawałki (rozmiaru nxl nyl) każdy proces ma jeden swój kawałek dziedziny, za która jest odpowiedzialny wartość funkcji zależy od poprzednich wartości sasiaduj acych z nim pól każdy proces posiada ghost-cells kopię (wzięta od sasiadów) wartości funkcji u dla argumentów przyległych do jego kawałka dziedziny; z pewna częstotliwościa wyniki obliczeń musza być zasejwowane globalnie wiersz po wierszu
9 Geometria sieci
10 Diffusion2d deklaracja zmiennych /* wymiary sieci, czestotliwosc zapisu, ilosc iteracji */ int nprocsx, nprocsy, nxl, nyl, nprint, nsteps; /* id procesu, jego rzutowanie na wspolrzedne */ int myproc, mycoord0, mycoord1; /* identyfikatory sasiadow */ int uppernabe, lowernabe, leftnabe, rightnabe; int[,] u; /* funkcja u */ /* bufory do komunikacji*/ int[] send_buf, recv_buf, buf;
11 Diffusion2d main() [1/3] void main() { int iter = 0; //read nprocsx, nprocsy, nxl, nyl, nprint, nsteps MPI_Init(); myproc = MPI_Comm_Rank(); mycoord0 = myproc % nprocsx; mycoord1 = myproc / nprocsx;
12 Diffusion2d main() [2/3] uppernabe = mycoord0 + nprocsx*((mycoord1 + 1)%nprocsy); lowernabe = mycoord0 + nprocsx* ((mycoord1 + nprocsy - 1)%nprocsy); leftnabe = (mycoord0 + nprocsx - 1)%nprocsx + nprocsx*mycoord1; rightnabe = (mycoord0 + 1)%nprocsx + nprocsx*mycoord1; send_buf = new int[nxl]; recv_buf = new int[nxl]; buf = new int[nxl]; u = new int[nxl+2, nyl+2];
13 Diffusion2d main() [3/3] setinitialvalues(); exchangeghostcells(); MPI_Barrier(); for (iter = 1; iter <= nsteps; ++iter) { update(u); exchangeghostcells(); if ((iter % nprint) == 0) grid_write(); } MPI_Barrier(); MPI_Finalize(); } /* koniec main-a*/
14 Diffusion2d exchangeghostcells() void exchangeghostcells() { for(int i = 1;i <= nxl; ++i) send_buf[i-1] = u[i,1]; MPI_Sendrecv(send_buf,lowerNabe, recv_buf,uppernabe); for(int i = 1;i <= nxl; ++i)u[i,nyl+1] = recv_buf[i-1]; for(int i = 1; i <= nxl; ++i) send_buf[i-1] = u[i,nyl]; MPI_Sendrecv(send_buf, uppernabe, recv_buf, lowernabe); for(int i = 1;i <= nxl; ++i) u[i,0] = recv_buf[i-1]; for(int j = 1;j <= nyl; ++j) send_buf[j-1] = u[1,j]; MPI_Sendrecv(send_buf, leftnabe, recv_buf, rightnabe); for(int j = 1; j <= nyl; ++j)u[nxl+1,j]=recv_buf[j-1]; for(int j = 1; j <= nyl; ++j) send_buf[j-1] = u[nxl,j]; MPI_Sendrecv(send_buf, rightnabe, recv_buf, leftnabe); for(int j = 1; j <= nyl; ++j) u[0,j] = recv_buf[j-1]; }
15 Diffusion2d grid write() void grid_write() { if (myproc!= 0) { for (int n = 0; n < nprocsy; ++n) if (mycoord1 == n) for (int j = 1; j <= nyl; ++j) for (m = 0; m < nprocsx; ++m) if (mycoord0 == m) MPI_Send(u[1..nxl,j],0); } else { for (n = 0; n < nprocsy; ++n) for (int j = 1; j <= nyl; ++j) for (int m = 0; m < nprocsx; ++m) { int from_proc = m + nprocsx*n; if (from_proc!= 0) MPI_Recv(buf, from_proc); else for(int i = 0; i < nxl; ++i) buf[i]=u[i+1,j]; disk_write(buf); } } MPI_Barrier(); }
16 Własności DeadlockFree - program nigdy się nie zablokuje GlobalLockstep - proces może zaczać n-ty krok, dopiero gdy wszystkie pozostałe procesy oblicza już wartości funkcji w (n - 1) szym kroku LocalLockstep - proces może zaczać n-ty krok, dopiero gdy jego wszyscy sasiedzi oblicza już wartość funkcji w (n - 1) szym kroku Dla poprawności programu wystarczy by zachodziły DeadlockFree i LocalLockstep.
17 Pytania Q1: czy można usunać z kodu instrukcje MPI Barier? Q2: czy zapisy na dysk sa niezależne od przeplotu instrukcji oraz od sposobu buforowania komunikatów przez implementację MPI?
18 Przesyłanie komunikatów Modelowanie komunikacji użyjemy chan i j dla wysyłania wiadomości od procesu i-tego do j-tego ograniczymy wielkość kanału przez chan size Uzasadnienie program nie korzysta ze wszystkich możliwości MPI takich jak np. MPI ANY SOURCE i MPI ANY TAG MPI nie narzuca ograniczenia na wielkość buforów komunikacyjnych, ale w pewnych przypadkach możemy uzasadnić konkretny wybór chan size
19 Modelowanie komunikacji Modele komunikacji prosty gdy chan size = 0 złożony gdy chan size > 0 Prosty model komunikacyjny: /* chan_size = 0 */ inline MPI_Send(schan, msg) { schan!msg } inline MPI_Recv(rchan, rbuf) { rchan?rbuf }
20 Modelowanie komunikacji asynchronicznej w SPIN-ie kanały przechowuja wiadomości w kolejce FIFO standard MPI pozwala swym implentacjom w dowolnej chwili zsynchronizować komunikujace się strony Rozwiazanie MPI_Recv pozostawiamy więc bez zmian w MPI_Send dodajemy instrukcję, która może zablokować proces, aż kanał będzie pusty inline MPI_Send(schan, msg) { /* chan_size > 0 */ schan!msg; if :: 1 -> empty(schan) :: 1 fi }
21 Modelowanie jednoczesnego wysyłania i odbierania chan size > 0 inline MPI_Sendrecv(schan, msg, rchan, rbuf) { if :: schan!msg -> rchan?rbuf :: rchan?rbuf -> schan!msg fi; if :: 1 -> empty(schan) :: 1 fi } chan size = 0 trzeba dodać obsługę przypadku wysyłania do siebie samego inline MPI_Sendrecv(schan, msg, rchan, rbuf) { if :: (schan == rchan) -> rbuf = msg :: else -> if :: schan!msg -> rchan?rbuf :: rchan?rbuf -> schan!msg fi fi }
22 Modelowanie synchronizacji MPI BARRIER wprowadzamy dodatkowy proces i dodatkowy kanal synchroniczny zwykłe proces, by wejść wysyła kanałem 0, by wyjść wysyła 1 dodatkowy proces zbiera od zwykłych uczestników zera, a potem jedynki chan barrier_chan = [0] of {bit}; inline MPI_Barrier() { barrier_chan!0; barrier_chan!1 } active prototype Barrier() { end_b: do :: barrier_chan?0;...; barrier_chan?0; barrier_chan?1;...; barrier_chan?1 od } Etykieta end b - gdy pozostałe procesy się zakończa, SPIN nie uzna, że barrier się zablokował.
23 Modelowanie Diffusion2d nie będziemy modelować danych obliczanych przez program przesłanie wiadomości modelujemy jako wysłanie odpowiednim kanałem bitu 1 będzie nas interesować tylko ile komunikatów zalega w konkretnym kanale
24 Modelowanie własności SPIN ma wbudowana funkcjonalność sprawdzania deadlock-u pozostaje jeszcze wymodelować własności lockstep
25 Lockstep far(i, j) predykat prawdziwy, gdy proces i chce wykonać update(u), a proces i-ty wyprzedza j-ty o więcej niż jeden krok dodajemy etykietę Calculate przed wywyłaniem update(u) wprowadzamy zmienne globalne iter_i, iter_j dodajemy #define far_i_j (proc_i@calculate && (iter_i - iter_j > 1))
26 Lockstep Lockstep(i, j) żadanie by far(i, j) było zawsze fałszywe dodajemy never claim: <>far_i_j GlobalLockstep = Lockstep(i, j) i j LocalLockstep = Lockstep(i, j) i j sasiedzi
27 Inne podejście do Lockstep calc(i, n) predykat prawdziwy, gdy proces i chce wykonać update(u), a wrtościa zmiennej iter_i jest n #define calc_i_n (proc_i@calculate && (iter_i == n)) Lockstep(i, j; n) - calc(i, n) jest poprzedzone przez calc(j, n - 1) never claim: (!calc(j, n - 1)) U calc(i, n) Lockstep(i, j) = n Lockstep(i, j; n)
28 Używamy SPIN-a Opcje SPIN-a: -DSAFETY wszystkie własności dotycza bezpieczeństwa -DNOFAIR uczciwość nie jest potrzebna -DCOLLAPSE dla lepszej kompresji Przyjmujemy domyślnie nxl = nyl = 1 nprint = nsteps = 2
29 Wyniki weryfikacji DeadlockFree zachodzi szybko może zabraknać pamięci - już przy konfiguracji 4 4, nawet gdy chan size = 0 (przy dostępnych 3GB) bariery 4 3, chan size = 0 (na procesorze 2.2GHz) z barierami stanów, 153MB, 3 minuty bez barier stanów, 60MB, troszkę ponad minutę prosta/złożona komunkacja dla 4 2, bez barier chan size = stanów chan size = stanów
30 Wyniki weryfikacji LocalLockstep zachodzi nie zależy od modelu komunikacji
31 Wyniki weryfikacji GlobalLockstep nie zachodzi! nprocsx 4 lub nprocsy 4 chan size 1 nsteps 2 Przy takich warunkach, pewien proces może rozpoczać obliczanie u 2 podczas, gdy niektóre nie obliczyły jeszcze u 1.
32 Kontrprzykład dla GlobalLockstep, dla 4 1
33 Kontrprzykład dla GlobalLockstep, dla 4 1
34 Kontrprzykład dla GlobalLockstep, dla 4 1
35 Kontrprzykład dla GlobalLockstep, dla 4 1
36 Kontrprzykład dla GlobalLockstep, dla 4 1
37 Kontrprzykład dla GlobalLockstep, dla 4 1
38 Kontrprzykład dla GlobalLockstep, dla 4 1
39 Wnioski z rozważań teoretycznych wystarczy więc sprawdzać deadlock-free dla chan size = 0 możemy więc usunać bariery - nie wpływa to na bycie deadlock-free zapisy na dysk sa poprawne
40 Literatura Stephen F. Siegel, George S. Avrunin Verification of MPI-Based Software for Scientific Computation siegel/projects Message-Passing Interface Standard 2.0
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
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,
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
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
Jak wygląda praca na klastrze
Jak wygląda praca na klastrze Upraszczając nieco sprawę można powiedzieć, że klaster to dużo niezależnych komputerów (jednostek) połączonych mniej lub bardziej sprawną siecią. Często poszczególne jednostki
Modele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak
Modele programowania równoległego Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak MPP - Cechy charakterystyczne 1 Prywatna - wyłączna przestrzeń adresowa. Równoległość
Modele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak dla PR PP
Modele programowania równoległego Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak dla PR PP MPP - Cechy charakterystyczne 1 Prywatna, wyłączna przestrzeń adresowa.
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...
Programowanie w standardzie MPI
Programowanie w standardzie MPI 1 2 Podstawy programowania z przesyłaniem komunikatów Model systemu równoległego w postaci p procesów, każdy z nich z własną przestrzenią adresową, nie współdzieloną z innymi
51. Metody komunikacji nieblokującej.
51. Metody komunikacji nieblokującej. Funkcje nieblokujace różnia sie od wersji blokujacych przedrostkiem I (immediate) w nazwie oraz jednym dodatkowym argumentem: request, który jest używany do sprawdzenia,
Aplikacja Sieciowa wątki po stronie klienta
Aplikacja Sieciowa wątki po stronie klienta Na ostatnich zajęciach zajmowaliśmy się komunikacją pomiędzy klientem a serwerem. Wynikiem naszej pracy był program klienta, który za pomocą serwera mógł się
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
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
5. Model komunikujących się procesów, komunikaty
Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć
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
Architektura sieci połączeń między procesorami, sterowanie komunikacjami, biblioteki komunikacyjne
Wykład 4 Architektura sieci połączeń między procesorami, sterowanie komunikacjami, biblioteki komunikacyjne Spis treści: 1. Statyczne sieci połączeń w systemach równoległych 2. Dynamiczne sieci połączeń
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
Przykład MPI: zbiór Mandelbrota
Przykład MPI: zbiór Mandelbrota 1 Zbiór Mandelbrota Zbiór punktów na płaszczyźnie zespolonej, które są quasi-stabilne, kiedy są iterowane funkcją: z k 1 = z k 2 c gdzie z k+1 wartość zespolona w k+1 iteracji,
Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012
Projektowanie algorytmów równoległych Zbigniew Koza Wrocław 2012 Spis reści Zadniowo-kanałowy (task-channel) model algorytmów równoległych Projektowanie algorytmów równoległych metodą PACM Task-channel
Programowanie Równoległe Wykład 5. MPI - Message Passing Interface (część 3) Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład 5 MPI - Message Passing Interface (część 3) Maciej Matyka Instytut Fizyki Teoretycznej MPI, wykład 3. Plan: - wirtualne topologie - badanie skalowanie czasu rozwiązania
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
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ć
Miary Wydajności. Efektywność programu równoległego (E) jest definiowana jako stosunek przyśpieszenia do liczby procesorów
Miary Wydajności Czas wykonania równoległego (Tpar) jest czasem pomiędzy momentem rozpoczęcia obliczeń do momentu gdy ostatni procesor zakończy obliczenia Przyspieszenie (S) jest definiowane jako stosunek
Równoległość i współbieżność
Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna
Równoległość i współbieżność
Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna
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
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
Programowanie Współbieżne
Programowanie Współbieżne MPI ( główne źródło http://pl.wikipedia.org/wiki/mpi) 1 Historia Początkowo (lata 80) różne środowiska przesyłania komunikatów dla potrzeb programowania równoległego. Niektóre
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
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
Ćwiczenie 1. Kolejki IBM Message Queue (MQ)
Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając
Klient-Serwer Komunikacja przy pomocy gniazd
II Klient-Serwer Komunikacja przy pomocy gniazd Gniazda pozwalają na efektywną wymianę danych pomiędzy procesami w systemie rozproszonym. Proces klienta Proces serwera gniazdko gniazdko protokół transportu
HPC na biurku. Wojciech De bski
na biurku Wojciech De bski 22.01.2015 - co to jest? High Performance Computing most generally refers to the practice of aggregating computing power in a way that delivers much higher performance than one
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Programowanie współbieżne i rozproszone
Programowanie współbieżne i rozproszone WYKŁAD 2 Jan Kazimirski 1 MPI 1/2 2 Dlaczego klastry komputerowe? Wzrost mocy obliczeniowej jednego jest coraz trudniejszy do uzyskania. Koszt dodatkowej mocy obliczeniowej
Mechanizmy pracy równoległej. Jarosław Kuchta
Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy
Message Passing Interface
Message Passing Interface Interfejs programowania definiujący powiązania z językami C, C++, Fortran Standaryzacja (de facto) i rozszerzenie wcześniejszych rozwiązań dla programowania z przesyłaniem komunikatów
Konfiguracja serwera OPC/DDE KEPSServerEX oraz środowiska Wonderware InTouch jako klienta DDE do wymiany danych
Ustawienia serwera 1. Uruchomić serwer KEPServerEX w trybie administracji 2. Wywołać ustawienia serwera 3. W zakładce Runtime Process ustawić opcję Process Mode w tryb Interactive 4. Zaakceptować ustawienia
asix4 Podręcznik użytkownika SAPIS7 - drajwer protokołu SAPIS7 Podręcznik użytkownika
Podręcznik użytkownika Podręcznik użytkownika Dok. Nr PLP4054 Wersja: 05-10-2005 Podręcznik użytkownika ASKOM i asix to zastrzeżone znaki firmy ASKOM Sp. z o. o., Gliwice. Inne występujące w tekście znaki
Programowanie współbieżne Wykład 11 Wprowdzenie do MPI. Rafał Skinderowicz
Programowanie współbieżne Wykład 11 Wprowdzenie do MPI Rafał Skinderowicz Programowanie dla modelu z rozproszoną pamiecią Niezależne strumienie instrukcji wykonywane na (być może) oddalonych fizycznie
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Opis protokołu RPC. Grzegorz Maj nr indeksu:
Opis protokołu RPC Grzegorz Maj nr indeksu: 236095 1 Streszczenie Niniejszy dokument opisuje specyfikację protokołu RQP (Remote Queues Protocol). W jego skład wchodzą: opis celów protokołu; opis założeń
Stan globalny. Krzysztof Banaś Systemy rozproszone 1
Stan globalny Krzysztof Banaś Systemy rozproszone 1 Stan globalny Z problemem globalnego czasu jest związany także problem globalnego stanu: interesuje nas stan systemu rozproszonego w konkretnej pojedynczej
Przetwarzanie rozproszone
Wykład prowadzą: Jerzy Brzeziński Jacek Kobusiński Plan wykładu Proces sekwencyjny Komunikaty, kanały komunikacyjne Stan kanału Operacje komunikacyjne Model formalny procesu sekwencyjnego Zdarzenia Warunek
1 second UPS. Poziom trudności: łatwy. Wersja dokumentacji: 1.3. Aktualizacja: 06.02.2015. Beckhoff Automation Sp. z o. o.
Poziom trudności: łatwy Wersja dokumentacji: 1.3 Aktualizacja: 06.02.2015 Beckhoff Automation Sp. z o. o. Spis treści 1. Wprowadzenie... 2 2. Domyślne wywołanie bloku FB_S_UPS... 3 3. Domyślne wywołanie
Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl
Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl wersja.2.9 data 2014-11-21 Opis usług: P24 KOD P24 KLUCZ P24 WAPA SEND SMS Strona 1 z 8 P24 KOD Przebieg transakcji Operacje po stronie Sprzedawcy
Programowanie współbieżne Wykład 12 MPI c.d. Rafał Skinderowicz
Programowanie współbieżne MPI c.d. Rafał Skinderowicz Komunikacja grupowa Poprzednio rozważaliśmy komunikację między parami procesów synchroniczna (blokująca) np. MPI Recv, MPI Send asynchroniczna (nieblokująca)
Tworzenie prostej etykiety i synchronizacja etykiet z wagą. AXIS Sp. z o.o. Kod produktu:
Tworzenie prostej etykiety i synchronizacja etykiet z wagą Współpraca wagi z etykieciarką wymaga zaprojektowania formy (szablonu) etykiety na komputerze i zapisania jej w pamięci etykieciarki. Następnie
Ćwiczenie nr: 9 Obliczenia rozproszone MPI
Ćwiczenie nr: 9 Temat: Obliczenia rozproszone MPI 1. Informacje ogólne MPI (Message Passing Interface) nazwa standardu biblioteki przesyłania komunikatów dla potrzeb programowania równoległego w sieciach
Zdalne wywoływanie procedur RPC
Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces
Zdalne wywoływanie procedur RPC
Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int
Metody 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
Języki formalne i techniki translacji
Języki formalne i techniki translacji Laboratorium - Projekt Termin oddania: ostatnie zajęcia przed 17 stycznia 2016 Wysłanie do wykładowcy: przed 23:59 28 stycznia 2016 Używając BISON-a i FLEX-a napisz
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...................................................
Operacje kolektywne MPI
Operacje kolektywne MPI 1 Operacje kolektywne Do tej pory w operacje przesyłania komunikatu miały charakter punkt-punkt (najczęściej pomiędzy nadawcą i odbiorcą). W operacjach grupowych udział biorą wszystkie
Wykład 1. Systemy przekazywania wiadomości z założeniem bezbłędności działania
Mariusz Juszczyk 16 marca 2010 Seminarium badawcze Wykład 1. Systemy przekazywania wiadomości z założeniem bezbłędności działania Wstęp Systemy przekazywania wiadomości wymagają wprowadzenia pewnych podstawowych
Paradygmaty programowania. Paradygmaty programowania
Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013 2 Spis treści 1. Zadanie 2 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania..............................
Przesyłania danych przez protokół TCP/IP
Przesyłania danych przez protokół TCP/IP PAKIETY Protokół TCP/IP transmituje dane przez sieć, dzieląc je na mniejsze porcje, zwane pakietami. Pakiety są często określane różnymi terminami, w zależności
Działanie i charakterystyka sterownika GE FANUC VersaMaxNano
Działanie i charakterystyka sterownika GE FANUC VersaMaxNano Sterownik wykonuje cyklicznie program sterujący. Oprócz wykonywania programu sterującego, sterownik regularnie gromadzi dane z urządzeń wejściowych,
dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1
Ćwiczenie 1 Uruchamianie programu w Netbeans Uruchom środowisko Netbeans. Stwórz nowy projekt typu Java Application. Nadaj projektowi nazwę HelloWorld (Project Name), zwróć uwagę na folder, w którym zostanie
Wywoływanie procedur zdalnych
Wywoływanie procedur zdalnych Mechanizm wywołania main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces (int pid){ int stat; stat
Wywoływanie procedur zdalnych
Mechanizm wywołania Wywoływanie procedur zdalnych main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces (int pid){ int stat; stat
Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1
Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij proces (int pid){ int stat; stat = kill(pid,
Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1
Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int
O superkomputerach. Marek Grabowski
O superkomputerach Marek Grabowski Superkomputery dziś Klastry obliczeniowe Szafy (od zawsze) Bo komputery są duże Półki i blade'y (od pewnego czasu) Większe upakowanie mocy obliczeniowej na m^2 Łatwiejsze
Obliczenia rozproszone z wykorzystaniem MPI
Obliczenia rozproszone z wykorzystaniem Zarys wst u do podstaw :) Zak lad Metod Obliczeniowych Chemii UJ 8 sierpnia 2005 1 e konkretniej Jak szybko, i czemu tak wolno? 2 e szczegó lów 3 Dyspozytor Macierz
Laboratorium Komputerowe Systemy Pomiarowe
Jarosław Gliwiński, Łukasz Rogacz Laboratorium Komputerowe Systemy Pomiarowe ćw. Zastosowanie standardu VISA do obsługi interfejsu RS-232C Data wykonania: 03.04.08 Data oddania: 17.04.08 Celem ćwiczenia
Pliki. Operacje na plikach w Pascalu
Pliki. Operacje na plikach w Pascalu ścieżka zapisu, pliki elementowe, tekstowe, operacja plikowa, etapy, assign, zmienna plikowa, skojarzenie, tryby otwarcia, reset, rewrite, append, read, write, buforowanie
ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1
Instrukcja obsługi ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1 1 ArtPlayer to proste oprogramowanie umożliwiające odtwarzanie plików video i ich wybór poprzez protokół
Satel Integra FIBARO
Konfiguracja systemu alarmowego Satel Integra do współpracy z systemem FIBARO Poznań, 15 maja 2015r. 1 FIBARO Home Center 2 umożliwia integrację z systemem alarmowym Satel. Jest to realizowane na poziomie
Wstęp do programowania 2
Wstęp do programowania 2 wykład 10 Zadania Agata Półrola Wydział Matematyki UŁ 2005/2006 http://www.math.uni.lodz.pl/~polrola Współbieżność dotychczasowe programy wykonywały akcje sekwencyjnie Ada umożliwia
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
Podstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Laboratorium nr 10. Temat: Funkcje cz.2.
Zakres laboratorium: Laboratorium nr 10 Temat: Funkcje cz.2. przeciążanie nazw funkcji argumenty domyślne funkcji przekazywanie danych do funkcji przez wartość, wskaźnik i referencję przekazywanie tablic
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,
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
Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1
Przetwarzanie wielowątkowe przetwarzanie współbieżne Krzysztof Banaś Obliczenia równoległe 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np. komputery macierzowe)
Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17
Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8
Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej
Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok
Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).
Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154
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.
Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie
Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.
Proxy (pełnomocnik) Cel: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego. Zastosowanie: Wszędzie tam, gdzie oczekujemy bardziej zaawansowanego odwołania do obiektu, niż zwykły
Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.
Przygotować program tworzący tablicę dwuwymiarową zawierającą zestawy 10 2, 10 4, 10 6 liczb losowych zmiennoprzecinkowych. Korzystając z funkcji bibliotecznych uporządkować zawartość każdego (a) wiersza
Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz
Obliczenia równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 15 czerwca 2001 Spis treści Przedmowa............................................
Język C, tablice i funkcje (laboratorium, EE1-DI)
Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.
Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe
I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom
Wprowadzenie do MPI. Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu.
Wprowadzenie do MPI Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu.pl Maciej Cytowski m.cytowski@icm.edu.pl Maciej Szpindler m.szpindler@icm.edu.pl
Tworzenie aplikacji w języku Java
Tworzenie aplikacji w języku Java Wykład 1 Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009
Algorytmy Równoległe i Rozproszone Część VI - Systemy rozproszone, podstawowe pojęcia
Algorytmy Równoległe i Rozproszone Część VI - Systemy rozproszone, podstawowe pojęcia Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@kaims.pl Oficjalna strona wykładu http://www.kaims.pl/
Losowość w rozproszonym modelu
Losowość w rozproszonym modelu Model: ALP520 - Wykład z Algorytmów Probabilistycznych p.2 Losowość w rozproszonym modelu Model: zbiór procesorów, które moga pracować jednocześnie, połaczonych w sieć ALP520
SYSTEMY CZASU RZECZYWISTEGO - VxWorks
WZAJEMNE WYKLUCZANIE Wiele metod. Np. wyłączanie przerwań: funkcja() //... Int blokada = intlock(); // Obszar krytyczny, któremu nie możemy przerwać intunlock(blokada); wyłączanie wywłaszczania: funkcja()
PHP: bloki kodu, tablice, obiekty i formularze
1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Ł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
Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1
Procesy i wątki Krzysztof Banaś Obliczenia równoległe 1 Procesy i wątki Proces: ciąg rozkazów (wątek główny) i ewentualnie inne wątki stos (wątku głównego) przestrzeń adresowa dodatkowe elementy tworzące
Zadanie 2: transakcyjny protokół SKJ (2015)
Zadanie 2: transakcyjny protokół SKJ (2015) 1 Wstęp Zadanie polega na zaprojektowaniu niezawodnego protokołu transakcyjnego bazującego na protokole UDP. Protokół ten ma być realizowany przez klasy implementujące
FAQ: 00000041/PL Data: 09/06/2012. Zastosowanie zmiennych Raw Data Type WinCC v7.0
Zmienne typu Raw Data są typem danych surowych nieprzetworzonych. Ten typ danych daje użytkownikowi możliwość przesyłania do oraz z WinCC dużych ilości danych odpowiednio 208 bajtów dla sterowników serii
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
Wywoływanie procedur zdalnych
Mechanizm wywołania Wywoływanie procedur zdalnych main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) int zabij_proces (int pid){ int stat; stat = kill(pid,