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

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

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

Transkrypt

1 Wykład 8 p. 1/?? Programowanie aplikacji równoległych i rozproszonych Wykład 8 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska

2 Plan wykładu Wykład 8 p. 2/?? Koncepcja standardu MPI, jego zalety i wady Komunikacja typu punkt-punkt Komunikacja grupowa Wstęp do standardu MPI-2 Mechanizm komunikacji jednostronnej i jego cechy charakterystyczne Sposoby dynamicznego zarzadzania procesami wprowadzone w standardzie MPI-2 Równoległe operacje wejścia/wyjścia MPI-IO i ich cechy Pozostałe rozszerzenia i modyfikacje wprowadzone w standardzie MPI-2

3 Koncepcja standardu MPI Wykład 8 p. 3/?? Standard MPI (Message Passing Interface) definije bibliotekę dla języków C/C++ i Fortran do tworzenia programów równoległych dla modelu z wymiana komunikatów. Program składa się z procesów (zazwyczaj działajacych na różnych jednostkach obliczeniowych - procesorach lub rdzeniach), które komunikuja się przy pomocy komunikatów. Standard MPI został stworzony dla komputerów masywnie równoległych, jednakże w chwili obecnej pozwala na efektywna realizację przetwarzania równoległego na klastrach, a nawet architekturach z pamięcia współdzielona. Zaleta standardu MPI jest wysoka wydajność oraz możliwość efektywnej obługi dużej liczby procesów. Wada jest stosunkowo złożony sposób tworzenia programów równoległych - należy rozdzielić zadania na poszczególne procesy oraz w jawny sposób zadać komunikację pomiędzy nimi.

4 Komunikacja typu punkt-punkt Wykład 8 p. 4/?? Podstawowym mechanizmem wymiany danych pomiędzy procesami jest komunikacja typu punkt-punkt: nadawca wysyła komunikat do odbiorcy przy pomocy funkcji MPI_Send, odbiorca odbiera komunikat od nadawcy, wykorzystujac do tego celu funkcję MPI_Recv Funkcje MPI_Send/MPI_Recv s wykonanie komunikacji. a blokujace - procesy czekaja na W standardzie MPI udostępniono również komunikację nieblokujac a: MPI_Irecv(...); // inicjalizacja nieblokującego odebrania komunikatau... // wykonanie pracy niezależnej od odbieranych danych MPI_Wait(...); // czekanie na zakończenie komunikacji... // wykonanie pracy, która jest zależna od odebranych danych

5 Komunikacja grupowa Wykład 8 p. 5/?? Komunikacja grupowa to taka, w której wystepuje grupa procesów. Każdy proces z grupy wywołuje taka sama funkcję. W standardzie MPI zdefiniowano następujace funkcje do komunikacji grupowej: MPI_Barrier - synchronizacja procesów w postaci bramki, MPI_Bcast - rozgłaszanie jeden do wszystkich, MPI_Gather - zbieranie wszyscy do jednego, MPI_Allgather - zbieranie wszyscy do wszystkich, MPI_Scatter - rozpraszanie jeden do wszystkich, MPI_Reduce - redukcja wszyscy do jednego, MPI_Alltoall - rozpraszanie wszyscy do wszystkich, MPI_Allreduce - redukcja połaczona z rozgłaszaniem.

6 Wykład 8 p. 6/?? MPI-2 - nowe elementy W standardzie MPI-2 wprowadzono trzy główne modyfikacje: równoległe wejście/wyjście, komunikacja jednostronna, dynamiczne zarzadzanie procesami. Ponadto w porównaniu do standardu MPI 1.1 uścislono standard MPI, uwzględniono przetwarzanie wielowatkowe, umożliwiono łaczenie modułów w napisanych w różnych językach, dodano rozszerzone operacje komunikacji zbiorowej.

7 Sprawdzenie wersji MPI Wykład 8 p. 7/?? Poczawszy od wersji 1.2 standardu MPI można przeprowadzić kontrolę wersji używnej biblioteki MPI. Podczas kompilacji można skorzystać z dyrektyw MPI_VERSION i MPI_SUBVERSION, które przechowuja odpowienio liczbę całkowita określajac a numer wersji i podwersji biblioteki MPI: #define MPI_VERSION 2 #define MPI_SUBVERSION 0 Podczas wykonania programu MPI można skorzystać z funkcji MPI_Get_version: int MPI_Get_version( int *version, int *subversion ) gdzie: version - przez ten argument zostaje zwrócony numer wersji, subversion - pozwala na pobranie numeru podwersji.

8 Dynamiczne zarzadzanie procesami Wykład 8 p. 8/?? W standardzie MPI-1 liczba procesorów była statyczna - ustalana w momencie uruchomienia programu i nie mogła zostać zmieniona. W standardzie MPI-2 wspiera dynamiczne zarzadzanie procesami: możliwość tworzenia nowych procesów w trakcie działania programu, jak również ich usuwania, udostępnia mechanizm umożliwiajacy nawiazanie komunikacji pomiędzy nowo utworzonymi procesami, a istniejac a aplikacja MPI, możliwość przesyłania zmiennych typu MPI_Info pomiędzy procesami. udostępnia również mechanizm umożliwiajacy nawiazanie komunikacji pomiędzy dwoma zupełnie odrębnymi aplikacjami MPI (nawet jeżeli jedna nie uruchomiła drugiej).

9 Uruchamianie procesów Wykład 8 p. 9/?? Aplikacja MPI może utworzyć nowy proces przy wykorzystaniu funkcji MPI_Comm_spawn i MPI_Comm_spawn_multiple będacych interfejsem do zewnętrznego zarzadcy procesów. Funkcja MPI_Comm_spawn umożliwia utworzenie nowych procesów i nawiazanie z nim komunikacji przy pomocy wspólnego komunikatora rodzica i potomka (intercommunicator). Funkcja MPI_Comm_spawn_multiple umożliwia utworzenie procesów wykorzystujacych różne pliki wykonywalne z takimi samymi, lub różnymi argumentami wywołania. Proces jest reprezentowany w MPI przez parę (group, rank),

10 Wykład 8 p. 10/?? Funkcja MPI_Comm_spawn Funkcja MPI_Comm_spawn: int MPI_Comm_spawn(char *command, char *argv[], int maxprocs, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *intercomm, int array_of_errcodes[]) Stara się utworzyć maxprocs nowych identycznych kopii programu MPI przekazanego poprzez parametr command z argumentami wywołania znajdujacymi się w argv (może się to nie udać np. z powodu braku wolnych zasobów). Poprzez parametr intercomm zwracany jest inter-komunikator który zawiera procesy rodzica w grupie lokalnej (local group) oraz procesy potomne w grupie zdalnej (remote group). Utworzone procesy maja własny komunikator MPI\_COMM\_WORLD, który jest różny od tego, używanego przez procesy rodziców.

11 Wykład 8 p. 11/?? Funkcja MPI_Comm_get_parent Funkcja MPI_Comm_get_parent: int MPI_Comm_get_parent(MPI_Comm *parent) Jeżeli proces został stworzony przy pomocy funkcji MPI_Comm_spawn lub MPI_Comm_spawn_multiple funkcja MPI_Comm_get_parent zwraca dowi azanie do komunikatora rodzica (parent intracommunicator), w przeciwnym wypadku zwraca MPI_COMM_NULL. Intra-komunikator jest tworzony w momencie wywołania funkcji MPI_init i jest taki sam, jak intra-komunikator zwracany dla rodzica w momencie tworzenia procesu (zwracany w funkcjach MPI_Comm_spawn i MPI_Comm_spawn_multiple).

12 Tworzenie procesów - ograniczenia Wykład 8 p. 12/?? W chwili tworzenia programu trudno jest założyć, ile procesów może zostać utworzonych (jest do zależne od środowiska w jakim program będzie działał). W zwiazku z tym decyzja o liczbie uruchamianych procesów musi być podjęta w trakcie działania programu (co w wielu wypadkach możne znacznie skomplikować implementację). Można do tego celu wykorzystać funkcję MPI_Comm_get_attr: int size, flag; MPI_Comm_get_attr(MPI_COMM_WORLD, MPI_UNIVERSE_SIZE, &size, &flag); gdzie po wykonaniu funkcji: flag - określa, czy MPI obsługuje MPI_UNIVERSE_SIZE, size - to w takim wypadku zwraca liczbę procesów - 1, jakie moga być uruchomione (w przypadku size równego 1 nie może zostać uruchomiony żaden nowy proces). Ponadto ze względu na wydajność lepszym rozwiazaniem jest uruchomienie w momencie startu aplikacji (mpiexec) tyle procesów, ile jest konieczne, zamiast tworzyć je dynamicznie.

13 Master - przykład Wykład 8 p. 13/?? #include "mpi.h" #include <iostream> int main(int argc, char *argv[]) { MPI_Init(&argc, &argv); MPI_Comm everyone; MPI_Comm_spawn("worker", MPI_ARGV_NULL, 2, MPI_INFO_NULL, 0, MPI_COMM_SELF, &everyone, MPI_ERRCODES_IGNORE); } MPI_Finalize(); return 0;

14 Worker - przykład Wykład 8 p. 14/?? #include "mpi.h" #include <iostream> int main(int argc, char *argv[]) { MPI_Init(&argc, &argv); MPI_Comm parent; MPI_Comm_get_parent(&parent); if (parent == MPI_COMM_NULL) std::cerr << "Error - Brak rodzica!"; int size; MPI_Comm_remote_size(parent, &size); if (size!= 1) std::cerr << "Error - Cos poszlo nie tak"; } MPI_Finalize(); return 0;

15 Wykład 8 p. 15/?? Funkcja MPI_Comm_spawn int MPI_Comm_spawn(char *command, char *argv[], int maxprocs, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *intercomm, int array_of_errcodes[]) gdzie: command - nazwa programu, z którego będa tworzone nowe procesy, argv - argumenty wywołania, jakie będa przekazane do tworzonych procesów, maxprocs - maksymalna liczba tworzonych procesów, info - zbiór par (klucz, wartość) informujacych system gdzie i jak maja zostać utworzone nowe procesy, root - identyfikator procesu tworzace procesy potomne, comm - intra-komunikator zawierajacy grupę utworzonych procesów, intercomm - inter-komunikator będacy uchwytem pomiędzy oryginalna grupa procesów, a grupa nowoutworzonych procesów, array_of_errcodes - tablica błędów o rozmiarze maxprocs (po jednym kodzie dla każdego procesu).

16 Funkcja MPI_Comm_spawn_multiple int MPI_Comm_spawn_multiple(int count, char *array_of_commands[], char **array_of_argv[], int array_of_maxprocs[], MPI_Info array_of_info[], int root, MPI_Comm comm, MPI_Comm *intercomm, int array_of_errcodes[]) gdzie: count - liczba komend (rozmiar talicy array_of_commands), array_of_commands - tablica z nazwami programów, z których będa tworzone nowe procesy, array_of_argv - tablica z argumentami wywołania, jakie będa przekazane do tworzonych procesów, array_of_maxprocs - maksymalna liczba tworzonych procesów dla poszczególnych komend, array_of_info - tablica zbiórów par (klucz, wartość) informujacych system gdzie i jak maja zostać utworzone nowe procesy, root - identyfikator procesu tworzace procesy potomne, comm - intra-komunikator zawierajacy grupę utworzonych procesów, intercomm - inter-komunikator będacy uchwytem pomiędzy oryginalna grupa procesów, a grupa nowoutworzonych procesów, array_of_errcodes - tablica błędów o rozmiarze maxprocs (po jednym kodzie dla każdego procesu). Wykład 8 p. 16/??

17 Komunikacja jednostronna Wykład 8 p. 17/?? W ramach standard MPI-1 udostępnione zostały mechanizmy komunikacji dwustronnej (nadawca i odbiorca jawnie uczestnicza w komunikacji): jeden proces wysyła komunikat (rodzina funkcji MPI_send), drugi proces odbiera komunikat (rodzina funkcji MPI_recv). W standardzie MPI-2 rozszerzono mechanizmy komunikacji poprzez dodanie trybu pamięci zdalnej RMA (Remote Memory Access) - jeden proces definiuje wszystkie parametry komunikacji (zarówno zwiazane z wysyłaniem danych, jak i ich odbieraniem). Komunikacja jednostronna wymaga jawnego użycia specjalnych funkcji synchronizujacych (w przypadku trybu blokujacego w MPI-1 synchronizacja była realizowana w sposób niejawny).

18 Operacje w komunikacji jednostronnej Wykład 8 p. 18/?? W MPI-2 wprowadzono trzy operacje komunikacji jednostronnej: MPI_Put (remote write) - zapisywanie danych, MPI_Get (remote read) - pobieranie danych, MPI_Accumulate (remote update) - modyfikacja danych (np. sumowanie).

19 Okno dostępu do pamięci Wykład 8 p. 19/?? Aby można było wykorzystać operacje komunikacji jednostronnej należy utworzyć tzw. okno dostępu do pamięci. Tworzenie okna polega na wydzieleniu fragmentu już zaalokowanej pamięci procesu, do której będa miały dostęp inne procesy w trybie RMA. Utworzenie okna dostępu do pamięci jest operacja komunikacji zbiorowej. Do tego celu służy funkcja MPI_Win_create: int MPI_Win_create(void *base, MPI_Aint size, int disp_unit, MPI_Info info, MPI_Comm comm, MPI_Win *win) Tworzone jest okno o rozmiarze size, zaczynajace się od base. Zwracany jest obiekt win, który jest wykorzystywany w operacjach komunikacyjnych. Do usunięcia utworzonego okna służy funkcja MPI_Win_free.

20 Zapis danych Wykład 8 p. 20/?? Funkcja służac a do zapisywania danych do pamięci innego procesu jest funkcja MPI_Put: int MPI_Put(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win) Proces zapisuje do pamięci procesu target_rank dane o rozmiarze origin_count znajdujace się pod adresem origin_addr. Dane zostaja umieszczone w pamięci procesu docelowego pod adresem określonym przez okno win oraz przesunięciem target_disp.

21 Odczyt danych Wykład 8 p. 21/?? Funkcja służac a do odczytywania danych z pamięci innego procesu jest funkcja MPI_Get: int MPI_Get(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win) Proces pobiera z pamięci procesu target_rank dane, które zostaja umieszczone w buforze origin_addr. Zapisywanych jest origin_count elementów typu origin_datatype. Dane zostaja pobrane z pamięci procesu target_rank spod adresu określonego przez pocz atek okna win i przesunięcia target_disp. Po wykonaniu operacji MPI_Get należy wykonać operację synchronizacji. Korzystanie z lokalnego bufora origin_addr należy odłożyć aż do zakończenia synchronizacji.

22 Wykład 8 p. 22/?? Funkcja MPI_Accumulate Funkcja MPI_Accumulate wykonuje określona operację (np. sumowanie) na zawartości lokalnego i docelowego bufora: int MPI_Accumulate(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Op op, MPI_Win win) Wynik operacji op wykonanej na lokalnym (origin_addr) i docelowym (określonym przez target_disp i win) buforze jest zapisywany w pamięci zdalnej. Można wykonywać wiele operacji akumulacji w tym samym czasie przez różne procesy korzystajac z tego samego bufora docelowego.

23 Wykład 8 p. 23/?? Synchronizacja Synchronizację RMA można podzielić na: z udziałem procesu zdalnego (active target), tylko z udziałem procesów źródłowych (passive target).

24 Wykład 8 p. 24/?? Funkcja MPI_Win_fence Funkcja MPI_Win_fence synchronizuje wszystkie operacje RMA wykonywane na danym oknie dostępu do pamięci: int MPI_Win_fence(int assert, MPI_Win win) win - okno, którego operacje będa synchronizowane, assert - umożliwia przekazanie wskazówek optymalizacyjnych. Jest operacja typu active target.

25 Pozostałe sposoby synchronizacji Wykład 8 p. 25/?? Poniższe funkcje umożliwiaja ograniczenie synchronizacji do minimum - jedynie pary procesów korzystajacych ze wspólnej pamięci uczestnicza w synchronizacji: MPI_Win_start, MPI_Win_wait, MPI_Win_post, MPI_Win_complete. Analogicznie, jak w przypadku modelu programowania z pamięcia współdzielona udostępniono funkcje, umożliwiajace procesowi zablokowanie korzystania z okna w danym czasie innym procesom (mechanizm zamków, rygli). Sa to operacje typu passive target: MPI_Win_lock, MPI_Win_unlock.

26 Wykład 8 p. 26/?? Funkcja MPI_Win_create int MPI_Win_create(void *base, MPI_Aint size, int disp_unit, MPI_Info info, MPI_Comm comm, MPI_Win *win) gdzie: base - adres, od którego będzie zaczynało się okno, size - rozmiar okna w bajtach, disp_unit - jednostka (czynnik skalujacy) do przesunięcia w bajtach, info - uchwyt do danych informacyjnych, comm - procesy wchodzace w skład tej grupy będa mogły korzystać z utworzonego okna pamięci, win - zwracany obiekt okna, wykorzystywany następnie w operacjach komunikacji jednostronnej.

27 Wykład 8 p. 27/?? Funkcja MPI_Win_free Funkcja MPI_Win_free usuwa obiekt okna dostępu do pamięci. Usuwanie obiektu okna może być wykonywane tylko po ukończonej synchronizacji. int MPI_Win_free(MPI_Win *win) gdzie: win - uchwyt do okna, które będzie usuwane.

28 Wykład 8 p. 28/?? Funkcja MPI_Put int MPI_Put(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win) gdzie: origin_addr - adres poczatkowy bufora źródłowego, origin_count - liczba elementów bufora źródłowego, origin_datatype - typ elementu bufora źródłowego, target_rank - identyfikator procesu, w którym będa zapisywane dane, target_disp - przesunięcie względem poczatku okna obszaru do którego będa zapisywane dane, target_count - liczba elementów bufora docelowego, target_datatype - typ elementu bufora docelowego, win - uchwyt do wcześniej utworzonego okna wykorzystywanego do komunikacji.

29 Wykład 8 p. 29/?? Funkcja MPI_Get int MPI_Get(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win) gdzie: origin_addr - adres poczatkowy bufora docelowego, origin_count - liczba elementów bufora docelowego, origin_datatype - typ elementu bufora docelowego, target_rank - identyfikator procesu, z pamięci którego będa odczytywane dane, target_disp - przesunięcie względem poczatku okna obszaru, z którego będa odczytywane dane, target_count - liczba elementów bufora źródłowego, target_datatype - typ elementu bufora źródłowego, win - uchwyt do wcześniej utworzonego okna wykorzystywanego do komunikacji.

30 Wykład 8 p. 30/?? Funkcja MPI_Accumulate int MPI_Accumulate(void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Op op, MPI_Win win) gdzie: origin_addr - adres poczatkowy bufora źródłowego, origin_count - liczba elementów bufora źródłowego, origin_datatype - typ elementu bufora źródłowego, target_rank - identyfikator procesu, w którym będa zapisywane dane, target_disp - przesunięcie względem poczatku okna obszaru do którego będa zapisywane dane, target_count - liczba elementów bufora docelowego, target_datatype - typ elementu bufora docelowego, op - typ operacji - moga być wykorzystywane te same operacje, co w przypadku MPI_Reduce: MPI_MAX, MPI_MIN, MPI_SUM, MPI_PROD, MPI_LAND, MPI_BAND, MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MAXLOC, MPI_MINLOC, win - uchwyt do wcześniej utworzonego okna wykorzystywanego do komunikacji.

31 Sekwencyjne wejście/wyjście Wykład 8 p. 31/?? Procesy wysyłaja dane do procesu 0, który zapisuje je do pliku

32 Proste rozwiazanie równoległego we/wy Wykład 8 p. 32/?? Najprostsze rozwiazanie równoległe - każdy proces posiada własny plik, z którego czyta i zapisuje dane. Zaletami sa pełna równoległość oraz duża wydajność. Wadami - obsługa wielu małych plików oraz problemy przy korzystaniu z plików dla innej liczby procesów.

33 Równoległe we/wy - motywacja Wykład 8 p. 33/?? Sekwenyjne we/wy jest proste, ale charakteryzuje się niska wydajnościa, w przypadku gdy jeden proces korzysta z jednego pliku lub problemami zwiazanymi z zarzadzeniem wieloma plikami, w przypadku gdy każdy proces wykorzystuje swój własny plik. Istnieje wiele aplikacji, które wymagaja aby: był możliwy równoległy dostęp do jednego pliku przez wiele procesów, dostęp mógł być realizowany jednocześnie, procesy mogły odczytywać te same dane, tworzony był pojedynczy plik, ze względu na konieczność współpracy z innymmi narzędziami. Rozwiazaniem jest równoległe wejście/wyjście.

34 Równoległe we/wy - prosty przykład Wykład 8 p. 34/?? Każdy proces odczytuje lub zapisuje dane korzystajac ze wspólnego pliku z/do przydzielonego mu fragmentu pliku.

35 Otwarcie i zamknięcie pliku Wykład 8 p. 35/?? Do otwarcia pliku służy polecenie MPI_File_open: int MPI_File_open(MPI_Comm comm, char *filename, int amode, MPI_Info info, MPI_File *fh) Otwiera plik o nazwie filename na wszystkich procesach z komunikatora comm. Jest operacja kolektywna - wszystkie procesy z grupy comm musza wywołać funkcję MPI_File_Open z takimi samymi wartościami amode i filename. Do zamknięcia pliku służy polecenie MPI_File_close: int MPI_File_close(MPI_File *fh) Zamykany jest wcześniej otwarty plik, na który wskazuje uchwyt fh. Przy zamykaniu pliku wykonywana jest synchronizacja.

36 Indywidualne pozycje pliku Wykład 8 p. 36/?? MPI obsługuje jedna pozycję pliku (przesunięcie względem poczatku pliku) dla procesu i uchwytu do pliku. Każdy proces może ustawić swoja pozycję pliku w taki sposób, aby czytał lub zapisywał przydzielony mu fragment pliku. Do ustawienia lokalnej pozycji pliku służy funkcja MPI_File_seek: int MPI_File_seek(MPI_File fh, MPI_Offset offset, int whence) Modyfikuje lokalna pozycję pliku zwiazanego z uchwytem fh w następujacy sposób: MPI_SEEK_SET - pozycja pliku jest ustawiana na offset, MPI_SEEK_CUR - pozycja pliku jest zwiększana o offset, MPI_SEEK_END - pozycja pliku jest ustawiana na koniec pliku i dodawany jest do niej offest (w takim przypadku offset powinien mieć wartość ujemna).

37 Czytanie z pliku Wykład 8 p. 37/?? Do czytania z pliku można wykorzystać funkcje MPI_File_read: int MPI_File_read(MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status) Odczytuje count elementów typu datatype z pliku określonego przez uchwyt fh do bufora buf poczawszy od aktualnej lokalnej pozycji pliku. Wersja grupowa funkcji MPI_File_read jest funkcja MPI_File_read_all: int MPI_File_read_all(MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status)

38 Zapis do pliku Wykład 8 p. 38/?? Zapis do pliku można zrealizować przy pomocy funkcji MPI_File_write: int MPI_File_write(MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status) Zapisuje count elementów typu datatype do pliku określonego przez uchwyt fh z bufora buf poczawszy od aktualnej lokalnej pozycji pliku. Wersja grupowa funkcji MPI_File_write jest funkcja MPI_File_write_all: int MPI_File_write_all(MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Status *status)

39 Operacje nieblokujace Wykład 8 p. 39/?? Istnieja nieblokujace wersje operacji do odczytu i zapisu: int MPI_File_iread(MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Request *request) int MPI_File_iwrite(MPI_File fh, void *buf, int count, MPI_Datatype datatype, MPI_Request *request) Oczekiwanie na zakończenie operacji na pliku może być zrealizowane przez funkcje MPI_Wait przy wykorzystaniu parametru request (podobnie, jak w przypadku nieblokujacego odebrania komunikatu). Wykorzystywane sa one najczęściej do nałożenia w czasie obliczeń i operacji plikowych.

40 Inne rodzaje operacji plikowych Wykład 8 p. 40/?? W standardzie MPI zdefiniowano znacznie więcej funkcji i sposobów realizacji operacji na plikach, np: Funkcje czytajace i zapisujace dane z/do pliku z określeniem od którego miejsca w pliku dane maja być pobierane/zapisywane: MPI_File_read_at i MPI_File_write_at. Funkcje realizujace zapis/odczyt przy wykorzystaniu wspólnej pozycji pliku (pozycja pliku jest współdzielona przez wszystkie procesy z komunikatora comm podanego w funkcji MPI_File_open): MPI_File_read_shared i MPI_File_write_shared oraz ich odpowiedniki grupowe MPI_File_read_ordered i MPI_File_write_ordered. Inne funkcje.

41 Wykład 8 p. 41/?? Funkcja MPI_File_Open Do otwarcia pliku służy funkcja MPI_File_Open: int MPI_File_open(MPI_Comm comm, char *filename, int amode, MPI_Info info, MPI_File *fh) gdzie: comm - intra-komunikator - wszystkie procesy wchodzace w skład tego komunikatora będa miały dostęp do pliku, filename - nazwa otwieranego pliku, amode - tryb dostępu do pliku (MPI_MODE_RDONLY - tylko do odczytu, MPI_MODE_RDWR - do odczytu i zapisu, MPI_MODE_WRONLY - tylko do zapisu, MPI_MODE_CREATE - tworzy plik jeżeli nie istnieje, MPI_MODE_EXCL - bład, jeżeli plik już istnieje, MPI_MODE_DELETE_ON_CLOSE - usunięcie pliku przy zamknięciu, MPI_MODE_SEQUENTIAL - dostęp do pliku może być tylko sekwencyjny, MPI_MODE_APPEND - wszystkie wskażniki do pliku sa ustawiane na koniec pliku), info - obiekt info, fh - uchwyt do pliku,

42 Wykład 8 p. 42/?? Funkcja MPI_File_delete Do usunięcia pliku służy funkcja MPI_File_Delete: int MPI_File_delete(char *filename, MPI_Info info) gdzie: filename - nazwa usuwanego pliku, info - obiekt info, Jeżeli plik nie istnie zgłaszany jest bład (MPI_ERR_NO_SUCH_FILE).

43 Wykład 8 p. 43/?? Funkcja MPI_File_write_at int MPI_File_write_at(MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype, MPI_Status *status) gdzie: fh - uchwyt do pliku, do którego będa zapisywane dane, offset - przesunięcie względem poczatku pliku określajace, od którego miejsca będa zapisywane dane, buf - bufor z którego będa pobierane dane do zapisu, count - liczba zapisywanych elementów, datatype - typ zapisywanych elementów, status - obiekt statusu.

44 Wykład 8 p. 44/?? Funkcja MPI_File_read_at int MPI_File_read_at(MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype, MPI_Status *status) gdzie: fh - uchwyt do pliku, z którego będa odczytywane dane, offset - przesunięcie względem poczatku pliku określajace, od którego miejsca będa odczytywane dane, buf - bufor, do którego będa zapisywane dane odczytane z pliku, count - liczba odczytywanych elementów, datatype - typ odczytywanych elementów, status - obiekt statusu.

Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1

Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1 Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1 MPI dynamiczne zarządzanie procesami MPI 2 umożliwia dynamiczne zarządzanie procesami, choć

Bardziej szczegółowo

Plan wykładu. Programowanie aplikacji równoległych i rozproszonych. Wykład 8 p. Komunikacja typu punkt-punkt. Koncepcja standardu MPI

Plan wykładu. Programowanie aplikacji równoległych i rozproszonych. Wykład 8 p. Komunikacja typu punkt-punkt. Koncepcja standardu MPI Plan wykładu Programowanie aplikacji równoległych i rozproszonych Wykład 8 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Koncepcja standardu

Bardziej szczegółowo

Rozszerzenia MPI-2 1

Rozszerzenia MPI-2 1 Rozszerzenia MPI-2 1 2 Dynamiczne tworzenie procesów Aplikacja MPI 1 jest statyczna z natury Liczba procesów określana jest przy starcie aplikacji i się nie zmienia. Gwarantuje to szybką komunikację procesów.

Bardziej szczegółowo

Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1

Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1 Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1 Środowisko przesyłania komunikatów MPI Rodzaje procedur: blokujące nieblokujące Tryby przesyłania

Bardziej szczegółowo

Programowanie Równoległe Wykład 4. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej

Programowanie Równoległe Wykład 4. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej Programowanie Równoległe Wykład 4 MPI - Message Passing Interface Maciej Matyka Instytut Fizyki Teoretycznej Jak używać w MPI? Donald Knuth: We should forget about small efficiencies, say about 97% of

Bardziej szczegółowo

Operacje grupowego przesyłania komunikatów. Krzysztof Banaś Obliczenia równoległe 1

Operacje grupowego przesyłania komunikatów. Krzysztof Banaś Obliczenia równoległe 1 Operacje grupowego przesyłania komunikatów Krzysztof Banaś Obliczenia równoległe 1 Operacje grupowego przesyłania komunikatów Operacje, w ramach których ten sam komunikat lub zbiór komunikatów przesyłany

Bardziej szczegółowo

Programowanie Równoległe Wykład 5. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej

Programowanie Równoległe Wykład 5. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej Programowanie Równoległe Wykład 5 MPI - Message Passing Interface Maciej Matyka Instytut Fizyki Teoretycznej Dorobiliśmy się strony WWW www.ift.uni.wroc.pl/~koma/pr/index.html MPI, wykład 2. Plan: - komunikacja

Bardziej szczegółowo

Programowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1

Programowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1 Programowanie w modelu przesyłania komunikatów specyfikacja MPI Krzysztof Banaś Obliczenia równoległe 1 Środowisko przesyłania komunikatów MPI Rodzaje procedur: blokujące nieblokujące Tryby przesyłania

Bardziej szczegółowo

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla Tryby komunikacji między procesami w standardzie Message Passing Interface Piotr Stasiak 171011 Krzysztof Materla 171065 Wstęp MPI to standard przesyłania wiadomości (komunikatów) pomiędzy procesami programów

Bardziej szczegółowo

Łagodne wprowadzenie do Message Passing Interface (MPI)

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

Bardziej szczegółowo

Operacje grupowego przesyłania komunikatów

Operacje grupowego przesyłania komunikatów Operacje grupowego przesyłania komunikatów 1 Operacje grupowego przesyłania komunikatów Operacje, w ramach których ten sam komunikat lub zbiór komunikatów przesyłany jest pomiędzy więcej niż dwoma procesami

Bardziej szczegółowo

Programowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1

Programowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1 Programowanie w modelu przesyłania komunikatów specyfikacja MPI Krzysztof Banaś Obliczenia równoległe 1 Model przesyłania komunikatów Paradygmat send receive wysyłanie komunikatu: send( cel, identyfikator_komunikatu,

Bardziej szczegółowo

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

Modele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak dla PR PP Modele programowania równoległego Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak dla PR PP MPP - Cechy charakterystyczne 1 Prywatna, wyłączna przestrzeń adresowa.

Bardziej szczegółowo

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

Modele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak Modele programowania równoległego Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak MPP - Cechy charakterystyczne 1 Prywatna - wyłączna przestrzeń adresowa. Równoległość

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 2 Jan Kazimirski 1 MPI 1/2 2 Dlaczego klastry komputerowe? Wzrost mocy obliczeniowej jednego jest coraz trudniejszy do uzyskania. Koszt dodatkowej mocy obliczeniowej

Bardziej szczegółowo

MPI dla zaawansowanych

MPI dla zaawansowanych MPI dla zaawansowanych Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu.pl Maciej Cytowski m.cytowski@icm.edu.pl Maciej Szpindler m.szpindler@icm.edu.pl

Bardziej szczegółowo

Message Passing Interface

Message Passing Interface Message Passing Interface Interfejs programowania definiujący powiązania z językami C, C++, Fortran Standaryzacja (de facto) i rozszerzenie wcześniejszych rozwiązań dla programowania z przesyłaniem komunikatów

Bardziej szczegółowo

Wstęp do MPI-2. Jacek Dziedzic FTiMS, Politechnika Gdańska Gdańsk, Algorytmy rozproszone 2017/2018. v1.14

Wstęp do MPI-2. Jacek Dziedzic FTiMS, Politechnika Gdańska Gdańsk, Algorytmy rozproszone 2017/2018. v1.14 Wstęp do MPI-2 Jacek Dziedzic FTiMS, Politechnika Gdańska Gdańsk, 2006-2018 Algorytmy rozproszone 2017/2018 v1.14 Pracujemy w systemie równoległym o architekturze MIMD, z pamięcią rozproszoną... N E T

Bardziej szczegółowo

61 Topologie wirtualne

61 Topologie wirtualne 61 Topologie wirtualne pozwalają opisać dystrybucję procesów w przestrzeni z uwzględnieniem struktury komunikowania się procesów aplikacji między sobą, umożliwiają łatwą odpowiedź na pytanie: kto jest

Bardziej szczegółowo

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

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach Laboratorium Systemów Operacyjnych Ćwiczenie 4. Operacje na plikach Wykonanie operacji wymaga wskazania pliku, na którym operacja ma zostać wykonana. Plik w systemie LINUX identyfikowany jest przez nazwę,

Bardziej szczegółowo

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

Programowanie współbieżne... (4) Andrzej Baran 2010/11 Programowanie współbieżne... (4) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html Przykład Zaczniemy od znanego już przykładu: Iloczyn skalarny różne modele Programowanie współbieżne...

Bardziej szczegółowo

Operacje kolektywne MPI

Operacje kolektywne MPI Operacje kolektywne MPI 1 Operacje kolektywne Do tej pory w operacje przesyłania komunikatu miały charakter punkt-punkt (najczęściej pomiędzy nadawcą i odbiorcą). W operacjach grupowych udział biorą wszystkie

Bardziej szczegółowo

Programowanie Współbieżne

Programowanie Współbieżne Programowanie Współbieżne MPI ( główne źródło http://pl.wikipedia.org/wiki/mpi) 1 Historia Początkowo (lata 80) różne środowiska przesyłania komunikatów dla potrzeb programowania równoległego. Niektóre

Bardziej szczegółowo

Programowanie Równoległe Wykład 5. MPI - Message Passing Interface (część 3) Maciej Matyka Instytut Fizyki Teoretycznej

Programowanie Równoległe Wykład 5. MPI - Message Passing Interface (część 3) Maciej Matyka Instytut Fizyki Teoretycznej Programowanie Równoległe Wykład 5 MPI - Message Passing Interface (część 3) Maciej Matyka Instytut Fizyki Teoretycznej MPI, wykład 3. Plan: - wirtualne topologie - badanie skalowanie czasu rozwiązania

Bardziej szczegółowo

Wprowadzenie do MPI. Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu.

Wprowadzenie do MPI. Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu. Wprowadzenie do MPI Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski http://www.icm.edu.pl Maciej Cytowski m.cytowski@icm.edu.pl Maciej Szpindler m.szpindler@icm.edu.pl

Bardziej szczegółowo

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików: Pliki W celu wykonania jakiejkolwiek operacji na istniejącym pliku, plik ten musi zostać otwarty, natomiast jeśli plik jeszcze nie istnieje, to musi zostać utworzony. Plik może zostać otwarty w trybie:

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 12: Wstęp

Bardziej szczegółowo

Wykład PASCAL - Pliki tekstowe

Wykład PASCAL - Pliki tekstowe Podstawy programowania Wykład PASCAL - Pliki tekstowe 1 dr Artur Bartoszewski - Podstawy prograowania, sem. 1- WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą,

Bardziej szczegółowo

Programowanie w standardzie MPI

Programowanie w standardzie MPI Programowanie w standardzie MPI 1 2 Podstawy programowania z przesyłaniem komunikatów Model systemu równoległego w postaci p procesów, każdy z nich z własną przestrzenią adresową, nie współdzieloną z innymi

Bardziej szczegółowo

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

http://www.mcs.anl.gov/research/projects/mpi/standard.html z przedmiotu, prowadzonych na Wydziale BMiI, Akademii Techniczno-Humanistycznej w Bielsku-Białej. MPI czyli Message Passing Interface stanowi specyfikację pewnego standardu wysokopoziomowego protokołu

Bardziej szczegółowo

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz Programowanie równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 23 października 2009 Spis treści Przedmowa...................................................

Bardziej szczegółowo

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie

Bardziej szczegółowo

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011 Obsługa plików Systemy Operacyjne 2 laboratorium Mateusz Hołenko 25 września 2011 Plan zajęć 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach otwieranie i zamykanie zapis i odczyt

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wskaźniki. Informatyka

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

Bardziej szczegółowo

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4 Wykład 4 p. 1/1 Oprogramowanie i wykorzystanie stacji roboczych Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Obsługa sieci Wykład

Bardziej szczegółowo

Wstęp do MPI-2. Jacek Dziedzic FTiMS, Politechnika Gdańska Gdańsk, Algorytmy rozproszone 2014/2015. v1.13

Wstęp do MPI-2. Jacek Dziedzic FTiMS, Politechnika Gdańska Gdańsk, Algorytmy rozproszone 2014/2015. v1.13 Wstęp do MPI-2 Jacek Dziedzic FTiMS, Politechnika Gdańska Gdańsk, 2006-2015 Algorytmy rozproszone 2014/2015 v1.13 Pracujemy w systemie równoległym o architekturze MIMD, z pamięcią rozproszoną... N E T

Bardziej szczegółowo

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja

Bardziej szczegółowo

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

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

Klient-Serwer Komunikacja przy pomocy gniazd

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

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1 Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int

Bardziej szczegółowo

System plików warstwa logiczna

System plików warstwa logiczna Dariusz Wawrzyniak Pojęcie u Plik jest abstrakcyjnym obrazem informacji gromadzonej i udostępnianej przez system komputerowy. Plik jest podstawową jednostką logiczną magazynowania informacji w systemie

Bardziej szczegółowo

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

5. Model komunikujących się procesów, komunikaty Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int

Bardziej szczegółowo

Architektury systemów równoległych

Architektury systemów równoległych Architektury systemów równoległych 1 Architektury systemów z pamięcią wspólną Architektury procesorów Procesory wielordzeniowe Procesory graficzne Akceleratory Procesory hybrydowe Architektury systemów

Bardziej szczegółowo

IPC: Kolejki komunikatów

IPC: Kolejki komunikatów IPC: Kolejki komunikatów Systemy Operacyjne 2 laboratorium Mateusz Hołenko 7 listopada 2011 Plan zajęć 1 Mechanizmy IPC kolejki komunikatów pamięć współdzielona semafory 2 Kolejki komunikatów kolejka komunikat

Bardziej szczegółowo

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

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

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists() Paweł Gmys PHP strona 1 Lekcja 10 Uprawnienia Aby skrypt PHP mógł odwołać się do pliku, musi mieć odpowiednie uprawnienia. Szczegóły są zależne od serwera. Najczęściej chyba skrypt ma uprawnienia takie,

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie w językach

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

Bardziej szczegółowo

51. Metody komunikacji nieblokującej.

51. Metody komunikacji nieblokującej. 51. Metody komunikacji nieblokującej. Funkcje nieblokujace różnia sie od wersji blokujacych przedrostkiem I (immediate) w nazwie oraz jednym dodatkowym argumentem: request, który jest używany do sprawdzenia,

Bardziej szczegółowo

Wprowadzenie. Dariusz Wawrzyniak 1

Wprowadzenie. Dariusz Wawrzyniak 1 Dariusz Wawrzyniak Politechnika Poznańska Instytut Informatyki ul. Piotrowo 2 (CW, pok. 5) 60-965 Poznań Dariusz.Wawrzyniak@cs.put.poznan.pl Dariusz.Wawrzyniak@put.edu.pl www.cs.put.poznan.pl/dwawrzyniak

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Przestrzenie nazw Standardowa biblioteka szablonów

Bardziej szczegółowo

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 Obliczenia równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 15 czerwca 2001 Spis treści Przedmowa............................................

Bardziej szczegółowo

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików 1 Pierwsze kroki w C++ cz.3 2 Obsługa plików Do pracy z plikami zewnętrznymi niezbędna będzie biblioteka fstream. Udostępnia ona programiście narzędzia do zapisu i odczytu plików. 2.1 Typ zmiennej fstream.

Bardziej szczegółowo

Argumenty wywołania programu, operacje na plikach

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

Bardziej szczegółowo

Pamięć współdzielona

Pamięć współdzielona Pamięć współdzielona Systemy Operacyjne 2 Piotr Zierhoffer 17 listopada 2011 Mechanizmy IPC IPC Inter Process Communication kolejki komunikatów, pamięć współdzielona semafory polecenia bash: ipcs, ipcrm

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1 Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij proces (int pid){ int stat; stat = kill(pid,

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych Wywoływanie procedur zdalnych Mechanizm wywołania main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces (int pid){ int stat; stat

Bardziej szczegółowo

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

Bardziej szczegółowo

76.Struktura oprogramowania rozproszonego.

76.Struktura oprogramowania rozproszonego. 76.Struktura oprogramowania rozproszonego. NajwaŜniejsze aspekty obiektowego programowania rozproszonego to: Współdziałanie (interoperability) modułów programowych na róŝnych maszynach. Wielokrotne wykorzystanie

Bardziej szczegółowo

Middleware wprowadzenie października 2010

Middleware wprowadzenie października 2010 Dariusz Wawrzyniak Politechnika Poznańska Instytut Informatyki ul. Piotrowo 2 (CW, pok. 5) 60-965 Poznań Dariusz.Wawrzyniak@cs.put.poznan.pl Dariusz.Wawrzyniak@put.edu.pl www.cs.put.poznan.pl/dwawrzyniak/middleware

Bardziej szczegółowo

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) W informatyce występują ściśle obok siebie dwa pojęcia: sprzęt (ang. hardware) i oprogramowanie

Bardziej szczegółowo

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1 Dariusz Wawrzyniak Politechnika Poznańska Instytut Informatyki ul. Piotrowo 2 (CW, pok. 5) 60-965 Poznań Dariusz.Wawrzyniak@cs.put.poznan.pl poznan pl Dariusz.Wawrzyniak@put.edu.pl www.cs.put.poznan.pl/dwawrzyniak/middleware

Bardziej szczegółowo

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak Laboratorium z systemów operacyjnych System plików - funkcje systemowe Anna Wojak 1 Zagadnienia do samodzielnego przygotowania: podstawowe polecenia linux, podstawy programowania w jezyku C, deskryptor

Bardziej szczegółowo

Weryfikacja oprogramowania, korzystajacego z MPI

Weryfikacja oprogramowania, korzystajacego z MPI Weryfikacja oprogramowania, korzystajacego z MPI Krzysztof Nozderko kn201076@students.mimuw.edu.pl 23 maja 2005 Wprowadzenie Równoległe obliczenia olbiczenia naukowców sa często bardzo kosztowne obliczeniowo

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej I NIC sieci Pamięć operacyjna Przerwania Przerwania

Bardziej szczegółowo

Kolejki FIFO (łącza nazwane)

Kolejki FIFO (łącza nazwane) Kolejki FIFO (łącza nazwane) Systemy Operacyjne 2 laboratorium Mateusz Hołenko 6 listopada 2011 Plan zajęć 1 Łącza w systemie Linux kolejki FIFO vs. potoki specyfika łączy nazwanych schemat komunikacji

Bardziej szczegółowo

Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C

Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C Wymagana wiedza wstępna: 1) Student musi 1) Znać język C 2) Znać zasady zarządzania pamięcią w komputerze 3) Znać pojecie wskaźnika

Bardziej szczegółowo

Pliki. Operacje na plikach w Pascalu

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

Bardziej szczegółowo

Lab 9 Podstawy Programowania

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

Bardziej szczegółowo

Równoległość i współbieżność

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

Bardziej szczegółowo

Równoległość i współbieżność

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

Bardziej szczegółowo

I - Microsoft Visual Studio C++

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

Bardziej szczegółowo

FAQ: 00000041/PL Data: 09/06/2012. Zastosowanie zmiennych Raw Data Type WinCC v7.0

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

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2014/15 Znajdowanie maksimum w zbiorze

Bardziej szczegółowo

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych B.1. Dostęp do urządzeń komunikacyjnych Sterowniki urządzeń zewnętrznych widziane są przez procesor jako zestawy rejestrów

Bardziej szczegółowo

Statyczne i dynamiczne predykaty

Statyczne i dynamiczne predykaty Statyczne i dynamiczne predykaty Dynamiczne dowodzą lub odwołują pewne reguły, Statyczne nie potrafią tego co dynamiczne, ponieważ ich punkty zostały zebrane w całość, która działa szybciej, ale nie jest

Bardziej szczegółowo

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład dr Artur Bartoszewski 1 Intencje Intencje (obok Aktywności) są jednym z podstawowych komponentów z których zbudowane są aplikacje systemu Android. Są one odpowiedzialne przede wszystkim za obsługę rozkazów

Bardziej szczegółowo

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

Architektura sieci połączeń między procesorami, sterowanie komunikacjami, biblioteki komunikacyjne Wykład 4 Architektura sieci połączeń między procesorami, sterowanie komunikacjami, biblioteki komunikacyjne Spis treści: 1. Statyczne sieci połączeń w systemach równoległych 2. Dynamiczne sieci połączeń

Bardziej szczegółowo

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych Mechanizm wywołania Wywoływanie procedur zdalnych main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) int zabij_proces (int pid){ int stat; stat = kill(pid,

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

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

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 11 Wejście - wyjście Urządzenia zewnętrzne Wyjściowe monitor drukarka Wejściowe klawiatura, mysz dyski, skanery Komunikacyjne karta sieciowa, modem Urządzenie zewnętrzne

Bardziej szczegółowo

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 5 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej sieci Pamięć operacyjna Przerwania Przerwania Przerwanie

Bardziej szczegółowo

2009-03-21. Paweł Skrobanek. C-3, pok. 321 e-mail: pawel.skrobanek@pwr.wroc.pl http://pawel.skrobanek.staff.iiar.pwr.wroc.pl

2009-03-21. Paweł Skrobanek. C-3, pok. 321 e-mail: pawel.skrobanek@pwr.wroc.pl http://pawel.skrobanek.staff.iiar.pwr.wroc.pl Wrocław 2007-09 SYSTEMY OPERACYJNE WYKLAD 2 Paweł Skrobanek C-3, pok. 321 e-mail: pawel.skrobanek@pwr.wroc.pl http://pawel.skrobanek.staff.iiar.pwr.wroc.pl 1 PLAN: 2. Usługi 3. Funkcje systemowe 4. Programy

Bardziej szczegółowo

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

Bardziej szczegółowo

Mechanizmy pracy równoległej. Jarosław Kuchta

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

Bardziej szczegółowo

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku System plików 1. Pojęcie pliku 2. Typy i struktury plików 3. etody dostępu do plików 4. Katalogi 5. Budowa systemu plików Pojęcie pliku (ang( ang. file)! Plik jest abstrakcyjnym obrazem informacji gromadzonej

Bardziej szczegółowo

Wprowadzenie do programowania i programowanie obiektowe

Wprowadzenie do programowania i programowanie obiektowe Wprowadzenie do programowania i programowanie obiektowe Wirtotechnologia Zajęcia nr 10 autor: Grzegorz Smyk Wydział Odlewnictwa Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza

Bardziej szczegółowo

Aplikacja Sieciowa wątki po stronie klienta

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami: Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie

Bardziej szczegółowo