Programowanie współbieżne Wykład 12 MPI c.d. Rafał Skinderowicz
|
|
- Roman Mazurek
- 5 lat temu
- Przeglądów:
Transkrypt
1 Programowanie współbieżne MPI c.d. Rafał Skinderowicz
2 Komunikacja grupowa Poprzednio rozważaliśmy komunikację między parami procesów synchroniczna (blokująca) np. MPI Recv, MPI Send asynchroniczna (nieblokująca) np. MPI Irecv, MPI Isend Często zachodzi konieczność wymiany komunikatów między wszystkimi procesami, na przykład: proces główny wysyła do pozostałych procesów dane do obliczeń rozgłaszanie (ang. broadcast) procesy po zakończeniu obliczeń muszą wysłać częściowe wyniki do procesu głównego gromadzenie (ang. gather) danych z wszystkich procesów tylko w jednym procesie każdy proces potrzebuje dane z wszystkich pozostałych procesów połączenie rozgłaszania z gromadzeniem
3 Komunikacja grupowa MPI udostępnia funkcje do wykonywania komunikacji między wszystkimi procesami wewnątrz komunikatora wygodniejsze w użyciu, niż komunikacja między parami procesów większa efektywność komunikacji niekoniecznie programu Komunikacja grupowa wymaga synchronizacji wszystkich procesów wszystkie procesy muszą osiągnąć ten sam punkt synchronizacji zanim będą mogły kontynuować punktem synchronizacji musi być we wszystkich procesach ta sama operacja (funkcja), by obliczenia mogły być kontynuowane w MPI 3.0 planowane jest dodanie funkcji nieblokujących (asynchronicznych) do komunikacji grupowej
4 MPI Barrier Do synchronizacji procesów w MPI służy funkcja: MPI Barrier(MPI Comm komunikator) Źródło: Jawna synchronizacja stosowana jest zazwyczaj do podziału wykonania programu na sekcje.
5 Rozgłaszanie Rozgłaszanie proces wysyła kopie danych do pozostałych procesów w obrębie komunikatora Źródło: Przydatne przy wysyłaniu przez proces główny parametrów obliczeń lub danych wejściowych do pozostałych procesów
6 MPI Bcast W MPI rozgłaszanie realizowane jest za pomocą funkcji: MPI Bcast(void *data, int count, MPI Datatype datatype, int root, MPI Comm comm) Zarówno proces nadawca, jak i procesy odbiorcy wywołują tę samą metodę, różnica jest w znaczeniu parametrów data w procesie nadawcy wsk. bufora z danymi do wysłania w procesie odbiorcy wsk. bufora na rozgłaszane dane count rozmiar danych do wysłania datatype typ wysyłanych danych, np. MPI DOUBLE root identyfikator (ranga) procesu rozgłaszającego comm komunikator, może być MPI COMM WORLD Wykonanie rozgłaszania powoduje niejawną synchronizację procesów
7 MPI Bcast uwagi Wykonanie funkcji MPI Bcast jest w przybliżeniu równoważne wykonaniu poniższej naiwnej implementacji: void my bcast(void* data, int count, MPI Datatype datatype, int root, MPI Comm comm) { int proc rank, proc num; MPI Comm rank(comm, &proc rank); MPI Comm size(comm, &proc num); if (proc rank == root) { // proces rozgłaszający for (int i = 0; i < proc num; i++) { if (i!= proc rank) { MPI Send(data, count, datatype, i, 0, communicator); } } } else { // proces odbiorca, odbierz dane od nadawcy (root) MPI Recv(data, count, datatype, root, 0, communicator, MPI STATUS IGNORE); } }
8 MPI Bcast uwagi Przedstawiona implementacja jest bardzo nieefektywna dla n procesów proces nadawca musi wysłać n 1 komunikatów Na szczęście można zrobić to znacznie szybciej, zgodnie z porządkiem drzewiastym Źródło: Teraz pojedynczy proces musi wysłać, co najwyżej O(log n) komunikatów
9 MPI Bcast przykład Rozgłaszanie dla macierzy dynamicznej najłatwiej wykonać umieszczając ją w spójnym obszarze pamięci. const int N = 10; int *bufor = new int[n*n]; if (proc id == 0) { int **m = new int*[n]; // inicjuj macierz for (int i = 0; i < N; i++) { m[i] = bufor + i * N; for (int j = 0; j < N; j++) m[i][j] = (i+1) * (j+1); // przykł. zawartość } } MPI Bcast(bufor, N*N, MPI INT, 0, MPI COMM WORLD); if (proc id!= 0) { int **m = new int*[n]; // poskładaj macierz for (int i = 0; i < N; i++) m[i] = bufor + i * N; // teraz można wykonywać operacje na elementach m[i][j] }
10 Źródło: MPI Scatter Czasem zachodzi potrzeba wysłania do wszystkich procesów różnych porcji danych tego samego rodzaju, np. wierszy macierzy służy do tego funkcja MPI Scatter
11 MPI Scatter efektywność Scatter 1 4*p Krok *p 2*p Krok p p p p Krok Krok 3. Źródło: MIT OpenCourseWare Podobnie jak MPI Bcast operacja MPI Scatter wykonywana jest efektywnie, tak by zaangażować w rozsyłanie danych jak najwięcej procesów.
12 Źródło: MPI Gather Odwrotnością funkcji MPI Scatter jest funkcja MPI Gather, która polega na zebraniu przez jeden proces danych od pozostałych procesów
13 MPI Allgather Jeżeli każdy proces ma uzyskać dostęp do danych wszystkich procesów, to odpowiednią metodą jest MPI Allgather Źródło:
14 Operacje redukcji MPI udostępnia możliwość efektywnego wykonywania operacji redukcji, tj. łącznej operacji dwuargumentowej na zbiorze danych rozproszonych między procesami w komunikatorze: MPI Reduce(void *sendbuf, void *recvbuf, int count, MPI Datatype datatype, MPI Op op, int root, MPI Comm comm) Zdefiniowane są następujące rodzaje operacji (MPI Op): MPI MAX, MPI MIN, MPI MAXLOC, MPI MINLOC MPI SUM, MPI PROD MPI LAND, MPI BAND, MPI LOR, MPI BOR, MPI LXOR, MPI BXOR MPI MINLOC i MPI MAXLOC zwracają odpowiednio minimaklną i maksymalną wartość odraz indeks (rangę) procesu, który je posiada
15 MPI Reduce Prosty przykład sumowania liczb: Źródło:
16 MPI Reduce W ogólnym przypadku zadana operacja wykonywana jest na wszystkich elementach podanych tablic. Przed MPI_Reduce inbuf result a b c d e f g h i j k l m n o Po MPI_Reduce a b c d e f g h i j k l m n o root = 1 m oznacza wykonywaną operację Źródło: MIT OpenCourseWare Analogicznie do operacji rozgłaszania, wykonanie redukcji wymaga O(log n) etapów komunikacji
17 Przykład zliczanie liczb pierwszych int n, proc id, proc num; MPI Comm size(mpi COMM WORLD,&proc num); MPI Comm rank(mpi COMM WORLD,&proc id); if (proc id == 0) printf("podaj n: "); scanf("%d",&n); MPI Bcast(&n, 1, MPI INT, 0, MPI COMM WORLD); double start = MPI Wtime(); int sum = proc id == 0? 1 : 0; for (int i = 2*(proc id + 1)+1; i <= n; i += 2*proc num) { if (is prime(i)) sum++; } double koniec = MPI Wtime(); int wynik = 0; MPI Reduce(&sum, &wynik, 1, MPI INT, MPI SUM, 0, MPI COMM WORLD); if (proc id == 0) { printf("jest %d liczb pierwszych <= %d", wynik, n); printf("czas obliczen: %.2lf sek.", koniec - start); }
18 MPI Allreduce Możliwe jest również wykonywanie operacji redukcji dla wszystkich procesów jednocześnie za pomocą: MPI Allreduce(void *sendbuf, void *recvbuff, int count, MPI Datatype datatype, MPI Op op, MPI Comm comm) Przed MPI_Allreduce inbuf result a b c d e f g h i j k l m n o Po MPI_Allreduce a b c d e f g h i j k l m n o m oznacza wykonywaną operację Źródło: MIT OpenCourseWare
19 MPI Reduce scatter Jak nazwa wskazuje polega na wykonaniu: operacji redukcji na tablicach (wektorach) wszystkich procesów w komunikatorze (reduce) rezultat dzielony jest na rozłączne fragmenty rozsyłane do poszczególnych procesów (scatter)
20 MPI Alltoall Ciekawą operacją jest MPI Alltoall, która polega na wysłaniu przez każdy proces unikalnej porcji danych do wszystkich pozostałych procesów n(n 1) operacji wysyłania komunikatów Źródło:
21 Operacje prefiksowe Operacje prefiksowe realizowane są przez funkcję MPI Scan(void *sendbuf, void *recvbuf, int count, MPI Datatype type, MPI Op op, MPI Comm comm) Polegają na wykonaniu częściowej redukcji Proces i otrzymuje wynik redukcji dla danych procesów o indeksach (rangach) od 0 do i Proces o najwyższej randze ma wynik dla wszystkich danych Funkcja obsługuje takie operatory, jak MPI Reduce
22 MPI Scan przykład Źródło:
23 Trwała komunikacja W przypadku częstej komunikacji, np. w pętli, można uniknąć narzutu czasowego związanego z inicjowaniem operacji komunikacji za pomocą utworzenia trwałego żądania komunikacyjnego (ang. persistent communication request) półkanał komunikacyjny Oszczędność wynika z przypisania parametrów operacji na stałe do żądania MPI Send init(buf, count, datatype, dest, tag, comm, request) tworzy trwałe żądanie wysłania MPI Recv init(buf, count, datatype, source, tag, comm, request) tworzy trwałe żądanie odbierania Parameter request pełni podobną rolę jak w operacjach MPI Irecv oraz MPI Isend
24 Trwała komunikacja scenariusz zastosowania 1. Utworzenie trwałego żądania za pomocą MPI Send init lub MPI Recv init 2. Zainicjowanie operacji wysłania / odbioru za pomocą MPI Start 3. Czekanie na zakończenie zainicjowanej operacji za pomocą MPI Wait lub MPI Waitall 4. Usunięcie żądania za pomocą MPI Request free Kroki 2. i 3. powtarzane są tyle razy, ile komunikatów ma zostać wysłanych / odebranych
25 Trwała komunikacja przykład MPI Request req[2]; MPI Recv init(buf1, count,type,src,tag,comm,&req[0]); MPI Send init(buf2, count,type,src,tag,comm,&req[1]); const int N = ; for (i=1; i < N; i++) { MPI Start(&req[0]); MPI Start(&req[1]); MPI Waitall(2,req,status); obliczenia(buf1, buf2); } MPI Request free(&req[0]); MPI Request free(&req[1]);
26 Definiowanie nowych typów danych Typy danych zdefiniowane w MPI pozwalają na łatwą wymianę tablic złożonych z elementów jednego z podstawowych typów, np. MPI INT W programach często zachodzi konieczność wymiany złożonych danych różnego typu 1. Można wysyłać kolejno składowe w osobnych operacjach niewygodne i wolne 2. Można zdefiniować własny typ dla przesyłanych danych znacznie wygodniejsze 3. Można stosować pakowanie i rozpakowywanie do i z bufora
27 Definiowanie nowych typów danych c.d. MPI udostępnia funkcje umożliwiające zdefiniowanie nowych typów danych należących do jednej z kategorii: Elementarne typy danych zdefiniowane w języku programowania Ciągłe tablice Wektory tablice, w których kolejne elementy oddzielone są separatorem o określonym rozmiarze Indeksowane podobnie jak wektor, ale adresy kolejnych elementów podawane są jawnie Strukturalne najbardziej ogólne, umożliwia przesyłanie struktur (struct) z języka C
28 Definiowanie nowych typów danych c.d. blklen =2 count = 3 elementy stride=5, el. wektora zajmuje 5 jednostek Wektor (z separatorami) v_blk_len[0]=3 v_blk_len[1]=2 v_blk_len[2]=1 count = 3 bloki v_disp[0]=0 v_disp[1]=5 w elementach v_disp[1]=12 T. indeksowany v_blk_len[0]=2 v_blk_len[1]=3 v_blk_len[2]=4 count = 3 bloki type[0] type[1] type[2] v_disp[0] v_disp[1] w bajtach v_disp[2] Strukturalny
29 Definiowanie nowych typów przykład typedef struct { float wartosc; char id; } Pomiar; int v blk len[2] = { 1, 1 }; // dł. bloków MPI Datatype v types[2] = { MPI FLOAT, MPI CHAR }; Pomiar pom; // ustal adresy kolejnych pól struktury MPI Aint v addr[3]; MPI Address(&pom, &v addr[0]); MPI Address(&(pom.wartosc), &v addr[1]); MPI Address(&(pom.id), &v addr[2]); // na ich podstawie wyznacz przesunięcia pól MPI Aint v disp[2] = { v addr[1] - v addr[0], v addr[2] - v addr[1] }; // zdefiniuj typ MPI Datatype pomiar type; MPI Type struct(2, v blk len, v disp, v types, &pomiar type); MPI Type commit(&pomiar type);
30 Definiowanie nowych typów przykład, c.d. const int N = 10; Pomiar pomiary[n]; if (proc id == 0) { for (int i = 0; i < N; ++i) { pomiary[i].wartosc = 1 + i; pomiary[i].id = A + i; } } MPI Bcast(pomiary, N, pomiar type, 0, MPI COMM WORLD); if (proc id!= 0) { for (int i = 0; i < N; i++) { cout << pomiary[i].wartosc << ", " << pomiary[i].id << endl; } }
31 Grupowanie danych Definiowanie własnych typów danych wymaga dodatkowego nakładu pracy, który warto ponieść w przypadku częstej wymiany komunikatów o tej samej strukturze W przypadku, gdy wymiana danych złożonych pojawia się w jednym miejscu programu można skorzystać z możliwości przesyłania danych zgrupowanych (spakowanych) Wszystkie dane muszą zostać zapisane w ciągłym obszarze pamięci
32 Grupowanie danych funkcje int MPI Pack(void *pack data, int in count, MPI Datatype datatype, void *buffer, int size, int *position ptr, MPI Comm comm) Bufor pack data powinien zawierać in count elementów typu datatype. Parametr position ptr zawiera adres początkowy w buforze wyjściowym buffer i po wykonaniu funkcji jego wartość jest uaktualniana (dodawana jest długość zapisanych danych) Parametr size określa rozmiar obszaru pamięci wskazywanego przez buffer. int MPI Unpack(void buffer, int size, int position ptr, void *unpack data, int count, MPI Datatype datatype, MPI Comm comm) Funkcja rozpakowuje count elementów typu datatype ze zmiennej buffer począwszy od pozycji position do obszaru pamięci wskazywanego przez unpack data i odpowiednio uaktualnia zmienną position.
33 Grupowanie danych przykład float a, b; int l; char buffer[100]; int pos; // Proces wysyłający dane pos=0; MPI Pack(&a, 1, MPI FLOAT, buffer, 100, &pos, MPI COMM WORLD); MPI Pack(&b, 1, MPI FLOAT, buffer, 100, &pos, MPI COMM WORLD); MPI Pack(&l, 1, MPI INT, buffer, 100, &pos, MPI COMM WORLD); MPI Bcast(buffer, 100, MPI PACKED, root, MPI COMM WORLD);... // Proces odbierający dane MPI Bcast(buffer, 100, MPI PACKED, root, MPI COMM WORLD); pos=0; MPI Unpack(buffer, 100, &pos, &a, 1, MPI FLOAT, MPI COMM WORLD); MPI Unpack(buffer, 100, &pos, &b, 1, MPI FLOAT, MPI COMM WORLD); MPI Unpack(buffer, 100, &pos, &l, 1, MPI INT, MPI COMM WORLD);
34 Równoległe I/O MPI udostępnia również szereg funkcji do wykonywania operacji wejścia/wyjścia w sposób równoległy (i rozproszony) Program może jednocześnie zapisywać i odczytywać dany plik za pośrednictwem funkcji MPI-IO Wymaga równoległego systemu plików (ang. parallel file system) modułowy, rozproszony; Przykłady: Lustre, IBM GPFS, PanFS Alternatywy dla MPI-IO: Wyznaczony proces zajmuje się odczytem / zapisem do pliku i rozsyłaniem oraz gromadzeniem danych Każdy proces korzysta z odrębnego pliku
35 Równoległe I/O c.d. Funkcje do obsługi I/O zostały zaimplementowane dopiero w MPI 2.0 Zalety równoległego I/O, to: zwiększona wydajność zunifikowany dostęp do plików, podobnie jak w przypadku programu sekwencyjnego ułatwia przetwarzanie plików z wynikami obliczeń Stosowanie sekwencyjnego I/O wymaga dodatkowo kopiowania plików między węzłami obliczeniowymi każdy proces zapisuje do lokalnego systemu plików MPI-IO udostępnia mechanizmy do: synchronizacji plików między serwerami oraz ich kopiowania nieciągłego sposobu wykonywania operacji na pliku za pomocą widoków (ang. file views)
36 Równoległe I/O przykład MPI File fh; MPI Status status; MPI Comm rank(mpi COMM WORLD, &rank); MPI Comm size(mpi COMM WORLD, &nprocs); bufsize = FILESIZE/nprocs; nints = bufsize/sizeof(int); MPI File open(mpi COMM WORLD, "/home/datafile", MPI MODE RDONLY, MPI INFO NULL, &fh); MPI File seek( fh, rank*bufsize, MPI SEEK SET); MPI File read( fh, buf, nints, MPI INT, &status); MPI File close(&fh);
37 Równoległe I/O File View etype = MPI_DOUBLE_PRECISION Przykład dla 4 proc. przesunięcia Ten sam widok (View) we wszystkich procesach, ale różne przesunięcia proc0 proc 1 proc 2 proc 3 Plik na dysku
38 Równoległe I/O File View #define N 100 // nowy typ danych - tablicowy MPI Datatype arraytype; MPI Offset disp; MPI Type contiguous(n, MPI INT, &arraytype); MPI Type commit(&arraytype); disp = rank * sizeof(int) * N; // przesunięcie etype = MPI INT; MPI File open(mpi COMM WORLD, "/home/datafile", MPI MODE CREATE MPI MODE RDWR, MPI INFO NULL, &fh); MPI File set view(fh, disp, MPI INT, arraytype, "native", MPI INFO NULL); MPI File write( fh, buf, N, MPI INT, MPI STATUS IGNORE);
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ć
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
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,
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,
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
Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla
Tryby komunikacji między procesami w standardzie Message Passing Interface Piotr Stasiak 171011 Krzysztof Materla 171065 Wstęp MPI to standard przesyłania wiadomości (komunikatów) pomiędzy procesami programów
Programowanie Równoległe Wykład 4. MPI - Message Passing Interface. Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład 4 MPI - Message Passing Interface Maciej Matyka Instytut Fizyki Teoretycznej Jak używać w MPI? Donald Knuth: We should forget about small efficiencies, say about 97% of
Programowanie współbieżne Wykład 11 Wprowdzenie do MPI. Rafał Skinderowicz
Programowanie współbieżne Wykład 11 Wprowdzenie do MPI Rafał Skinderowicz Programowanie dla modelu z rozproszoną pamiecią Niezależne strumienie instrukcji wykonywane na (być może) oddalonych fizycznie
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
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...
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ść
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
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.
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
Jak wygląda praca na klastrze
Jak wygląda praca na klastrze Upraszczając nieco sprawę można powiedzieć, że klaster to dużo niezależnych komputerów (jednostek) połączonych mniej lub bardziej sprawną siecią. Często poszczególne jednostki
tablica: dane_liczbowe
TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica
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
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 2013/14 Znajdowanie maksimum w zbiorze
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
5. Model komunikujących się procesów, komunikaty
Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć
Programowanie współbieżne... (12) Andrzej Baran 2010/11
Programowanie współbieżne... (12) Andrzej Baran 2010/11 LINK: http://kft.umcs.lublin.pl/baran/prir/index.html Dekompozycja danych. Wejście. rank 0 rank 1 rank 2 A B C A B C A B C indata indata indata wejście
Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010
Algorytmy równoległe Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka Znajdowanie maksimum w zbiorze n liczb węzły - maksimum liczb głębokość = 3 praca = 4++ = 7 (operacji) n - liczność
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
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
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część dziesiąta Rekordy w C/C++ struktury Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera skrót
Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński
Języki programowania Część siódma Przetwarzanie plików amorficznych Konwencja języka C Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie
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
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
Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012
Projektowanie algorytmów równoległych Zbigniew Koza Wrocław 2012 Spis reści Zadniowo-kanałowy (task-channel) model algorytmów równoległych Projektowanie algorytmów równoległych metodą PACM Task-channel
TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;
Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst
Interfejs MPI. Maciej Kasperski, Rafał Kozik. 16 kwietnia 2008
16 kwietnia 2008 Wprowadzenie Co to jest MPI? Plan prezentacji: co to jest MPI? komunikatory i grupy procesów; przesyłanie komunikatów; komunikacja kolektywna; wirtualne topologie;. Co to jest MPI? Wstęp
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.
Struktury. Przykład W8_1
Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla
Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:
Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja
Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych
Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2018/19 Problem: znajdowanie
Wskaźniki. Programowanie Proceduralne 1
Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres
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ę
Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie Krzysztof Banaś Podstawy programowania 1 są sposobem na przechowywanie w ramach pojedynczej zmiennej zestawu zmiennych różnych typów,
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część jedenasta Przetwarzanie plików amorficznych Konwencja języka C Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie
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
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 8 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Podział kodu programu Struktury definiowanie struktur
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
Pliki. Informacje ogólne. Obsługa plików w języku C
Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego
Stałe, tablice dynamiczne i wielowymiarowe
Stałe, tablice dynamiczne i wielowymiarowe tylko do odczytu STAŁE - CONST tablice: const int dni_miesiaca[12]=31,28,31,30,31,30,31,31,30,31,30,31; const słowo kluczowe const sprawia, że wartość zmiennej
Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 8 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Podział kodu programu Struktury definiowanie struktur
external Data Representation
Remote Procedure Call external Data Representation Opis standardu RFC 1014 Kanoniczna reprezentacja danych oparta na formacie IEEE Deklaratywny język opisu struktur danych (zbliżony do języka C) Koncepcja
Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.
Przygotować program tworzący tablicę dwuwymiarową zawierającą zestawy 10 2, 10 4, 10 6 liczb losowych zmiennoprzecinkowych. Korzystając z funkcji bibliotecznych uporządkować zawartość każdego (a) wiersza
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to
Warstwy oprogramowania wejścia/wyjścia
Warstwy oprogramowania wejścia/wyjścia 1 Programy użytkownika Rosnący poziom abstrakcji Oprogramowanie systemowe niezależne od urządzenia Sterowniki urządzeń Procedury obsługi przerwań Sprzęt Funkcje sterownika
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
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
PARADYGMATY PROGRAMOWANIA Wykład 3
PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na
System plików warstwa fizyczna
System plików warstwa fizyczna Dariusz Wawrzyniak Przydział miejsca na dysku Przydział ciągły (ang. contiguous allocation) cały plik zajmuje ciąg kolejnych bloków Przydział listowy (łańcuchowy, ang. linked
System plików warstwa fizyczna
System plików warstwa fizyczna Dariusz Wawrzyniak Plan wykładu Przydział miejsca na dysku Zarządzanie wolną przestrzenią Implementacja katalogu Przechowywanie podręczne Integralność systemu plików Semantyka
System plików warstwa fizyczna
System plików warstwa fizyczna Dariusz Wawrzyniak Przydział miejsca na dysku Zarządzanie wolną przestrzenią Implementacja katalogu Przechowywanie podręczne Integralność systemu plików Semantyka spójności
Język C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
Biblioteka standardowa - operacje wejścia/wyjścia
Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline
Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe. 1. Wektory i macierze: a. Przykład
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
DYNAMICZNE PRZYDZIELANIE PAMIECI
DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne
typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury
typy złożone- tablice wielowymiarowe, struktury Wykład 6 Deklarowanie wskaźników nazwa_typu * nazwa_wskaznika; WSKAŹNIKI: PRZYPOMNIENIE Przypisywanie wskaźnikom wartości double * pn = &zmienna_typu_double;
Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
Opis protokołu RPC. Grzegorz Maj nr indeksu:
Opis protokołu RPC Grzegorz Maj nr indeksu: 236095 1 Streszczenie Niniejszy dokument opisuje specyfikację protokołu RQP (Remote Queues Protocol). W jego skład wchodzą: opis celów protokołu; opis założeń
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
Obliczenia rozproszone z wykorzystaniem MPI
Obliczenia rozproszone z wykorzystaniem Zarys wst u do podstaw :) Zak lad Metod Obliczeniowych Chemii UJ 8 sierpnia 2005 1 e konkretniej Jak szybko, i czemu tak wolno? 2 e szczegó lów 3 Dyspozytor Macierz
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,
Programowanie w języku C++
Programowanie w języku C++ Część dziewiąta Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Wykład 5: Klasy cz. 3
Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu
Programowanie i struktury danych
Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne
Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17
Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8
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
Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:
Laboratorium nr 9 Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium: wskaźniki referencje zastosowanie wskaźników wobec tablic dynamiczny przydział pamięci,
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
// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.
Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy
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
Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:
5 Tablice Tablica jest zestawem obiektów (zmiennych) tego samego typu, do których można się odwołać za pomocą wspólnej nazwy. Obiekty składowe tablicy noszą nazwę elementów tablicy. Dostęp do nich jest
Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie
main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!
Funkcja wysoce niezależny blok definicji i instrukcji programu (podprogram) Każdy program napisany w języku C/C++ zawiera przynajmniej jedną funkcję o predefiniowanej nazwie: main( ). Najczęściej wykorzystuje
Dynamiczne struktury danych
Dynamiczne struktury danych 391 Dynamiczne struktury danych Przez dynamiczne struktury danych rozumiemy proste i złożone struktury danych, którym pamięć jest przydzielana i zwalniana na żądanie w trakcie
> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki
> C++ dynamiczna alokacja/rezerwacja/przydział pamięci Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1429536600 > Dzisiejsze zajęcia sponsorują słówka: new oraz delete
Język C, tablice i funkcje (laboratorium)
Język C, tablice i funkcje (laboratorium) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.
Metody Metody, parametry, zwracanie wartości
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca
Wykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Tablice (jedno i wielowymiarowe), łańcuchy znaków
Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie
Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
ZASADY PROGRAMOWANIA KOMPUTERÓW
POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.
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:
Miary Wydajności. Efektywność programu równoległego (E) jest definiowana jako stosunek przyśpieszenia do liczby procesorów
Miary Wydajności Czas wykonania równoległego (Tpar) jest czasem pomiędzy momentem rozpoczęcia obliczeń do momentu gdy ostatni procesor zakończy obliczenia Przyspieszenie (S) jest definiowane jako stosunek
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część dziesiąta Rekordy w C/C++ struktury Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,
Programowanie 2. Język C++. Wykład 3.
3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane
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
Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).
Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154
Zmienne i struktury dynamiczne
Zmienne i struktury dynamiczne Zmienne dynamiczne są to zmienne, które tworzymy w trakcie działania programu za pomocą operatora new. Usuwa się je operatorem delete. Czas ich występowania w programie jest
referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.
Programowanie (język C++) referencje Wykład 2. Referencje (1) Referencja (odnośnik) jest zmienną identyfikującą inną zmienną. Wykonanie operacji na referencji ma taki sam skutek, jak wykonanie tejŝe operacji
Programowanie obiektowe W3
Programowanie obiektowe W3 Przegląd typów strukturalnych w C++ : tablice statyczne i dynamiczne Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki Typy złożone: tablice
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