Open MP. Rafał Walkowiak Instytut Informatyki Politechniki Poznańskie Jesień 2011
|
|
- Mikołaj Romanowski
- 7 lat temu
- Przeglądów:
Transkrypt
1 Open MP wersja 2.5 Rafał Walkowiak Instytut Informatyki Politechniki Poznańskie Jesień 2011
2 OpenMP standard specyfikacji przetwarzania współbieŝnego uniwersalny (przenośny) model równoległości typu fork-join (rozgałęzienie - połączenie) dla architektur z pamięcią współdzieloną przetwarzanie rozpoczyna się od jednego wątku przetwarzania regiony współbieŝne (parallel regions) wymagają powstania nowych wątków wątki łączą się (bariera synchronizacyjna) przy końcu regionu współbieŝnego określona pamięć dostępna dla wszystkich wątków (współdzielona) dla systemów SMP (ang. Symmetrical Multi Processor ) systemy z pamięć współdzieloną, danymi lokalnymi lub współdzielonymi procesów implementowany w większości platform obliczeniowych dostarczany w postaci API Open MP 2
3 OpenMP pamięć współdzielona Obliczenia z uŝyciem wielu procesorów: procesor posiada obszar pamięci lokalnej, procesor ma dostęp do pamięci współdzielonej z innymi procesorami; Synchronizacja niezbędna do: zapewnienia integralności (powiązań) programu równoległego, zapobieŝenia potencjalnie niebezpiecznym dostępom do pamięci np. nadpisanie wyniku, brak danej itp. synchronizacji wybranych zdarzeń przetwarzania, globalnej synchronizacji - bariera synchronizacyjna. 3
4 Poziomy równoległości w OpenMP wysoki poziom równoległości przetwarzania - program podzielony na segmenty, które mogą być realizowane współbieŝnie, niski poziom równoległości przetwarzania - współbieŝna realizacja przez róŝne wątki iteracji pętli (potencjalnie współbieŝnie przez róŝne procesory) bariera stosowana do ponownego zsynchronizowania wątków na końcu przetwarzania bloku współbieŝnego; Open MP 4
5 Poziomy równoległości OpenMP Początek sekcji równoległej Początek równoległej pętli for i=10 W1 W2 W3 Zadania realizowane przez wątki i=1 koniec koniec Open MP 5
6 Projektowanie przetwarzania w Open MP Dyrektywy dla kompilatora: #pragma omp nazwa_dyrektywy klauzule Funkcje biblioteki czasu wykonania określenie/poznanie liczby wątków poznanie numeru wątku poznanie liczby wykorzystywanych procesorów funkcje blokady Open MP 6
7 Projektowanie przetwarzania w OpenMP Sterowanie wykonaniem parallel, for, sections, single, master (dyrektywy) Specyfikacja danych shared, private, reduction Synchronizacja wbudowana na początku i końcu obszarów kodu podlegającym dyrektywom sterującym, specyfikacja wprost zastosowanie dyrektyw: barrier, critical, atomic, flush, ordered; Open MP 7
8 Dyrektywy sterujące przetwarzaniem (1) parallel dyrektywa definiująca współbieŝnie realizowany fragment kodu - wszystkie wątki realizują ten kod, dotyczy bloku strukturalnego (jedno wejście, jedno wyjście) następującego bezpośrednio po dyrektywie for dyrektywa definiująca realizowany z podziałem pracy fragment kodu pętlę - kaŝda iteracja wykonywana raz - potencjalnie równolegle z innymi iteracjami np. realizowanymi przez inne wątki na innych procesorach. sections, section sections definiuje początek zbioru bloków kodu (oznaczanych section) realizowanych kaŝdy jednokrotnie przez jeden z wątków ze zbioru aktywnych wątków (potencjalnie współbieŝnie) Open MP 8
9 Dyrektywy sterujące przetwarzaniem (2) single dyrektywa definiująca blok kodu realizowany jednokrotnie przez dowolny wątek, przy zakończeniu realizacji bloku bariera synchronizacyjna, master dyrektywa definiująca blok kodu realizowany jednokrotnie przez wątek główny, bez bariery synchronizacyjnej, parallel for fragment kodu realizowany współbieŝnie będący jednym blokiem for, parallel sections fragment kodu realizowany współbieŝnie będący jednym blokiem sections Open MP 9
10 Dyrektywy sterujące przetwarzaniem (3) #pragma omp parallel s1 s1 s1 s2 s2 s2 s2 s2 s2 { s1(...); for (i =1; i<3, i++) s2(...); } //zakładamy, Ŝe tworzone są 3 wątki Open MP 10
11 Dyrektywy sterujące przetwarzaniem (4) #pragma omp parallel sections { s1 s2 s2 #pragma omp section s1(...); #pragma omp section for (i =1; i<3, i++) s2(...); } //Zakładamy, Ŝe tworzone są 3 wątki Open MP 11
12 Dyrektywy sterujące przetwarzaniem (5) #pragma omp parallel { #pragma omp for for (i =1; i<4, i++) s1 s1 s1 s1(...); s2 //synchronizacja #pragma omp single s2(...); //synchronizacja Open MP 12 }
13 Szeregowanie pętli for (1) Szeregowanie statyczne pętla jest podzielona na zakresy iteracji o jednakowym rozmiarze określonym jako x w schedule(static, x), liczba i wielkość zakresów przydzielanych do kaŝdego wątku z góry ustalona, domyślnie kaŝdy wątek dostaje jeden zakres; bazuje na zakresie pętli wyznaczonym w czasie przetwarzania. Szeregowanie dynamiczne wątki zwracają się do modułu szeregującego w celu uzyskania kolejnego zakresu iteracji do realizacji, specyfikowany rozmiar x w schedule(dynamic, x), domyślnie zakres iteracji równy jednej iteracji Open MP 13
14 Szeregowanie pętli for (2) Szeregowanie sterowane wielkość zakresu wyznaczana na bieŝąco maleje w zaleŝności od pozostałej do realizacji liczby iteracji schedule(guided) Szeregowanie realizowane w sposób określany w czasie przetwarzania schedule(runtime) decyduje aktualna wartość zmiennej środowiska OMP_SCHEDULE Open MP 14
15 Synchronizacja w OpenMP (1) Wewnętrzne bariery synchronizacyjne - oczekiwanie aŝ wszystkie wątki ze zbioru zrealizują kod objęty jedną z dyrektyw: for sections single nowait likwiduje barierę synchronizacyjną (nie zawsze) Open MP 15
16 Synchronizacja w OpenMP (2) #pragma omp parallel { #pragma omp for nowait for (i=1; i<n; i++) b[i] = (a[i] + a[i-1])/2.0 #pragma omp for } for (i=0; i<m; i++) y[i]=sqrt(z[i]); klauzula nowait zapobiega barierze synchronizacyjnej po zakończeniu dyrektywy for Open MP 16
17 single Dyrektywy synchronizacyjne (1) specyfikacja bloku realizowanego tylko przez jeden dowolny wątek (pierwszy gotowy do rozpoczęcia przetwarzania), bariera synchronizacyjna po bloku, barrier synchronizacja wszystkich wątków ze zbioru, wątki które dotarły w przetwarzaniu do dyrektywy oczekują na pozostałe wątki; po osiągnięciu miejsca przez wszystkie rozpoczynają one współbieŝnie przetwarzanie dla następnego po dyrektywie wyraŝenia; Open MP 17
18 Dyrektywy synchronizacyjne (2) critical etykieta specyfikuje blok, który moŝe być realizowany jednocześnie tylko przez jeden wątek, wzajemne wykluczanie dotyczy bloków o tych samych etykietach atomic zapewnia niepodzielność operacji uaktualnienia specyfikowanej lokacji pamięci dotyczy wyraŝeń: x++, ++x, x--, --x x operator = wyraŝenie operator = {+, *, -, /, &, ^,, <<, >>} wyznaczenie wartości wyraŝenie nie jest atomowe 18
19 Dyrektywy synchronizacyjne (3) flush zapewnia spójny obraz pamięci w ramach wszystkich wątków; dotyczy zmiennych wyspecyfikowanych jako parametry (lub zmiennych współdzielonych widocznych w bieŝącym kontekście); oznacza to Ŝe wszystkie wcześniejsze operacje odwołujące się do podanych zmiennych się zakończyły, a następne jeszcze nie zaczęły; wymaga, aby kompilator spowodował zapis zmiennych przechowywanych w rejestrach do pamięci, a sprzęt dokonał zapisu zawartości buforów oraz ponownie załadował wartości z pamięci; bez parametrów - dotyczy wszystkich zmiennych współdzielonych; automatycznie realizowana w ramach barrier, critical we/wy, ordered we/wy, parallel wy, for wy, sections wy, single wy Open MP 19
20 Dyrektywy synchronizacyjne (4) ordered określa blok kodu w ramach regionu równoległej pętli który będzie realizowany w kolejności iteracji pętli, powoduje sekwencyjność przetwarzania oznaczonego bloku kodu, pozwalając aby przetwarzanie poza tym regionem biegło współbieŝnie, pojawia się w ramach bloków poprzedzonych dyrektywą for lub parallel for z opcją ordered Open MP 20
21 Dyrektywy synchronizacyjne (5) #pragma omp parallel shared(x,y) private (x_next, y_next) { #pragma omp critical ( xaxis ) x_next = dequeue (x); work(x_next); #pragma omp critical ( yaxis ) y_next = dequeue (y); work(y_next); } dwie sekcje krytyczne do wzajemnego wykluczania dostępu do dwóch niezaleŝnych kolejek x i y zapobiegają pobieraniu z kolejki tego samego zadania przez wiele wątków Open MP 21
22 Dyrektywy synchronizacyjne (6) #pragma omp parallel { #pragma omp single printf ( Początek pracy1 \n ); work1( ); #pragma omp single printf( Kończenie pracy1 \n ); #pragma omp single nowait printf( Zakończona praca1 i poczatek pracy2 \n ); work2( ); } Pierwszy z wątków docierający do dyrektywy single generuje komunikat. Bariera na końcu dyrektywy single. Bariera usunięta za pomocą klauzuli nowait Open MP 22
23 Dyrektywy synchronizacyjne (7) #pragma omp parallel for shared (x, y, index, n) for (i=0; i<n; i++) { } #pragma omp atomic x[index[i]] += work1(i); y[i] += work2(i); przewaga dyrektywy atomic nad critical atomic dotyczy x, nie dotyczy: y i wyznaczenia work1(i), i domyślnie prywatne Open MP 23
24 Dane w OpenMP (1) Dane są: private - lokalne dane wątków lokalne kopie zmiennych niewidoczne dla innych wątków shared - globalne dane Współdzielone: Zmienne widoczne w momencie osiągnięcia dyrektywy parallel lub parallel for, zmienne statyczne zdefiniowane w regionie równoległym. Prywatne: zadeklarowane threadprivate, zmienne zdefiniowane wewnątrz obszaru równoległego są prywatne, zmienna sterująca pętli for z dyrektywą zrównoleglającą, umieszczone w klauzuli private, firsprivate,lastprivate,reduction Open MP 24
25 threadprivate Dane w OpenMP (2) dyrektywa pozwalająca określić poza regionem równoległym zmienne jako prywatne dla kaŝdego wątku, wartości z jednego regionu równoległego są zachowane i przechodzą do kolejnego w odpowiednich wątkach int counter = 0; #pragma omp threadprivate(counter) Open MP 25
26 Klauzule sterujące współdzieleniem danych (1) private klauzula dyrektywy zrównoleglającej lub współdzielącej pracę, pozwala na określenie zmiennych jako prywatnych dla kaŝdego z wątków, dla kaŝdego wątku tworzony jest nowy obiekt o typie określonym przez typ zmiennej, wartość początkowa obiektu jest zgodna z rezultatem działania konstruktora obiektu, firstprivate W efekcie tej dyrektywy wartość początkowa lokalnego obiektu jest zgodna z wartością oryginalnego obiektu Open MP 26
27 Klauzule sterujące współdzieleniem danych (2) lastprivate wartość oryginalnego obiektu po zakończeniu przetwarzania bloku jest równa wartości lokalnego obiektu wątku realizującego ostatnią iterację lub ostatnią sekcję bloku shared klauzula powoduje współdzielenie miedzy wątkami wyspecyfikowanych zmiennych Open MP 27
28 Klauzule sterujące współdzieleniem danych (3) reduction(operacja:lista zmiennych) klauzula powoduje realizację operacji redukcji (scalenie) w oparciu o podaną zmienną skalarną (globalną) operacja redukcji ma postać typu : x = x op expr np.: x = x f( ); x binop = expr) np.: x += f( ) Realizacja: Powstaje prywatna kopia dla kaŝdego wątku kaŝdej ze zmiennych z listy reduction. KaŜda kopia jest inicjowana w sposób zaleŝny od operatora. Na końcu regionu ze zdefiniowaną klauzulą reduction, wartość oryginalnego obiektu jest aktualizowana do wyniku będącego połączeniem za pomocą podanego operatora jego wartości początkowej i ostatecznych wartości kaŝdej z prywatnych kopii. Wartość obiektu oryginalnego podlegającego redukcji jest nie zdeterminowana do momentu zakończenia bloku posiadającego klauzulę reduction (w przypadku klauzuli nowait konieczna bariera do zapewnienia poprawności wartości obiektu) Open MP 28
29 Klauzule sterujące współdzieleniem danych (4) reduction przykład #pragma omp parallel for private (i) reduction (+:a,y) \ reduction ( : am) for (i=0; i<n; i++) { a += b[i]; y = sum(y, c[i]); am = am b[i] == c[i]; } operator redukcji ukryty w wywoływanej funkcji sum() Open MP 29
30 Klauzule sterujące współdzieleniem danych (5) copyin(lista zmiennych) dyrektywa powoduje zsynchronizowanie wartości zmiennych typu threadprivate do wartości tej zmiennej w ramach wątku master realizacja na początku regionu równoległego copyprivate(lista zmiennych) zsynchronizowanie wartości zmiennej prywatnej do wartości obiektu jednego z wątków realizującego blok single klauzula dostępna tylko w ramach dyrektywy single realizacja przy wyjściu z bloku single Open MP 30
31 Klauzule sterujące współdzieleniem danych (6) default(private) - sterowanie współdzieleniem zmiennych, do których następuje odwołanie w regionie współbieŝnym, a których atrybuty współdzielenia są zdeterminowane nie wprost. default(none) wymaga, aby wszystkie zmienne, do których następuje odwołanie w regionie współbieŝnym, a które nie posiadają predefiniowanych atrybutów współdzielenia, uzyskały takie poprzez wylistowanie w ramach klauzul atrybutów współdzielenia danych Open MP 31
32 Funkcje biblioteki czasu wykonania (1) funkcje środowiska przetwarzania omp_set_num_threads (int liczba_wątków) określa liczbę wątków powoływanych przy wejściu do regionu równoległego, posiada wyŝszy priorytet nad OMP_NUM_THREADS realizowana w obszarze kodu w którym: omp_in_parallel = 0 Inne sposoby określania liczby wątków: num_threads klauzula dyrektywy parallel OMP_NUM_THREADS zmienna środowiska omp_set_dynamic i OMP_DYNAMIC zezwalają na dynamiczną modyfikację liczby wątków Open MP 32
33 Funkcje biblioteki czasu wykonania (2) omp_get_num_threads pozwala uzyskać liczbę wątków w zbiorze aktualnie realizującym region współbieŝny; omp_get_max_threads zwraca (takŝe poza regionem równoległym) maksymalną wartość zwracaną przez omp_get_num_threads; omp_get_thread_num zwraca numer wątku (<0,omp_get_num_threads()-1>) w ramach zbioru realizującego region równoległy, wątkowi master zwraca 0; omp_get_num_procs zwraca maksymalną liczbę procesorów, która moŝe zostać przydzielona do programu; Open MP 33
34 Funkcje biblioteki czasu wykonania (3) omp_in_parallel zwraca wartość <> 0 jeśli wywołana w ramach regionu realizowanego współbieŝnie; omp_set_nested omp_get_nested Open MP 34
35 Funkcje biblioteki czasu wykonania (4) - funkcje zamków Zamki powodują zawieszenie przetwarzania w przypadku odwołania się procesu do załoŝonego zamka i pozwalają na wznowienie przetwarzania po usunięciu zamka; Typy: omp_lock_t typ standardowy zamek omp_nest_lock_t typ zagnieŝdŝony zamek Realizacja: 1. system zapewnia dostęp do najbardziej aktualnego stanu zamka 2. inicjalizacja zamka / usuwanie zamka omp_init_lock/omp_destroy_lock omp_init_nest_lock/omp_destroy_nest_lock tworzenie - ustawiana wartość parametru zagnieŝdŝenia zamka równa 0 3. omp_set_(nest_)lock - zamykanie wątek jest zawieszany do momentu, gdy wskazany zamek zostanie otwarty przez proces, który go zamknął (typ standardowy), gdy zamek został zamknięty wcześniej przez ten sam wątek (typ zagnieŝdŝony zamka) następuje zwiększenie licznika zagnieŝdŝenia; 35
36 Funkcje biblioteki czasu wykonania (5) - funkcje zamków 4. Otwarcie zamka: omp_unset_(nest_)lock parametrem jest zamek zamknięty przez ten wątek, jest on otwarty (typ standardowy zamka), licznik zagnieŝdŝenia jest zmniejszony i zamek jest zwolniony pod warunkiem, Ŝe licznik jest równy 0 (typ zagnieŝdŝony zamka) 5. test i zamknięcie zamka: omp_test_(nest_)lock funkcja działa jak omp_set_(nest_)lock lecz nie wstrzymuje przetwarzania wątków w przypadku braku moŝliwości zamknięcie zamka (zwraca zero) zwraca nową wartość licznika zagnieŝdŝenia Open MP 36
37 Zmienne środowiskowe dla OpenMP OMP_SCHEDULE OMP_NUM_THREADS OMP_DYNAMIC OMP_NESTED Ustawianie: csh: setenv OMP_SCHEDULE dynamic ksh: export OMP_SCHEDULE= guided, Open MP 37
38 Przykładowe błędy np = omp_get_num_threads(); /* błędny kod */ #pragma omp parallel for private(i) schedule(static) for (i=0; i<np; i++) work(i); #pragma omp parallel private(i) /* kod poprawny */ { i = omp_get_thread_num( ); work(i); } barrier wewnątrz bloku critical lub single Open MP 38
39 Gdzie jest błąd? #include <omp.h> #include <stdio.h> #include <stdlib.h> #define VECLEN 100 float a[veclen], b[veclen]; float dotprod () { int i; float sum; #pragma omp for reduction(+:sum) for (i=0; i < VECLEN; i++) { sum = sum + (a[i]*b[i]); } } int main (int argc, char *argv[]) { int i; float sum; for (i=0; i < VECLEN; i++) a[i] = b[i] = 1.0 * i; sum = 0.0; #pragma omp parallel shared(sum) dotprod(); printf("sum = %f\n",sum); } Open MP 39
40 Kompilacja Kompilacja program za pomocą gcc: gcc o hello.exe fopenmp hello.c Open MP 40
41 Lastprivate, firsprivate void example(float*a, float*b) { #pragma omp parallel for lastprivate(i) for(i=0; i<k; i++ )a[i] = b[i]; -- i master a równe k+1 #pragma omp parallel for firstprivate(i) for(j=i; j<n; j++ )a[j] = 1.0; } Open MP 41
42 OpenMP 3.0 Task parallelism Pozwala na zrównoleglenie problemów o nieregularnej strukturze: nieograniczone pętle algorytmy rekursywne schematy przetwarzania producentkonsument Open MP 42
43 Model zadaniowy OpenMP Tworzenie zadań Zakres danych Synchronizacja zadań Model wykonania zadań Open MP 43
44 Zadanie w OpenMP Zadnie to praca której realizacja moŝe się rozpocząć natychmiast lub po upływie pewnego czasu Zadania składają się z: Kodu do wykonania Środowiska danych zainicjowanego w czasie utworzenia zadania Wewnętrznych zmiennych sterujących (ICV) Open MP 44
45 Dyrektywa zadania (task) #pragma omp task [ klauzule ] Blok strukturalny Zakres danych Klauzule z listą w nawiasie dla określania zakresu danych: shared(), private(), firstprivate(dane pobrane przy tworzeniu zadania), default(shared none)... Przy braku klauzuli stosowane zasady ogólne globalne są współdzielone itp., inne typu firstprivate UŜywać default(none) jeśli pojawiają się wątpliwości co do określoności zakresu Synchronizacja zadań bariera wszystkie zadania utworzone przez wątki bieŝącego poziomu równoległości zostaną zakończone przed wyjściem z bariery #pragma omp taskwait - bariera zadań wątku Wątki zostają zawieszone do zakończenia utworzonych zadań (tylko bezpośrednich potomków) Open MP 45
46 int a ; void foo ( ) { int b, c ; #pragma omp pa r a l l e l pr ivate ( b ) { int d ; #pragma omp task { int e ; a = shared b = firstprivate c = shared d = firstprivate e = private } } } Zakres danych Open MP 46
47 Model realizacji zadań Zadania realizowane są przez wątki z bieŝącej grupy wątków Grupę wątków stanowią wątki będące wynikiem dyrektywy parallel jest to jeden wątek jeśli zagnieŝdŝono parallel i zagnieŝdŝona równoległość jest wyłączona lub niewspomagana. Dyrektywa parallel OpenMP 3.0 tworzy zadanie dla kaŝdego wątku. Wątki mogą zawiesić wykonanie zadania i rozpocząć/wznowić inne Open MP 47
48 Szeregowanie zadań Zadanie domyślnie jest tied - realizowane w całości przez wątek który rozpoczął jego realizację. Mogą powodować trudności w równowaŝeniu obciąŝeń. Wprowadzenie klauzuli untied. Zadanie #pragma omp task untied moŝe być wznowione przez dowolny wątek z bieŝącego zbioru, punkty szeregowania takich zadań mogą być dowolnie umieszczane w kodzie. Domyślnie szeregowanie zadań odbywa się w ściśle określonych punktach kodu - punktach szeregowania. Uwaga: ostroŝnie z task untied w przypadku połączenia z critical, thread_id, threadprivate Open MP 48
49 Szeregowanie zadań Punkty szeregowania tied task: Po utworzeniu zadania Po ostatniej instrukcji bloku zadania W regionie taskwait W barierze podanej wprost i niewprost Punkty szeregowania dynamicznie dzielą regiony zadań na części wykonywane przez jeden wątek od początku do końca. RóŜne części regionu zadania są realizowane w kolejności w jakiej występują w kodzie Open MP 49
50 Szeregowanie zadań Gdy wątek osiągnie punkt szeregowania moŝe zrealizować jedno następujących działań: Rozpocząć realizacje dowolnego zadania typu tied - zadania związanego z bieŝącym zespołem wątków, Wznowić zawieszoną realizację regionu zadania związanego z bieŝącym zespołem wątków, regionu do którego wątek jest tied. Rozpocząć realizacje dowolnego zadania typu untied - zadania związanego z bieŝącym zespołem wątków, Wznowić zawieszoną realizację regionu zadania untied związanego z bieŝącym zespołem wątków Open MP 50
51 Szeregowanie zadań - ograniczenia Klauzula if dyrektywy task oceniona na false powoduje zawieszenie realizacji bieŝącego zadania i rozpoczęcie realizacji zadania nowo wygenerowanego, zadanie rodzic moŝe być wznowione po zakończeniu realizacji zadania dziecka. Blok jest samodzielnym zadaniem pod warunkiem. Uszeregowanie nowych zadań związanych zanych (tied) nie jest realizowane jeśli zbiór regionów zadań aktualnie związanych z wątkiem (realizowanych wcześniej przez niego), które nie są zawieszone (barrier) zawiera zadania. Jeśli takich regionów zadań nie ma to nowe zadania związane mogą być uszeregowane. Nowe związane zadanie moŝe być uszeregowane równieŝ w przypadku, gdy jest potomkiem kaŝdego zadania w tym zbiorze Open MP 51
52 #define LARGE_NUMBER double item[large_number]; extern void process(double); Dyrektywa Task przykład 1 int main() { #pragma omp parallel { #pragma omp single { int i; for (i=0; i<large_number; i++) #pragma omp task process(item[i]); // i jest firstprivate, item jest shared } } } Open MP 52
53 Dyrektywa Task przykład 2 int fib(int n) { int i, j; if (n<2) return n; else { #pragma omp task shared(i) i=fib(n-1); #pragma omp task shared(j) j=fib(n-2); #pragma omp taskwait return i+j; } } Open MP 53
54 Przetwarzanie współbieŝne elementów połączonych w listę typedef struct node node; struct node { int data; node * next; }; void process(node * p) { /* praca do wykonania */ } void increment_list_items(node * head) { #pragma omp parallel { #pragma omp single { node * p = head; while (p) { #pragma omp task // p jest firstprivate domyślnie process(p); p = p->next; } } } } Open MP 54
55 /* tp thread private */ void work() { #pragma omp parallel { /* do work here */ #pragma omp task { tp++; /* do work here */ Szeregowanie zadań - przykład #pragma omp task { /* praca bez modyfikacji tp */ } var = tp; // zasady szeregowania sprawiają, Ŝe tp prywatna dla // wątku pozostaje bez zmian w ramach zadania //mimo moŝliwości modyfikacji w wielu zadaniach i przejściu przez punkt //szeregowania; // wątek nie moŝe realizować innych zadań modyfikujących tp }}} Open MP 55
56 Szeregowanie zadań przykład 2 int tp; #pragma omp threadprivate(tp) int var; void work() { #pragma omp task { /* praca */ #pragma omp task { } } tp = 1; /* praca */ #pragma omp task { /* kod bez modyfikacji tp */ } var = tp; // jaka wartość tp 1 czy 2? } // zaleŝne od kolejności realizowania tp = 2; // pracy zagnieŝdŝonych zadań Open MP 56
57 Brak reduction w openmp 3.0 realizowane innymi dyrektywami #pragma omp task untied if(warunek dla zadania niezwiązanego) Zadania rozwiązaniem zaniem elastycznym lecz nieefektywnym. Dalsze informacje : OPENMP.ORG Open MP 57
Open MP wer Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Jesień 2014
Open MP wer. 2.5 Wykład PR część 3 Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Jesień 2014 OpenMP standard specyfikacji przetwarzania współbieżnego uniwersalny (przenośny) model równoległości
Programowanie systemów z pamięcią wspólną specyfikacja OpenMP. Krzysztof Banaś Obliczenia równoległe 1
Programowanie systemów z pamięcią wspólną specyfikacja OpenMP Krzysztof Banaś Obliczenia równoległe 1 OpenMP Przenośność oprogramowania Model SPMD Szczegółowe wersje (bindings) dla różnych języków programowania
Wprowadzenie do OpenMP
Wprowadzenie do OpenMP OZUKO Kamil Dworak OZUKO Wprowadzenie do OpenMP Kamil Dworak 1 / 25 OpenMP (ang. Open Multi-Processing) opracowany w 1997 przez radę Architecture Review Board, obliczenia rówoległe
Przetwarzanie Równoległe i Rozproszone
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI I TECHNOLOGII INFORMACYJNYCH Przetwarzanie Równoległe i Rozproszone www.pk.edu.pl/~zk/prir_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl
Elementy składowe: Przenośność oprogramowania Model SPMD Szczegółowe wersje (bindings) dla różnych języków programowania
OpenMP Elementy składowe: o o o dyrektywy dla kompilatorów funkcje biblioteczne zmienne środowiskowe Przenośność oprogramowania Model SPMD Szczegółowe wersje (bindings) dla różnych języków programowania
OpenMP. Programowanie aplikacji równoległych i rozproszonych. Wykład 2. Model programowania. Standard OpenMP. Dr inż. Tomasz Olas
OpenMP Programowanie aplikacji równoległych i rozproszonych Wykład 2 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska OpenMP (Open Multi-Processing)
Wprowadzenie do zrównoleglania aplikacji z wykorzystaniem standardu OpenMP
OpenMP p. 1/4 Wprowadzenie do zrównoleglania aplikacji z wykorzystaniem standardu OpenMP Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska OpenMP OpenMP
Programowanie maszyn z pamięcią wspólną w standardzie OpenMP.
Programowanie maszyn z pamięcią wspólną w standardzie OpenMP. 1 OpenMP Standard rozwinięty i zdefiniowany w latach 90 przez grupę specjalistów z przemysłu. Strona www: www.openmp.org Składa się ze zbioru
Programowanie współbieżne Wstęp do OpenMP. Rafał Skinderowicz
Programowanie współbieżne Wstęp do OpenMP Rafał Skinderowicz Czym jest OpenMP? OpenMP = Open Multi-Processing interfejs programowania aplikacji (API) dla pisania aplikacji równoległych na komputery wieloprocesorowe
Programowanie maszyn z pamięcią wspólną w standardzie OpenMP.
Programowanie maszyn z pamięcią wspólną w standardzie OpenMP. 1 OpenMP Standard rozwinięty i zdefiniowany w latach 90 przez grupę specjalistów z przemysłu. Strona www: www.openmp.org Składa się ze zbioru
Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI
Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI Patryk Mach Uniwersytet Jagielloński, Instytut Fizyki im. Mariana Smoluchowskiego OpenMP (Open Multi Processing) zbiór dyrektyw kompilatora, funkcji
Wyklad 11 Języki programowania równoległego
Wyklad 11 Języki programowania równoległego Części wykładu: 1. Środowisko programu równoległego - procesy i wątki 2. Podstawowe problemy języków programowania równoległego 3. Języki programowania w środowisku
Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI
Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI Patryk Mach Uniwersytet Jagielloński, Instytut Fizyki im. Mariana Smoluchowskiego Zadania w OpenMP technika zrównoleglania bardziej złożonch problemów,
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ę
Modele programowania równoległego. Pamięć współdzielona Rafał Walkowiak dla III roku Informatyki PP
Modele programowania równoległego Pamięć współdzielona Rafał Walkowiak dla III roku Informatyki PP Procesy a wątki [1] Model 1: oparty o procesy - Jednostka tworzona przez system operacyjny realizująca
Programowanie maszyn z pamięcią wspólną w standardzie OpenMP ciąg dalszy.
Programowanie maszyn z pamięcią wspólną w standardzie OpenMP ciąg dalszy. 1 Dyrektywa atomic Często sekcja krytyczna polega na uaktualnieniu jednej lokacji w pamięci. OpenMP dostarcza dyrektywę atomic
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
Szablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1
Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie
Programowanie współbieżne OpenMP wybrane wydajność. Rafał Skinderowicz
Programowanie współbieżne OpenMP wybrane wydajność Rafał Skinderowicz OpenMP niskopoziomowa synchronizacja OpenMP udostępnia mechanizm zamków (lock) znany z typowych bibliotek programowania współbieżnego
Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor
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,
Wsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm
Wsparcie dla OpenMP w kompilatorze GNU GCC Krzysztof Lamorski Katedra Informatyki, PWSZ Chełm Streszczenie Tematem pracy jest standard OpenMP pozwalający na programowanie współbieŝne w systemach komputerowych
OpenMP część praktyczna
.... OpenMP część praktyczna Zbigniew Koza Wydział Fizyki i Astronomii Uniwersytet Wrocławski Wrocław, 17 marca 2011 Zbigniew Koza (WFiA UWr) OpenMP część praktyczna 1 / 34 Spis treści Spis treści...1
Wskaźniki. Informatyka
Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą
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
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
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.
Struktura programu Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem. W ostatnich latach najbardziej używanym stylem oprogramowania
W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :
Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;
Język C++ zajęcia nr 2
Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator
Programowanie Rozproszone i Równoległe
Programowanie Rozproszone i Równoległe OpenMP (www.openmp.org) API do pisania wielowątkowych aplikacji Zestaw dyrektyw kompilatora oraz procedur bibliotecznych dla programistów Ułatwia pisanie programów
Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
programowania Wykład: 5 Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania w C++ Instrukcje sterujące 2 dr Artur Bartoszewski
Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1
Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie
Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)
Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013
Wskaźniki w C. Anna Gogolińska
Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik
Zmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1
Tworzenie programów równoległych Krzysztof Banaś Obliczenia równoległe 1 Tworzenie programów równoległych W procesie tworzenia programów równoległych istnieją dwa kroki o zasadniczym znaczeniu: wykrycie
Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak
Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.
Równoległość i współbieżność
Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna
Równoległość i współbieżność
Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna
Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,
Przetwarzanie równoległe PROJEKT OMP i CUDA Temat projektu dotyczy analizy efektywności przetwarzania równoległego realizowanego przy użyciu komputera równoległego z procesorem wielordzeniowym z pamięcią
ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
Kompilator języka C na procesor 8051 RC51 implementacja
Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
1. Zasady projektowania aplikacji wielowątkowych. 2. Funkcje wspomagające równoległość przetwarzania. Wykład PR 2012
1. Zasady projektowania aplikacji wielowątkowych. 2. Funkcje wspomagające równoległość przetwarzania. Wykład PR 2012 Zasady projektowania aplikacji wielowątkowychprzegląd A. Określenie zadań niezależnych
Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Pętle Pętla jest konstrukcją sterującą stosowaną w celu wielokrotnego wykonania tego samego zestawu instrukcji jednokrotne
Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
OpenMP Szkolenie dla uytkowniku
OpenMP Szkolenie dla uytkowniku w zasobów w PCSS Mirosław Kupczyk miron@man.poznan.pl PCSS 7.11.2006 1 Plan 11:00-12:30 Wykład Standard OpenMP Dyrektywy kompilatora Sterowanie w obszarach równoległych
Tablice, funkcje - wprowadzenie
Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład
Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)
Podstawy programowania (język C) Globalne / Lokalne Wykład 15. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Zmienne globalne / lokalne (1) int A, *Q; // definicja zmiennych globalnych
Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady
Pętle i tablice. Spotkanie 3 Dr inż. Dariusz JĘDRZEJCZYK Pętle: for, while, do while Tablice Przykłady 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Pętla w największym uproszczeniu służy
Wprowadzenie do programowania współbieżnego
Wprowadzenie do programowania współbieżnego Marcin Engel Instytut Informatyki Uniwersytet Warszawski Zamiast wstępu... Zamiast wstępu... Możliwość wykonywania wielu akcji jednocześnie może ułatwić tworzenie
Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego
Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować
Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz
Programowanie równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 23 października 2009 Spis treści Przedmowa...................................................
Programowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.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
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
C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6 TEMAT: Programowanie w języku C/C++: instrukcje iteracyjne for, while, do while Ogólna postać instrukcji for for (wyr1; wyr2; wyr3) Instrukcja for twory pętlę działającą
Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
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
Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD
Języki C i C++ Wykład: 2 Wstęp Instrukcje sterujące 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Instrukcje sterujące 2 Pętla for for ( instrukcja_ini ; wyrazenie_warunkowe
PARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Wstęp do programowania
wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.
Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.
Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice
16. Taksonomia Flynn'a.
16. Taksonomia Flynn'a. Taksonomia systemów komputerowych według Flynna jest klasyfikacją architektur komputerowych, zaproponowaną w latach sześćdziesiątych XX wieku przez Michaela Flynna, opierająca się
Obsługa wyjątków. Język C++ WW12
Obsługa wyjątków Pozwala zarządzać błędami wykonania w uporządkowany sposób. Umożliwia automatyczne wywołanie części kodu, funkcji, metod klas, który trzeba wykonać przy powstaniu błędów. try //blok try
Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ
w C Zak lad Chemii Teoretycznej UJ 30 listopada 2006 1 2 3 Inicjalizacja zmiennych Zmienne jednowymiarowe można inicjować przy ich definicji. #include i n t x = 1 ; l o n g day = 1000L * 60L
PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec
PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych
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
Argumenty wywołania programu, operacje na plikach
Temat zajęć: Argumenty wywołania programu, operacje na plikach Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Zmienne statyczne) W języku C można decydować o sposobie przechowywania zmiennych. Decydują
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak
Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści
Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia
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
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
// 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
Podział programu na moduły
Materiały Podział programu na moduły Informatyka Szczegółowe informacje dotyczące wymagań odnośnie podziału na moduły: http://www.cs.put.poznan.pl/wcomplak/bfiles/c_w_5.pdf Podział programu na moduły pozwala
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
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Programowanie współbieżne i rozproszone
Programowanie współbieżne i rozproszone WYKŁAD 1 dr inż. Literatura ogólna Ben-Ari, M.: Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa, 2009. Czech, Z.J:
PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE. Mnożenie macierzy kwadratowych metodą klasyczną oraz blokową z wykorzystaniem OpenMP.
P O L I T E C H N I K A S Z C Z E C I Ń S K A Wydział Informatyki PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE. Mnożenie macierzy kwadratowych metodą klasyczną oraz blokową z wykorzystaniem OpenMP. Autor: Wojciech
Podstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Wstęp do programowania
Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład
Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1
Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego
Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w
Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w obrębie skryptu. Wyrażenia include() i require() są niemal
Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 7 Przegląd typów strukturalnych - klasy i obiekty - c.d. Klasa - powtórzenie
Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).
Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,
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
Język C, tablice i funkcje (laboratorium, EE1-DI)
Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.
Wstęp do wskaźników w języku ANSI C
Wstęp do wskaźników w języku ANSI C / Materiał dydaktyczny pomocniczy do przedmiotu Informatyka sem.iii kier. Elektrotechnika/ 1. Wprowadzenie W języku ANSI C dla każdego typu X (wbudowanego, pochodnego,
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
Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1
Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie