Programowanie aplikacji równoległych i rozproszonych. Wykład 8
|
|
- Bogusław Murawski
- 6 lat temu
- Przeglądów:
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 MPI dynamiczne zarządzanie procesami MPI 2 umożliwia dynamiczne zarządzanie procesami, choć
Bardziej szczegółowoPlan 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ółowoRozszerzenia MPI-2 1
Rozszerzenia MPI-2 1 2 Dynamiczne tworzenie procesów Aplikacja MPI 1 jest statyczna z natury Liczba procesów określana jest przy starcie aplikacji i się nie zmienia. Gwarantuje to szybką komunikację procesów.
Bardziej szczegółowoProgramowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1
Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1 Środowisko przesyłania komunikatów MPI Rodzaje procedur: blokujące nieblokujące Tryby przesyłania
Bardziej szczegółowoProgramowanie Równoległe Wykład 4. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład 4 MPI - Message Passing Interface Maciej Matyka Instytut Fizyki Teoretycznej Jak używać w MPI? Donald Knuth: We should forget about small efficiencies, say about 97% of
Bardziej szczegółowoOperacje grupowego przesyłania komunikatów. Krzysztof Banaś Obliczenia równoległe 1
Operacje grupowego przesyłania komunikatów Krzysztof Banaś Obliczenia równoległe 1 Operacje grupowego przesyłania komunikatów Operacje, w ramach których ten sam komunikat lub zbiór komunikatów przesyłany
Bardziej szczegółowoProgramowanie 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ółowoProgramowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1
Programowanie w modelu przesyłania komunikatów specyfikacja MPI Krzysztof Banaś Obliczenia równoległe 1 Środowisko przesyłania komunikatów MPI Rodzaje procedur: blokujące nieblokujące Tryby przesyłania
Bardziej szczegółowoTryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla
Tryby komunikacji między procesami w standardzie Message Passing Interface Piotr Stasiak 171011 Krzysztof Materla 171065 Wstęp MPI to standard przesyłania wiadomości (komunikatów) pomiędzy procesami programów
Bardziej szczegółowoŁagodne wprowadzenie do Message Passing Interface (MPI)
Łagodne wprowadzenie do Message Passing Interface (MPI) Szymon Łukasik Zakład Automatyki PK szymonl@pk.edu.pl Szymon Łukasik, 8 listopada 2006 Łagodne wprowadzenie do MPI - p. 1/48 Czym jest MPI? Własności
Bardziej szczegółowoOperacje grupowego przesyłania komunikatów
Operacje grupowego przesyłania komunikatów 1 Operacje grupowego przesyłania komunikatów Operacje, w ramach których ten sam komunikat lub zbiór komunikatów przesyłany jest pomiędzy więcej niż dwoma procesami
Bardziej szczegółowoProgramowanie w modelu przesyłania komunikatów specyfikacja MPI. Krzysztof Banaś Obliczenia równoległe 1
Programowanie w modelu przesyłania komunikatów specyfikacja MPI Krzysztof Banaś Obliczenia równoległe 1 Model przesyłania komunikatów Paradygmat send receive wysyłanie komunikatu: send( cel, identyfikator_komunikatu,
Bardziej szczegółowoModele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak dla PR PP
Modele programowania równoległego Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak dla PR PP MPP - Cechy charakterystyczne 1 Prywatna, wyłączna przestrzeń adresowa.
Bardziej szczegółowoModele programowania równoległego. Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak
Modele programowania równoległego Programowanie z przekazywaniem komunikatów Message-Passing Programming Rafał Walkowiak MPP - Cechy charakterystyczne 1 Prywatna - wyłączna przestrzeń adresowa. Równoległość
Bardziej szczegółowoProgramowanie współbieżne i rozproszone
Programowanie współbieżne i rozproszone WYKŁAD 2 Jan Kazimirski 1 MPI 1/2 2 Dlaczego klastry komputerowe? Wzrost mocy obliczeniowej jednego jest coraz trudniejszy do uzyskania. Koszt dodatkowej mocy obliczeniowej
Bardziej szczegółowoMPI 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ółowoMessage Passing Interface
Message Passing Interface Interfejs programowania definiujący powiązania z językami C, C++, Fortran Standaryzacja (de facto) i rozszerzenie wcześniejszych rozwiązań dla programowania z przesyłaniem komunikatów
Bardziej szczegółowoWstę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ółowo61 Topologie wirtualne
61 Topologie wirtualne pozwalają opisać dystrybucję procesów w przestrzeni z uwzględnieniem struktury komunikowania się procesów aplikacji między sobą, umożliwiają łatwą odpowiedź na pytanie: kto jest
Bardziej szczegółowoLaboratorium 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ółowoProgramowanie współbieżne... (4) Andrzej Baran 2010/11
Programowanie współbieżne... (4) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html Przykład Zaczniemy od znanego już przykładu: Iloczyn skalarny różne modele Programowanie współbieżne...
Bardziej szczegółowoOperacje 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ółowoProgramowanie 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ółowoProgramowanie 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ółowoWprowadzenie 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ółowoPliki. 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ółowoAlgorytmy i Struktury Danych
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 12: Wstęp
Bardziej szczegółowoWykł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ółowoProgramowanie 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ółowohttp://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ółowoProgramowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz
Programowanie równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 23 października 2009 Spis treści Przedmowa...................................................
Bardziej szczegółowoOprogramowanie 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ółowoObsł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ółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoWskaź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ółowoOprogramowanie 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ółowoWstę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ółowoZdalne 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ółowoPROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec
PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych
Bardziej szczegółowoKlient-Serwer Komunikacja przy pomocy gniazd
II Klient-Serwer Komunikacja przy pomocy gniazd Gniazda pozwalają na efektywną wymianę danych pomiędzy procesami w systemie rozproszonym. Proces klienta Proces serwera gniazdko gniazdko protokół transportu
Bardziej szczegółowoZdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1
Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int
Bardziej szczegółowoSystem 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ółowo5. 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ółowoRPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )
III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego
Bardziej szczegółowoTworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1
Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1 Metodologia programowania równoległego Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje (functional
Bardziej szczegółowoZdalne wywoływanie procedur RPC
Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces
Bardziej szczegółowoZdalne wywoływanie procedur RPC
Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int
Bardziej szczegółowoArchitektury 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ółowoIPC: 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ółowoWątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego
Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować
Bardziej szczegółowoCzęść 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ółowoLekcja 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ółowoPodstawy 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ółowoProgramowanie 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ółowo51. 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ółowoWprowadzenie. 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ółowoTechniki 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ółowoObliczenia 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ółowo1 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ółowoArgumenty 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ółowoPamięć 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ółowoTworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1
Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie
Bardziej szczegółowoZdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1
Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij proces (int pid){ int stat; stat = kill(pid,
Bardziej szczegółowoDariusz 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ółowoWywoł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ółowoProcesy 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ółowo76.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ółowoMiddleware 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ółowoSYSTEMY 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ółowoMiddleware 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ółowoLaboratorium 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ółowoWeryfikacja 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ółowoDział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ółowoKolejki 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ółowoTemat 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ółowoPliki. 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ółowoLab 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ółowoRó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ółowoRó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ółowoI - 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ółowoFAQ: 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ółowoWykł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ółowoAlgorytmy 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ółowoDodatek 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ółowoStatyczne 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ółowodr 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ółowoArchitektura 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ółowoWywoł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ółowoJĘ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ółowoArchitektura 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ółowoMateriał. 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ółowoDział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ółowo2009-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ółowoPodstawy 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ółowoMechanizmy 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ółowoang. 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ółowoWprowadzenie 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ółowoAplikacja Sieciowa wątki po stronie klienta
Aplikacja Sieciowa wątki po stronie klienta Na ostatnich zajęciach zajmowaliśmy się komunikacją pomiędzy klientem a serwerem. Wynikiem naszej pracy był program klienta, który za pomocą serwera mógł się
Bardziej szczegółowoTworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1
Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie
Bardziej szczegółowoWskaź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