OpenMP Szkolenie dla uytkowniku

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

Download "OpenMP Szkolenie dla uytkowniku"

Transkrypt

1 OpenMP Szkolenie dla uytkowniku w zasobów w PCSS Mirosław Kupczyk miron@man.poznan.pl PCSS

2 Plan 11:00-12:30 Wykład Standard OpenMP Dyrektywy kompilatora Sterowanie w obszarach równoległych 12:30-12:45 Przerwa 12:45-14:15 wiczenia praktyczne 2

3 OpenMP Open specifications for Multi Processing to standard programowania komputerów równoległych (SMP) implementowany na wiekszoci platformach obliczeniowych i dostarczany w postaci API dla programisty. Dostarcza mechanizmów korzystajcych w sposób jawny z wielowtkowoci i pamici współdzielonej w trybie równoległym. PCSS 3

4 Co to jest OpenMP!= MPI Dyrektywy dla kompilatora Biblioteki procedur (runtime) Zmienne rodowiskowe Przenaszalno (na 99,99%) Wsparcie dla C/C++, Fortran Znakomity do przetwarzania równoległego na poziomie ptli (z pewnymi wyjtkami dot. zalenoci danych i zmiennych ptli). Standaryzacja OpenMP nie wspiera systemów z rozproszon pamici (np. klastry) Implementacje nie s identycznie implementowane w systemach. Brak gwarancji wydajnego/optymalnego wykorzystania pamici współdzielonej. PCSS 4

5 Historia Wczesne lata 90-te rozszerzenia dla Fortrana. Draft ANSI X3H5 in 1994 (nigdy nie zaakceptowany) Oficjalne prace nad standardem zaczły si w 1997 (Compaq/HP, SGI, Intel, US DOE, IBM, SUN,...) Oct 1997: Fortran version 1.0 Oct 1998: C/C++ version 1.0 Nov 2000: Fortran version 2.0 Mar 2002: C/C++ version 2.0 May 2005: C/C++ and Fortran version Uwaga: niektóre dyrektywy zmieniły nazw w kolejnych wersjach OpenMP. PCSS 5

6 Dostpne na komputerach KDM SGI Origin 3800 (grape) 96 procesorów SGI Altix 3700 (guarana) 128 procesorów Równie na klastrach: Intel IA-64 (sherwood) wzły 2-u procesorowe AMD Opteron64 (fangorn) wzły 2-u procesorowe (2 * 2 rdzenie) Uruchamianie zada OpenMP w klastrze rozproszonym: cluster-openmp nastpne szkolenie!! PCSS 6

7 Model programowania Model bazuje na tworzeniu i usuwaniu wtków w obszarach równoległych [w skr. OR] (fork-join). Programista decyduje jawnie (w kodzie programu) o tym, które i jakie wtki bd wykonywa si równolegle. Zawsze startuje pojedyczy proces. Tworzy n-1 wtków w OR. OR koczy si synchronizacj i porzdkowaniem. Zostaje master. API oferuje zagniedzony parallelizm i dynamiczne tworzenie wtków (zmiana liczby wtków w aktywnym RO). Implementacje rzadko wspieraj. Standard nie wspomina o I/O PCSS 7

8 Przykład programu w C/C++ #include <omp.h> main () { int var1, var2, var3; // Kod sekwencyjny:... /* Pocztek obszaru równoległego. Tworzenie wtków. Ustalenie zasiegu zmiennych */ #pragma omp parallel private(var1, var2) shared(var3) { // Obszar równoległy, wykonywany przez wszystkie wtki:.. // Koniec obszaru równoległego. Synchronizacja i likwidacja wtków. } // Pozostały kod sekwencyjny:.. return 0; } PCSS 8

9 Przykład programu w Fortranie PROGRAM HELLO INTEGER VAR1, VAR2, VAR3 Serial code... Beginning of parallel section. Fork a team of threads. Specify variable scoping!$omp PARALLEL PRIVATE(VAR1, VAR2) SHARED(VAR3) Parallel section executed by all threads.. All threads join master thread and disband!$omp END PARALLEL Resume serial code.. END PCSS 9

10 Format dyrektywy C/C++ #pragma omp nazwa dyrektywy [warunek1,...] Nowa linia NL Wymagane Wystpuje zawsze po pragmie i przed warunkami Opcjonalne. Porzdek dowolny Wymagane. Poprzedza blok równoległy. Przykład: #pragma omp parallel default(shared) private(alfa, beta, i, j, k) Zasady ogólne: - Case sensitive; - Konwecja dyrektywy odpowiednia dla C/C++; - Tylko jedna nazwa na dyrektyw; - Kada dyrektywa dotyczy najbliszego nastpujcego bloku kodu; - Długa dyrektywa moe zosta przeniesiona do kolejnej linii po znaku \. PCSS 10

11 Zasig g dyrektywy Obszar statyczny Ustrukturyzowany kod programu wystpujcy zaraz po dyrektywie. Nie uruchamia równoległych procedur, nie generuje kopii pliku ródłowego. Sierota Dyrektywa niezalena od dyrektywy nadrzdnej. Istnieje poza obszarem ustrukturyzowanego kodu dyrektywy. Moe wywoływa procedury i pliki z kodami. Obszar dynamiczny Zawiera obszary: statyczny i swoich osieroconych dyrektyw. Wane, poniewa w przypadku błdnie wpisanej dyrektywy program równie moe da wyniki (właciwe lub nie). PCSS 11

12 Lista dyrektyw omp #pragma omp parallel for sections single master critical barrier atomic flush ordered PCSS 12

13 PARALLEL C/C++ Fortran #pragma omp parallel [clause...] newline if (scalar_expression) private (list) shared (list) default (shared none) firstprivate (list) reduction (operator: list) copyin (list) structured_block!$omp PARALLEL [clause...] IF (scalar_logical_expression) PRIVATE (list) SHARED (list) DEFAULT (PRIVATE SHARED NONE) FIRSTPRIVATE (list) REDUCTION (operator: list) COPYIN (list) block!$omp END PARALLEL Uwagi: - Kiedy wtek (master) osignie obszar PARALLEL, tworzy zespół wtków. Master jest członkiem zespołu i ma nr 0. - Kod jest duplikowany i kady z wtków go wykonuje. - Na kocu obszaru jest bariera, któr przekracza tylko wtek master. - W przypadku zakoczenia si wtku w obszarze PARALLEL, wszystkie wtki w zespole s koczone a stan pracy w takim punkcie jest nieokrelony (nie musi to oznacza koca całego programu). - Zagniedzenie moliwe po ustawieniu zmiennej rodowiskowej: OMP_NESTED=true Wówczas liczba wtków programu (runtime) wyniesie: n^2. PCSS 13

14 O wtkach... w Liczba wtków w obszarze PARALLEL: > setenv OMP_NUM_THREADS 16 albo funkcja API: #include <omp.h> omp_set_num_threads( 16 ) ; Moe zalee od implementacji bibliotek OpenMP, np. liczba procesorów w wle. Numeracja wtków: <0..N-1> Dynamiczna: omp_get_dynamic(); sprawdzenie, jeli wspiera to: omp_set_dynamic(); lub ustaw zmiennrodowiskow: > setenv OMP_DYNAMIC TRUE PCSS 14

15 Warunki IF Warunek wejcia do obszaru PARALLEL: Fortran:.TRUE. C/C++: nie-zero W przeciwnym razie wtek master wykona blok kodu sekwencyjnie. Nie wolno dokonywa skoków do/na zewntrz obszaru równoległego! Równie nie wolno skaka pomidzy niezalenymi obszarami równoległymi. PCSS 15

16 Przykład C/C++ #include <omp.h> main () { int nthreads, tid; /* Fork a team of threads giving them their own copies of variables */ #pragma omp parallel private(tid) { /* Obtain and print thread id */ tid = omp_get_thread_num(); printf("hello World from thread = %d\n", tid); /* Only master thread does this */ if (tid == 0) { nthreads = omp_get_num_threads(); printf("number of threads = %d\n", nthreads); } } /* All threads join master thread and terminate */ > export OMP_NUM_THREADS=8 > icc -openmp hello.c >./a.out Hello World from thread = 0 Number of threads = 8 Hello World from thread = 1 Hello World from thread = 2 Hello World from thread = 5 Hello World from thread = 4 Hello World from thread = 3 Hello World from thread = 6 Hello World from thread = 7 Uwaga na nieporzdek w dostpie do urzdzenia tty. } PCSS 16

17 Sterowanie w obszarze równoległym Ptla: for() Niezalene sekcje (równoległo na poziomie procedur) Serializacja danego kodu PCSS 17

18 Ptla C/C++ #pragma omp for [clause...] schedule (type [,chunk]) ordered private (list) firstprivate (list) lastprivate (list) shared (list) reduction (operator: list) nowait NL for(...){ ciało ptli } #pragma omp parallel private(i) { #pragma omp for for(i=0;i<400;i++) {... } } PCSS 18

19 warunki SCHEDULE STATIC ptla jest dzielona na fragmenty o wielkoci chunk-size a jej kawałki przydzielone arbitralnie kademu z wtków. DYNAMIC - ptla jest dzielona na fragmenty o wielkoci chunk-size a jej kawałki przydzielone dynamicznie kademu z wtków. Warto włczy, gdy krok iteracji ma z góry nieznany czas wykonania. GUIDED chunk-size jest obliczany na podstawie liczby pozostałych niewykonanych jeszcze iteracji. RUNTIME zaley od zmiennej rodowiskowej OMP_SCHEDULE NOWAIT wtki nie synchronizuj si na kocu ptli. Ograniczenia ptli: - Liczba iteracji znana. Ptla nie moe mie charakteru ptli do...while. - Nie wolno wykonywa instrukcji skoku poza ptle. - Chunk-size musi mie niezmienn wielko (int). PCSS 19

20 SECTIONS #pragma omp sections [clause...] private (list) firstprivate (list) lastprivate (list) reduction (operator: list) nowait NL { #pragma omp section newline - Obszar w którym wykonuj si bloki kodu w odzielnych wtkach (nie iteracje). - Kada sekcja jest wykonywana tylko raz przez wtek. - Na kocu sections jest bariera, wykonywana zawsze i niezalenie od ustawienia nowait. - Jeli liczba sekcji jest wiksza ni liczba wtków implementacja OpenMP zadecyduje o rezultacie. structured_block #pragma omp section newline structured_block } PCSS 20

21 SINGLE - Fragment kodu zostanie wykonany tylko przez jeden wtek. Np.. Operacja I/O. Reszta wtków czeka. - Na kocu bloku jest domylnie bariera, niezalenie od ustawienia NOWAIT. #pragma omp single [clause...] private (list) firstprivate (list) nowait NL structured_block PCSS 21

22 Synchronizacja wtkw tków Przykład: Wtek 1: increment(x) { x = x + 1; } Wtek 2: increment(x) { x = x + 1; } Bez dodatkowych załoe, rezultat powyszych operacji bdzie nieprzewidywalny, tzn. warto zmiennej x bdzie zwikszona albo o 1, albo o 2. OpenMP ma mechanizmy do sterowania kolejnoci wykonywania si wtków. Dyrektywy: MASTER CRITICAL BARRIER ATOMIC FLUSH ORDERED PCSS 22

23 Synchronizacja c.d. #pragma omp master NL structured_block Tylko watek master wykonuje dany blok kodu. Brak bariery. #pragma omp critical [ nazwa ] NL structured_block Fragment kodu bdzie wykonany przez wszytkie wtki. Tylko jeden wtek działa w danym czasie, pozostałe czekaj na wykonanie. Nazw nadaje programista, moe istnie wiele obszarów CRITICAL z tak sam nazw, wówczas takie obszary s traktowane jako jeden. #include <omp.h> main() { int x; x = 0; #pragma omp parallel shared(x) { } #pragma omp critical x = x + 1; } /* end of parallel section */ PCSS 23

24 Synchronizacja c.d. #pragma omp barrier NL #pragma omp atomic NL statement_expression Odpowiednik sekcji mini-critical. Operacja atomowa na pamici. #pragma omp flush (list) NL Punkt synchronizacji po którym implementacja OpenMP musi zapewni spójno pamici. Konieczna równie w systemach cc (cache coherent) np. SGI Origin, Altix Domylnie jest wykonywana w ramach dyrektyw: barrier parallel critical ordered for sections single pocztek i koniec pocztek i koniec pocztek i koniec koniec koniec koniec #pragma omp ordered NL structured_block Iteracje w ptli wykonaj si w tym samym porzdku co ptla na jednym procesorze. Dotyczy tylko dyrektywy omp for. Moe si zday, e cz mocy obliczeniowej zostanie niewykorzystana (w rodku jest wywoływane omp flush). PCSS 24

25 THREADPRIVATE #include <omp.h> int a, b, i, tid; float x; #pragma omp threadprivate(a, x) main () { /* Explicitly turn off dynamic threads */ omp_set_dynamic(0); printf("1st Parallel Region:\n"); #pragma omp parallel private(b,tid) { tid = omp_get_thread_num(); a = tid; b = tid; x = 1.1 * tid +1.0; printf("thread %d: a,b,x= %d %d %f\n",tid,a,b,x); } /* end of parallel section */ printf("************************************\n"); printf("master thread doing serial work here\n"); printf("************************************\n"); printf("2nd Parallel Region:\n"); #pragma omp parallel private(tid) { tid = omp_get_thread_num(); printf("thread %d: a,b,x= %d %d %f\n",tid,a,b,x); } /* end of parallel section */ } Wynik: 1st Parallel Region: Thread 0: a,b,x= Thread 2: a,b,x= Thread 3: a,b,x= Thread 1: a,b,x= ************************************ Master thread doing serial work here ************************************ 2nd Parallel Region: Thread 0: a,b,x= Thread 3: a,b,x= Thread 1: a,b,x= Thread 2: a,b,x= Globalizacja zmiennych lokalnych z punktu widzenia wtku. Wartoci zdefiniowanych zmiennych s zachowywane pomidzy obszarami równoległymi. Dynamiczne tworzenie wtków naley w tym przypadku wyłczy. PCSS 25

26 #include <omp.h> main () { int i, n, chunk; float a[100], b[100], result; /* Some initializations */ n = 100; chunk = 10; result = 0.0; for (i=0; i < n; i++) { a[i] = i * 1.0; b[i] = i * 2.0; } #pragma omp parallel for \ default(shared) private(i) \ schedule(static,chunk) \ reduction(+:result) for (i=0; i < n; i++) result = result + (a[i] * b[i]); printf("final result= %f\n",result); } REDUCTION Proste operacje na zagregowanych zmiennych prywatnych. Składnia: reduction (operator: lista) Zmienne operandy typu prostego (skalarne), koniecznie jako SHARED. Operator nieprzeciony: +, *, -, /, &, ^,, &&, Uwaga: reguła łcznoci argumentów zmiennoprzecinkowych moe powodowa róne wyniki. PCSS 26

27 warunki / dyrektywy Dyrektywa Warunek PARALLEL DO/for SECTIONS SINGLE PARALLEL DO/for PARALLEL SECTIONS IF PRIVATE SHARED DEFAULT FIRSTPRIVATE LASTPRIVATE REDUCTION COPYIN SCHEDULE ORDERED NOWAIT PCSS 27

28 Uyteczne informacje Zadanie równoległe zlecamy do kolejki przeznaczonej dla zada równoległych. Do programisty naley takie wykorzystanie zasobów, by minimalizowa straty mocy obliczeniowej w obszarach nierównoległych kodu. Administrator dopuszcza zwikszenie liczby slotów czasowych na maszynach. Zwykle jest to ok. 10% liczby procesorów. Jeli braknie pamici lokalnej dla wtku uywamy: export KMP_STACKSIZE= PCSS 28

29 wiczenia > ssh guarana.man.poznan.pl nazwa uytkownika: ***** hasło: ***** wget PCSS 29

30 Altix3700 Niederministyczny czas wykonania zadania równoległego w zwizku z rón odległoci (hopy) pomidzy procesorami cecha architektury. Mona temu zaradzi! PCSS 30

31 Pierwszy program 1. Zobacz plik:> cat hello.c 2. Kompilacja: > icc -openmp hello.c -ohello hello.c(8) : (col. 1) remark: OpenMP DEFINED REGION WAS PARALLELIZED. 3. Uruchamianie w systemie kolejkowym PBS: Przygotuj plik konfiguracyjny: > cat hello.sh #!/bin/bash #PBS -l ncpus=4 #PBS -l mem=3gb export OMP_NUM_THREADS=4 /home/staff/miron/progs/openmp/hello 4. Zlecenie do PBS: > qsub hello.sh 5184.guarana.man.poznan.pl 5. Status zadania w PBS: > qstat 5184.guarana.man.poznan.pl 6. Pliki wynikowe: -rw miron staff :47 hello.sh.e5184 -rw miron staff :47 hello.sh.o > cat hello.sh.o5184 Hello World from thread = 0 Number of threads = 4 Hello World from thread = 3 Hello World from thread = 1 Hello World from thread = 2 8. Wykonaj go kilka razy!! PCSS 31

32 Mnoenie macierzy (ptle) 1. Zobacz plik:> cat multi.c 2. Kompilacja: > icc -openmp multi.c -omulti 3. Uruchamianie w systemie kolejkowym PBS: Przygotuj plik konfiguracyjny: > cat multi.sh #!/bin/bash #PBS -l ncpus=8 #PBS -l mem=3gb export OMP_NUM_THREADS=8 ulimit -s /home/staff/miron/progs/openmp/multi 4. Zlecenie do PBS: > qsub multi.sh 5184.guarana.man.poznan.pl 5. Status zadania w PBS: > qstat 5184.guarana.man.poznan.pl 6. Pliki wynikowe: -rw miron staff :47 hello.sh.e5184 -rw miron staff :47 hello.sh.o > cat hello.sh.o Historia zadania: Prosty accounting: tracejob -n <liczba_dni_wstecz> <nr_zadania> PCSS 32

33 Sekcje 1. Zobacz plik:> cat section.c 2. Kompilacja: > icc -openmp section.c -osection 3. Uruchamianie w systemie kolejkowym PBS: Przygotuj plik konfiguracyjny: > cat section.sh #!/bin/bash #PBS -l ncpus=8 #PBS -l mem=3gb export OMP_NUM_THREADS=8 /home/staff/miron/progs/openmp/section 4. Zlecenie do PBS: > qsub section.sh 5184.guarana.man.poznan.pl 5. Status zadania w PBS: > qstat 5184.guarana.man.poznan.pl 6. Pliki wynikowe: -rw miron staff :47 hello.sh.e5184 -rw miron staff :47 hello.sh.o > cat hello.sh.o Historia zadania: Prosty accounting: tracejob -n <liczba_dni_wstecz> <nr_zadania> PCSS 33

34 Błdy do znalezienia bug1.c PCSS 34

35 Błdy do znalezienia bug1.c Pomidzy PARALLEL FOR i for() nie powinny znale siadne instrukcje. PCSS 35

36 Błdy do znalezienia bug2.c PCSS 36

37 Błdy do znalezienia bug2.c Zasig zmiennych tid i total jest błdny. Tid i total powinny by prywatne. Co programista chciał przez to uzyska (for.. )? PCSS 37

38 Błdy do znalezienia bug3.c PCSS 38

39 Błdy do znalezienia bug3.c Z definicji dyrektywa omp_barrier nie moe by ulokowana na zewntrz bloku sekcji w obszrze SECTIONS. PCSS 39

40 Błdy do znalezienia bug4.c PCSS 40

41 Błdy do znalezienia bug4.c Stos wtku jest zbyt mały (SEGV). # This is for all systems limit stacksize unlimited (albo: ulimit -s dua liczba) # This is for IBM AIX systems setenv XLSMPOPTS "stack= " # This is for IA-32 Linux systems setenv KMP_STACKSIZE PCSS 41

42 Błdy do znalezienia bug5.c PCSS 42

43 Błdy do znalezienia bug5.c deadlock > bug5fix.c PCSS 43

44 Błdy do znalezienia bug6.c PCSS 44

45 Błdy do znalezienia bug6.c Zły zasig zmiennej sum. PCSS 45

Wprowadzenie do OpenMP

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

Bardziej szczegółowo

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

Bardziej szczegółowo

Wprowadzenie do zrównoleglania aplikacji z wykorzystaniem standardu OpenMP

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

Bardziej szczegółowo

Przetwarzanie Równoległe i Rozproszone

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

Bardziej szczegółowo

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

Bardziej szczegółowo

Programowanie współbieżne Wstęp do OpenMP. Rafał Skinderowicz

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

Bardziej szczegółowo

Elementy składowe: Przenośność oprogramowania Model SPMD Szczegółowe wersje (bindings) dla różnych języków programowania

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

Bardziej szczegółowo

Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI

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

Bardziej szczegółowo

wiczenia MPI-2 Mirosław Kupczyk PCSS,

wiczenia MPI-2 Mirosław Kupczyk PCSS, wiczenia MPI-2 Mirosław Kupczyk Miroslaw.Kupczyk@man.poznan.pl PCSS, 12.06.2006 http://szkolenia.man.poznan.pl Kompilacja i uruchomienie Origin 3800, Irix 6.5.25f MPT 1.9 Z linii komend: > cc -64 prog.c

Bardziej szczegółowo

Programowanie maszyn z pamięcią wspólną w standardzie 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

Bardziej szczegółowo

Open MP wer Rafał Walkowiak Instytut Informatyki Politechniki Poznańskiej Jesień 2014

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

Bardziej szczegółowo

Programowanie maszyn z pamięcią wspólną w standardzie 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

Bardziej szczegółowo

Open MP. Rafał Walkowiak Instytut Informatyki Politechniki Poznańskie Jesień 2011

Open MP. Rafał Walkowiak Instytut Informatyki Politechniki Poznańskie Jesień 2011 Open MP wersja 2.5 Rafał Walkowiak Instytut Informatyki Politechniki Poznańskie Jesień 2011 OpenMP standard specyfikacji przetwarzania współbieŝnego uniwersalny (przenośny) model równoległości typu fork-join

Bardziej szczegółowo

Wyklad 11 Języki programowania równoległego

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

Bardziej szczegółowo

OpenMP część praktyczna

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

Bardziej szczegółowo

Jędrzej Ułasiewicz Programowanie aplikacji równoległych 1. OpenMP

Jędrzej Ułasiewicz Programowanie aplikacji równoległych 1. OpenMP Jędrzej Ułasiewicz Programowanie aplikacji równoległych 1 1. Wprowadzenie...2 2. Model Programowania...3 3. Sterowanie równoległością...5 3.1 Pragma parallel...6 3.2 Pragmy sterujące podziałem pracy...8

Bardziej szczegółowo

Architektura, oprogramowanie i uytkowanie klastra PCSS. Marek Zawadzki <mzawadzk@man.poznan.pl>

Architektura, oprogramowanie i uytkowanie klastra PCSS. Marek Zawadzki <mzawadzk@man.poznan.pl> Architektura, oprogramowanie i uytkowanie klastra PCSS Marek Zawadzki Plan prezentacji: klastry krótkie wprowadzenie klaster PCSS budowa jak otrzyma konto na klastrze sposób dostpu

Bardziej szczegółowo

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

Bardziej szczegółowo

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

Równoległość i współbieżność Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna

Bardziej szczegółowo

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

Równoległość i współbieżność Równoległość i współbieżność Wykonanie sekwencyjne. Poszczególne akcje procesu są wykonywane jedna po drugiej. Dokładniej: kolejna akcja rozpoczyna się po całkowitym zakończeniu poprzedniej. Praca współbieżna

Bardziej szczegółowo

Programowanie Rozproszone i Równoległe

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

Bardziej szczegółowo

Wprowadzenie do obsługi systemów obliczeniowych PCSS

Wprowadzenie do obsługi systemów obliczeniowych PCSS Wprowadzenie do obsługi systemów obliczeniowych PCSS Marcin Pospieszny Poznańskie Centrum Superkomputerowo-Sieciowe 17 listopada 2011 Plan prezentacji 1 Architektura maszyn 2 Linux: podstawy 3 PBS 4 Aplikacje

Bardziej szczegółowo

HPC na biurku. Wojciech De bski

HPC na biurku. Wojciech De bski na biurku Wojciech De bski 22.01.2015 - co to jest? High Performance Computing most generally refers to the practice of aggregating computing power in a way that delivers much higher performance than one

Bardziej szczegółowo

PARADYGMATY I JĘZYKI PROGRAMOWANIA. Programowanie współbieżne... (w14)

PARADYGMATY I JĘZYKI PROGRAMOWANIA. Programowanie współbieżne... (w14) PARADYGMATY I JĘZYKI PROGRAMOWANIA Programowanie współbieżne... (w14) Treść 2 Algorytmy równoległe. Metoda sum prefiksowych Mnożenie tablic OpenMP Podstawy CUDA Informacja Sumy prefiksowe 3 Przykłady z

Bardziej szczegółowo

PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE. Mnożenie macierzy kwadratowych metodą klasyczną oraz blokową z wykorzystaniem OpenMP.

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

Bardziej szczegółowo

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++ Podstawy Programowania - Roman Grundkiewicz - 013Z Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub

Bardziej szczegółowo

Jak ujarzmić hydrę czyli programowanie równoległe w Javie. dr hab. Piotr Bała, prof. UW ICM Uniwersytet Warszawski

Jak ujarzmić hydrę czyli programowanie równoległe w Javie. dr hab. Piotr Bała, prof. UW ICM Uniwersytet Warszawski Jak ujarzmić hydrę czyli programowanie równoległe w Javie dr hab. Piotr Bała, prof. UW ICM Uniwersytet Warszawski Prawo Moore a Ekonomicznie optymalna liczba tranzystorów w układzie scalonym zwiększa się

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Sposoby przekazywania parametrów w metodach.

Sposoby przekazywania parametrów w metodach. Temat: Definiowanie i wywoływanie metod. Zmienne lokalne w metodach. Sposoby przekazywania parametrów w metodach. Pojcia klasy i obiektu wprowadzenie. 1. Definiowanie i wywoływanie metod W dotychczas omawianych

Bardziej szczegółowo

Komputerowe Obliczenia Równoległe: Wstęp do OpenMP i MPI

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,

Bardziej szczegółowo

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++ Podstawy Programowania :: Roman Grundkiewicz :: 014 Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub

Bardziej szczegółowo

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1 Procesy i wątki Krzysztof Banaś Obliczenia równoległe 1 Procesy i wątki Proces: ciąg rozkazów (wątek główny) i ewentualnie inne wątki stos (wątku głównego) przestrzeń adresowa dodatkowe elementy tworzące

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Makefile Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 14 Co to jest Makefile Makefile jest plikiem reguł dla programu make. Wykorzystywany jest

Bardziej szczegółowo

Programowanie Współbieżne

Programowanie Współbieżne Programowanie Współbieżne Agnieszka Łupińska 5 października 2016 Hello World! helloworld.cu: #include global void helloworld(){ int thid = (blockidx.x * blockdim.x) + threadidx.x; printf("hello

Bardziej szczegółowo

Programowanie współbieżne OpenMP wybrane wydajność. Rafał Skinderowicz

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie Współbieżne

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

16. Taksonomia Flynn'a.

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ę

Bardziej szczegółowo

Proces tworzenia programu:

Proces tworzenia programu: Temat 1 Pojcia: algorytm, program, kompilacja i wykonanie programu. Proste typy danych i deklaracja zmiennych typu prostego. Instrukcja przypisania. Operacje wejcia/wyjcia. Przykłady prostych programów

Bardziej szczegółowo

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1 Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1 Wprowadzenie Procesory graficzne GPU (Graphics Processing Units) stosowane są w kartach graficznych do przetwarzania grafiki komputerowej

Bardziej szczegółowo

kiedy znowu uzyska sterowanie, to podejmuje obliczenie od miejsca, w którym poprzednio przerwała, i z dotychczasowymi wartościami zmiennych,

kiedy znowu uzyska sterowanie, to podejmuje obliczenie od miejsca, w którym poprzednio przerwała, i z dotychczasowymi wartościami zmiennych, Korutyny Wykład13,str1 tak działa podprogram: PROGRAM GŁÓWNY wywołanie PODPROGRAM tak działają korutyny: KORUTYNA A resume B resume B KORUTYNA B resume A Korutyny Wykład13,str2 Korutyny mają zwykle więcej

Bardziej szczegółowo

Użytkowanie systemów obliczeniowych PCSS Artur Trojanowski

Użytkowanie systemów obliczeniowych PCSS Artur Trojanowski Użytkowanie systemów obliczeniowych PCSS 13.01.2016 Artur Trojanowski Plan prezentacji Architektura maszyn Zwiedzanie serwerowni Opis systemów kolejkowych Dostęp do maszyn Prowadzenie obliczeń Narzędzia

Bardziej szczegółowo

OpenMP środowisko programowania komputerów równoległych ze wspólną pamięcią

OpenMP środowisko programowania komputerów równoległych ze wspólną pamięcią Pro Dialog 15 (2003), 107 121 Wydawnictwo NAKOM Poznań OpenMP środowisko programowania komputerów równoległych ze wspólną pamięcią Monika DEMICHOWICZ, Paweł MAZUR Politechnika Wrocławska, Wydział Informatyki

Bardziej szczegółowo

Algorytmy i Struktury Danych

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

Bardziej szczegółowo

Wprowadzenie do kompilatorów

Wprowadzenie do kompilatorów Wprowadzenie do kompilatorów Czy ja kiedykolwiek napisz jaki kompilator? Jakie zadania ma do wykonania kompilator? Czy jzyk formalny to rodzaj jzyka programowania? Co to jest UML?, Czy ja kiedykolwiek

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

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ę

Bardziej szczegółowo

System obliczeniowy laboratorium oraz. mnożenia macierzy

System obliczeniowy laboratorium oraz. mnożenia macierzy System obliczeniowy laboratorium.7. oraz przykładowe wyniki efektywności mnożenia macierzy opracował: Rafał Walkowiak Materiały dla studentów informatyki studia niestacjonarne październik 1 SYSTEMY DLA

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Wstęp do programowania

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.

Bardziej szczegółowo

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!! Temat: Klasy typu sealed. Klasy abstrakcyjne. Deklaracja i implementacja interfejsu. Typ Object i operatory is oraz as. Czas ycia obiektu. Destruktory. 1. Klasa typu sealed Przykład 1 Klasa typu sealed

Bardziej szczegółowo

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania Przemysław Kobylański Wprowadzenie Każdy program w C musi zawierać przynajmniej funkcję o nazwie main(): Aby możliwe

Bardziej szczegółowo

Program Sprzeda wersja 2011 Korekty rabatowe

Program Sprzeda wersja 2011 Korekty rabatowe Autor: Jacek Bielecki Ostatnia zmiana: 14 marca 2011 Wersja: 2011 Spis treci Program Sprzeda wersja 2011 Korekty rabatowe PROGRAM SPRZEDA WERSJA 2011 KOREKTY RABATOWE... 1 Spis treci... 1 Aktywacja funkcjonalnoci...

Bardziej szczegółowo

Wstęp do programowania 2

Wstęp do programowania 2 Wstęp do programowania 2 wykład 10 Zadania Agata Półrola Wydział Matematyki UŁ 2005/2006 http://www.math.uni.lodz.pl/~polrola Współbieżność dotychczasowe programy wykonywały akcje sekwencyjnie Ada umożliwia

Bardziej szczegółowo

O superkomputerach. Marek Grabowski

O superkomputerach. Marek Grabowski O superkomputerach Marek Grabowski Superkomputery dziś Klastry obliczeniowe Szafy (od zawsze) Bo komputery są duże Półki i blade'y (od pewnego czasu) Większe upakowanie mocy obliczeniowej na m^2 Łatwiejsze

Bardziej szczegółowo

Wstp. Warto przepływu to

Wstp. Warto przepływu to 177 Maksymalny przepływ Załoenia: sie przepływow (np. przepływ cieczy, prdu, danych w sieci itp.) bdziemy modelowa za pomoc grafów skierowanych łuki grafu odpowiadaj kanałom wierzchołki to miejsca połcze

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 1 / 38 Przypomnienie Programowanie imperatywne Program

Bardziej szczegółowo

Programowanie w języku C++ Grażyna Koba

Programowanie w języku C++ Grażyna Koba Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad

Bardziej szczegółowo

Bazy danych. Plan wykładu. Podzapytania - wskazówki. Podzapytania po FROM. Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych.

Bazy danych. Plan wykładu. Podzapytania - wskazówki. Podzapytania po FROM. Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych. Plan wykładu azy danych Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych. Dokoczenie SQL Zalenoci wielowartociowe zwarta posta normalna Dekompozycja do 4NF Przykład sprowadzanie do

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wykład 8: klasy cz. 4

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

Bardziej szczegółowo

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

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

Bardziej szczegółowo

Delphi Laboratorium 3

Delphi Laboratorium 3 Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,

Bardziej szczegółowo

... Ireneusz Mrozek. Wydział Informatyki

... Ireneusz Mrozek. Wydział Informatyki Ireneusz Mrozek Wydział Informatyki Proces wykonujcy si program Proces jednostka pracy systemu zarzdzan przez system operacyjny. W skład procesu wchodz: - program; - dane - zawarto rejestrów, stosu; -

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 1 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan wykładów (1) Algorytmy i programy Proste typy danych Rozgałęzienia

Bardziej szczegółowo

Planowanie adresacji IP dla przedsibiorstwa.

Planowanie adresacji IP dla przedsibiorstwa. Planowanie adresacji IP dla przedsibiorstwa. Wstp Przy podejciu do planowania adresacji IP moemy spotka si z 2 głównymi przypadkami: planowanie za pomoc adresów sieci prywatnej przypadek, w którym jeeli

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

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,

Bardziej szczegółowo

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

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ą

Bardziej szczegółowo

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

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

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

Bardziej szczegółowo

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Temat 1: Podstawowe pojęcia: program, kompilacja, kod Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,

Bardziej szczegółowo

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

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:

Bardziej szczegółowo

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa 1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Wykład 10 - boost Thread. 8 czerwca 2007 Równoległość bardzo wolna reakcja człowieka wolne urządzenia wejścia - wyjścia (np. drukarki) bardzo szybkie procesory można przeprowadzać obliczenia podczas obsługi

Bardziej szczegółowo

Podstawy Programowania.

Podstawy Programowania. Podstawy Programowania http://www.saltbox.com/img/under_the_hood.png O mnie... dr inż. Łukasz Graczykowski Zakład Fizyki Jądrowej Wydział Fizyki Politechniki Warszawskiej lgraczyk@if.pw.edu.pl www.if.pw.edu.pl/~lgraczyk/wiki

Bardziej szczegółowo

Kompilator języka C na procesor 8051 RC51 implementacja

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

Bardziej szczegółowo

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

Bardziej szczegółowo

Podstawy systemu kolejkowego SLURM

Podstawy systemu kolejkowego SLURM Podstawy systemu kolejkowego SLURM Uniwersytet Warszawski Matematycznego i Komputerowego http:// Marcin Stolarek m.stolarek@icm.edu.pl Maciej Szpindler m.szpindler@icm.edu.pl Plan szkolenia Organizacja

Bardziej szczegółowo

Mirosław Kupczyk miron@man.poznan.pl. Pozna, PCSS, 17-18.01.2005. Szkolenie: "Architektura i uytkowanie klastra Linux IA-64"

Mirosław Kupczyk miron@man.poznan.pl. Pozna, PCSS, 17-18.01.2005. Szkolenie: Architektura i uytkowanie klastra Linux IA-64 Mirosław Kupczyk miron@man.poznan.pl $ %! " # & ' Wzgldy historyczne Naturalna ewolucja systemów luno ze sob powizanych znajdujcych si w jednej oraganizacji, ch współdzielenia zasobów obliczeniowych, danych,

Bardziej szczegółowo

Zmienne, stałe i operatory

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

Bardziej szczegółowo

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga! Programowanie I O czym będziemy mówili Podstawy programowania w językach proceduralnym ANSI C obiektowym Java Uwaga! podobieństwa w podstawowej strukturze składniowej (zmienne, operatory, instrukcje sterujące...)

Bardziej szczegółowo

Sosnowiec, dn... Imię i nazwisko...

Sosnowiec, dn... Imię i nazwisko... Sosnowiec, dn.... Imię i nazwisko... Test znajomości zaawansowanch technik programowania składa się z 10 ptań. Dla każdego ptania zaproponowano czter odpowiedzi, z którch tlko jedna jest prawidłowa. Na

Bardziej szczegółowo

Pobieranie argumentów wiersza polecenia

Pobieranie argumentów wiersza polecenia Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:

Bardziej szczegółowo

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

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 3.

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

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

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

Bardziej szczegółowo

Obliczenia równoległe w zagadnieniach inżynierskich. Wykład 4

Obliczenia równoległe w zagadnieniach inżynierskich. Wykład 4 Wykład 4 p. 1/14 Obliczenia równoległe w zagadnieniach inżynierskich Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Klastry Wykład

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

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,

Bardziej szczegółowo

Klonowanie MAC adresu oraz TTL

Klonowanie MAC adresu oraz TTL 1. Co to jest MAC adres? Klonowanie MAC adresu oraz TTL Adres MAC (Media Access Control) to unikalny adres (numer seryjny) kadego urzdzenia sieciowego (jak np. karta sieciowa). Kady MAC adres ma długo

Bardziej szczegółowo

Język ludzki kod maszynowy

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

Bardziej szczegółowo

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana Wykład Materiały bazują częściowo na slajdach Marata Dukhana Języki programowania Kompilowane np. C, C++, Pascal Interpretowane np. JavaScript, PHP, Python, VBA Pośrednie np. Java, C# Znane kompilatory

Bardziej szczegółowo

Kompilacja i uruchamianie zadań na klastrach Perszeron i Mustang.

Kompilacja i uruchamianie zadań na klastrach Perszeron i Mustang. Kompilacja i uruchamianie zadań na klastrach Perszeron i Mustang. Klaster Perszeron pracuje pod kontrolą systemu SuSE Linux Enterprise Server 10 w wersji 64bitowej i wyposażony jest w zestaw standardowych

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Instrukcja obsługi programu Pilot PS 5rc

Instrukcja obsługi programu Pilot PS 5rc Instrukcja obsługi programu Pilot PS 5rc Spis treci 1.Wprowadzenie....3 2. Wymagania....3 3. Instalacja oprogramowania...3 4. Uruchomienie Programu...5 4.1. Menu główne...5 4.2. Zakładki...6 5. Praca z

Bardziej szczegółowo

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

Bardziej szczegółowo

Wstęp. do języka C na procesor 8051. (kompilator RC51)

Wstęp. do języka C na procesor 8051. (kompilator RC51) Wstęp do języka C na procesor 8051 (kompilator RC51) Kompilator języka C Kompilator RC51 jest kompilatorem języka C w standardzie ANSI Ograniczeń w stosunku do ANSI jest niewiele głównie rzadkie operacje

Bardziej szczegółowo

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

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

Bardziej szczegółowo

!"" ' #$$$%&' ()*$+&',! Nazwy programów, polece, katalogów, wyniki działania wydawanych polece.

! ' #$$$%&' ()*$+&',! Nazwy programów, polece, katalogów, wyniki działania wydawanych polece. !"" "! "#$%&$ ' #$$$%&' ()*$+&',! (" " $! #)' -$$!.$$/)$! 01 021! 3$ Czcionka o stałej szerokoci Nazwy programów, polece, katalogów, wyniki działania wydawanych polece. Czcionka o stałej szerokoci pogrubiona

Bardziej szczegółowo