CUDA ćwiczenia praktyczne

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

Download "CUDA ćwiczenia praktyczne"

Transkrypt

1 CUDA ćwiczenia praktyczne 7 kwietnia 2011, Poznań Marek Błażewicz, Michał Kierzynka,

2 Agenda Wprowadzenie do narzędzi umożliwiających tworzenie programów w środowisku CUDA. Zadanie 0; stworzenie i skompilowanie pierwszego programu Zapoznanie z prostym środowiskiem stworzonym na potrzeby szkolenia; Zadanie 1: Hello World na karcie graficznej; Zadanie 2: porównanie wydajności kopiowania danych pomiędzy różnymi typami pamięci; Zadanie 3: zapoznanie z tablicami 2D i ich zastosowaniem; debugowanie i szukanie błędów; Zadanie 4: transpozycja macierzy; optymalizacja dostępu do pamięci global, shared i optymalizacja przy pomocy okienkowego profilowania; Zadanie 5: algorytm redukcji; Zadanie 6: ukrywanie opóźnień związanych z uruchamianiem kernela i dodatkowych wątków 2

3 Hello World 0.1 (~/workshop/les0) CUDA Driver /dev/nvidiactl /dev/nvidia<n> /usr/lib[64]/libopencl.so moduł jądra odpowiedzialny za komunikację z kartą GPGPU; CUDA Toolkit domyślna ścieżka: /usr/local/cuda; zbiór narzędzi (/bin) do: kompilacji (nvcc), debugowania (cuda-gdb), optymalizowania (computeprof); biblioteki dołączane dynamicznie (/lib[64]); pliki nagłówkowe (/include); obszerna dokumentacja (/doc); NVIDIA GPU Computing SDK domyślna ścieżka: $(HOME)/NVIDIA_GPU_Computing_SDK ścieżka w trakcie zajęć: /opt/nvidia_gpu_computing_sdk przykładowe programy na GPU (/C/src) zbiór funkcji i makr przydatnych do uruchamiania, zarządzania i sprawdzania poprawności uruchamianych kerneli; /opt/nvidia_gpu_computing_sdk/c/bin/linux/release/devicequery 3

4 Hello World 0.1 (~/workshop/les0) 4 Image by NVIDIA

5 Agenda Wprowadzenie do narzędzi umożliwiających tworzenie programów w środowisku CUDA. Zadanie 0; stworzenie i skompilowanie pierwszego programu Zapoznanie z prostym środowiskiem stworzonym na potrzeby szkolenia; Zadanie 1: Hello World na karcie graficznej; Zadanie 2: porównanie wydajności kopiowania danych pomiędzy różnymi typami pamięci; Zadanie 3: zapoznanie z tablicami 2D i ich zastosowaniem; debugowanie i szukanie błędów; Zadanie 4: transpozycja macierzy; optymalizacja dostępu do pamięci global, shared i optymalizacja przy pomocy okienkowego profilowania; Zadanie 5: algorytm redukcji; Zadanie 6: ukrywanie opóźnień związanych z uruchamianiem kernela i dodatkowych wątków 5

6 Hello World 0.1 (~/workshop/les0) Prosta kompilacja: [/usr/local/cuda/bin/]nvcc main.cu Kompilacja z zewnętrznym linkerem: [/usr/local/cuda/bin/]nvcc -c main.cu -o main.cu.o g++ -L[/usr/local/cuda/]lib[64]/ -lcudart main.cu.o Uruchamianie: export LD_LIBRARY_PATH=[/usr/local/cuda/]lib[64]/./a.out Zadanie 0 - napisać prosty program, który: a) zaalokuje tablicę na CPU i wypełni ją przykładowymi liczbami; b) zaalokuje tablicę na GPU i przegra do niej uprzednio wykreowane liczby; c) uruchomi kernel, którego zadaniem jest przemnożenie każdego elementu przez 2; d) skopiuje wynikową tablicę z karty i wypisze ją na ekran; 6

7 Hello World 0.1 (~/workshop/les0) #include<stdio.h> int src[ ] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int dst[10] = {0}; global <definicja kernela> int main(){ int * src_dev, * dst_dev; <allokacja pamięci na karcie (cudamalloc)> <skopiowanie danych na kartę (cudamemcpy)> <uruchmienie kernela> <skopiowanie danych z karty (cudamemcpy)> } for(int i = 0; i < 10; i++) printf("%d\t", dst[i]); printf("\n"); 7

8 Hello World 0.1 (~/workshop/les0) #include <stdio.h> int src[ ] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int dst[10] = {0}; } global void kernel(int * src, int * dst){ dst[threadidx.x] = src[threadidx.x] * 2; int main(){ int * src_dev, * dst_dev; cudamalloc(&src_dev, sizeof(src)); cudamalloc(&dst_dev, sizeof(dst)); cudamemcpy(src_dev, src, sizeof(src), cudamemcpyhosttodevice); kernel<<<1, 10>>>(src_dev, dst_dev); cudamemcpy(dst, dst_dev, sizeof(src), cudamemcpydevicetohost); } for(int i = 0; i < 10; i++) printf("\n"); printf("%d\t", dst[i]); 8

9 Agenda Wprowadzenie do narzędzi umożliwiających tworzenie programów w środowisku CUDA. Zadanie 0; stworzenie i skompilowanie pierwszego programu Zapoznanie z prostym środowiskiem stworzonym na potrzeby szkolenia; Zadanie 1: Hello World na karcie graficznej; Zadanie 2: porównanie wydajności kopiowania danych pomiędzy różnymi typami pamięci; Zadanie 3: zapoznanie z tablicami 2D i ich zastosowaniem; debugowanie i szukanie błędów; Zadanie 4: transpozycja macierzy; optymalizacja dostępu do pamięci global, shared i optymalizacja przy pomocy okienkowego profilowania; Zadanie 5: algorytm redukcji; Zadanie 6: ukrywanie opóźnień związanych z uruchamianiem kernela i dodatkowych wątków 9

10 Lista plików i katalogów w zadaniach szkoleniowych ~/workshop/les<n>_xxx katalog z zadaniem szkoleniowym, gdzie n jest numerem lekcji, a xxx skrótowym opisem jej treści; ~/workshop/les<n>_c_xxx j.w. z tą różnicą, że jest to katalog wgrany na życzenie i zawiera prawidłowe rozwiązanie zadania; Makefile plik do automatycznej kompilacji przygotowanych zadań; automatycznie wyszukuje najnowszą wersję kompilatora nvcc i podlinkowuje wymagane biblioteki, wystarczy wpisać: make; src/ - katalog z plikami źródłowymi danego zadania, w tym: main.cu główny plik zarządzający przeprowadzanymi obliczeniami; params.h (opcjonalnie) parametry obliczeń (szerokość, wysokość tablicy, typ danych, etc.) cpu_func.c(h)(opcjonalnie) plik zawierający referencyjne funkcje na CPU; obj/ - katalog zawierający pliki obiektowe; les<n>_.* - plik wykonywalny danego zadania; ~/workshop/common/common.h definicje przydatnych funkcji i makr, pomagających sprawdzać poprawność i mierzyć wydajność przeprowadzanych obliczeń; 10

11 Spis makr i funkcji w pliku: common.h #define CUDA_SAFE_CALL(call) makro otaczające funkcje API języka CUDA C (cudamalloc, cudamemcpy, etc.), i sprawdzające poprawność ich wykonania; w razie błędu makro to kończy wykonywanie programu, wypisując nr linii i nazwę pliku, w którym wystąpił błąd; #define cudacheckmsg(msg) makro sprawdzające poprawność ostatnio wykonanych kerneli oraz funkcji asynchronicznych; w razie porażki wypisuje wiadomość msg i kończy wykonywanie programu; template<class T> void printpartofthetable(...) - bardzo przydatna funkcja do wizualnego poszukiwania błędów w obliczeniach; porównuje dwie tablice w zadanych przez użytkownika miejscach i wypisuje pierwszą z zaznaczonymi w kolorze różniącymi się miejscami; template<class T> bool checkresults(...) - porównuje 2 tablice i wypisuje informacje czy są identyczne; void starttime(); long stoptime(...); - funkcje odmierzające czas interwału pomiędzy ich uruchomieniem; 2. zwraca czas w μs; double getgflops(...); - zwraca i opcjonalnie wypisuje ilość operacji arytmetycznych/s. na podstawie czasu i sum. liczby operacji; double getbandwidthgbs(...) - zwraca i opcjonalnie wypisuje przepustość/s. na podstawie czasu i wielkości pamięci; template <class T>T divup(t x, T y) zwraca sufit dzielenia liczb x przez y; przydatne w obliczaniu ilości koniecznych bloków potrzebnych do pokrycia całej domeny obliczeniowej; template <typename T> T getgpuval(t * valptr) przydatna w debugowaniu funkcja pobierająca z karty graficznej wartość typu T wskazanej przez wskaźnik valptr; #define val(ptr, x, y, pitch) makro pozwalające na szybkie znalezienie miejsca w tablicy 2D wskazanej przez wskaźnik ptr, w kolumnie x, wierszu y i długości wiersza w bajtach pitch. 11

12 Spis makr, funkcji i zmiennych wspólnych dla wszystkich zadań Lista funkcji i makr znajdujących się w pliku params.h: #define WIDTH #define HEIGHT makra definiujące szerokość i wysokość tablicy, na której przeprowadzane są obliczenia; #define MEMSIZE makra definiujące wielkość tablicy oraz ilość wykonanych operacji arytmetycznych; makra te najczęściej są zależne #define FLOP od WIDTH oraz HEIGHT, i służą do obliczania przepustowości pamięci i obliczeń; #define P makro definiujące typ danych na których przeprowadzane są obliczenia; Lista funkcji i makr znajdujących się w pliku main.cu: int main() główna funkcja zawierająca wywołania wszystkich pozostałych procedur i kerneli; void init_host_mem() funkcja inicjalizująca pamięć w przestrzeni adresowej procesora; void init_dev_mem() funkcja inicjalizująca pamięć w przestrzeni adresowej karty graficznej; global void kernel<n>() - definicja kernela wykonywanego na karcie graficznej; n oznacza stopień optymalizacji kernela; P *src, *dst, *ref wskaźniki do tablic znajdujących się w przestrzeni adresowej procesora, wskazujących kolejno na tablicę: źródłową, docelową i referencyjną; zmienne o tej samej nazwie, tylko, że z przyrostkiem, oznaczają, w zależności od przyrostka: _dev wskazywany adres znajduje się na karcie graficznej; _dev_pitched wskazywany adres znajduje się na karcie graficznej i jest tablicą 2D; _pl wskazywany adres znajduje się w przestrzeni adresowej procesora i jest zaalokowany w trybie Page-Locked; 12

13 Ogólny schemat obliczeń w zadaniach szkoleniowych int main(){ long t = 0; init_host_mem(); init_dev_mem(); starttime(); // inicjalizacja pamięci na procesorze // inicjalizacja pamięci na karcie graficznej // rozpoczęcie odmierzania czasu kernel_host(src, ref, 150, 20); // obliczenia referencyjne na procesorze t = stoptime(); getbandwidthgbs(t, MEMSIZE * 2); getgflops(t, FLOP); // zakończenie odmierzania czasu // obliczenie i wypisanie wydajności obliczeń dim3 blockdim(16, 16); // zdefiniowanie konfiguracji uruchomienia kernela dim3 griddim(divup<int>(width, blockdim.x), starttime(); divup<int>(height, blockdim.y)); kernel<<<griddim, blockdim>>>(src_dev, dst_dev, 150, 20); cudathreadsynchronize(); t = stoptime(); getbandwidthgbs(t, MEMSIZE * 2); getgflops(t, FLOP); // poprzez stworzenie odpowiednich struktur; // griddim: wymiary siatki bloków; blockdim: wym. bloku // j.w. // uruchomienia obliczeń na GPU // oczekiwanie na zakończenie obliczeń // j.w. // j.w. CUDA_SAFE_CALL(cudaMemcpy(dst, dst_dev, MEMSIZE, cudamemcpydevicetohost));// skopowianie tablic z GPU w celu if(!checkresults(stdout, dst, MEMSIZE, ref, MEMSIZE, // sprawdzenia poprawności obliczeń; MEMSIZE / sizeof(p), 1)){// sprawdzenie poprawności obliczeń; // printpartofthetable(...) // opcjonalne wypisanie tablicy w celu wizualnego zlokalizowania } // miejsca w którym obliczenia są niepoprawne; } 13

14 Agenda Wprowadzenie do narzędzi umożliwiających tworzenie programów w środowisku CUDA. Zadanie 0; stworzenie i skompilowanie pierwszego programu Zapoznanie z prostym środowiskiem stworzonym na potrzeby szkolenia; Zadanie 1: Hello World na karcie graficznej; Zadanie 2: porównanie wydajności kopiowania danych pomiędzy różnymi typami pamięci; Zadanie 3: zapoznanie z tablicami 2D i ich zastosowaniem; debugowanie i szukanie błędów; Zadanie 4: transpozycja macierzy; optymalizacja dostępu do pamięci global, shared i optymalizacja przy pomocy okienkowego profilowania; Zadanie 5: algorytm redukcji; Zadanie 6: ukrywanie opóźnień związanych z uruchamianiem kernela i dodatkowych wątków 14

15 1.0 Hello World (~/workshop/les1_hello) Zadanie 1: TODO: stworzony program ma skopiować tablicę ref=>src_dev, następnie przy pomocy dedykowanego kernela przegrać src_dev=>dst_dev; następnie przesłać tablicę dst_dev=>dst; po wykonanych operacjach tablica dst ma mieć postać Hello World a) skopiować tablicę ref (na hoście) => src_dev (na GPU); b) stworzyć kernel, który w już zdefiniowanej konfiguracji uruchomienia ma przegrać tablice src_dev => dst_dev; każdy wątek ma skopiować dokładnie jeden element tablicy; c) znaleźć błąd w istniejącym szkielecie (podpowiedź: użyj CUDA_SAFE_CALL); d) pytania mile widzianą alternatywą wspólnego oczekiwania na zakończenie zadania ;). 15

16 Agenda Wprowadzenie do narzędzi umożliwiających tworzenie programów w środowisku CUDA. Zadanie 0; stworzenie i skompilowanie pierwszego programu Zapoznanie z prostym środowiskiem stworzonym na potrzeby szkolenia; Zadanie 1: Hello World na karcie graficznej; Zadanie 2: porównanie wydajności kopiowania danych pomiędzy różnymi typami pamięci; Zadanie 3: zapoznanie z tablicami 2D i ich zastosowaniem; debugowanie i szukanie błędów; Zadanie 4: transpozycja macierzy; optymalizacja dostępu do pamięci global, shared i optymalizacja przy pomocy okienkowego profilowania; Zadanie 5: algorytm redukcji; Zadanie 6: ukrywanie opóźnień związanych z uruchamianiem kernela i dodatkowych wątków 16

17 2.0 kopiowanie (~/workshop/les2_kopiowanie) Zadanie 2: TODO, porównanie wydajności różnych rodzai kopiowania: host<=>host; host<=>device; device<=>device; host_pl<=>host_pl; host_pl<=>device; a) dopisać kopiowanie: host_pl<=>host_pl, host=>device, host<=device, host=>device, host_pl<=device, host_pl=>device, device=>device, device=>(kernel)device b) przetestować wydajność różnych konfiguracji uruchomienia kernela; c) porównać wydajność różnych typów kopiowania; 17

18 Agenda Wprowadzenie do narzędzi umożliwiających tworzenie programów w środowisku CUDA. Zadanie 0; stworzenie i skompilowanie pierwszego programu Zapoznanie z prostym środowiskiem stworzonym na potrzeby szkolenia; Zadanie 1: Hello World na karcie graficznej; Zadanie 2: porównanie wydajności kopiowania danych pomiędzy różnymi typami pamięci; Zadanie 3: zapoznanie z tablicami 2D i ich zastosowaniem; debugowanie i szukanie błędów; Zadanie 4: transpozycja macierzy; optymalizacja dostępu do pamięci global, shared i optymalizacja przy pomocy okienkowego profilowania; Zadanie 5: algorytm redukcji; Zadanie 6: ukrywanie opóźnień związanych z uruchamianiem kernela i dodatkowych wątków 18

19 3.0 tablice 2D (~/workshop/les3_pitch) Zadanie 3: TODO, zaznajomienie się z tablicami 2D; porównanie wydajności w porównaniu z tablicami liniowymi i znajdowanie błędów obliczeń; a) zaalokować pamięć 2D (src_dev_pitched, dst_dev_pitched); b) znaleźć błąd w pierwszym kernelu i/lub jego uruchmieniu; c) odkomentować wywołania funkcji printpartofthetable, i spróbować wykorzystać ją do znalezienia błędu; d) dopisać kernel korzystający z tablic 2D (podpowiedź, skorzystaj z makra val); e) porównać wydajność obu kerneli na różnych architekturach; f) cuda-gdb? 19

20 Agenda Wprowadzenie do narzędzi umożliwiających tworzenie programów w środowisku CUDA. Zadanie 0; stworzenie i skompilowanie pierwszego programu Zapoznanie z prostym środowiskiem stworzonym na potrzeby szkolenia; Zadanie 1: Hello World na karcie graficznej; Zadanie 2: porównanie wydajności kopiowania danych pomiędzy różnymi typami pamięci; Zadanie 3: zapoznanie z tablicami 2D i ich zastosowaniem; debugowanie i szukanie błędów; Zadanie 4: transpozycja macierzy; optymalizacja dostępu do pamięci global, shared i optymalizacja przy pomocy okienkowego profilowania; Zadanie 5: algorytm redukcji; Zadanie 6: ukrywanie opóźnień związanych z uruchamianiem kernela i dodatkowych wątków 20

21 4.0 transpozycja (~/workshop/les4_transpose) Zadanie 4: zaimplementuj i zbadaj różne techniki transponowania macierzy; KERNEL1: src_dev dst_dev TODO, kernel2 przeanalizuj sposób przetwarzania; czy da się jakoś wykorzystać posiadanie cache'u na kartach FERMI? 21

22 4.0 transpozycja (~/workshop/les4_transpose) Zadanie 4: zaimplementuj i zbadaj różne techniki transponowania macierzy; KERNEL2: src_dev dst_dev TODO, kernel3 Jak wykorzystać pamięć shared by przyspieszyć transpozycję? 22

23 4.0 transpozycja (~/workshop/les4_transpose) Zadanie 4: zaimplementuj i zbadaj różne techniki transponowania macierzy; KERNEL3: src_dev dst_dev TODO, kernel4 Czy można niskim kosztem zoptymalizować konflikty w dostępie do pamięci? 23

24 4.0 transpozycja (~/workshop/les4_transpose) Zadanie 4: zaimplementuj i zbadaj różne techniki transponowania macierzy; KERNEL4: src_dev dst_dev TODO, kernel5 partition camping? 24

25 4.0 transpozycja (~/workshop/les4_transpose) Zadanie 4: zaimplementuj i zbadaj różne techniki transponowania macierzy; KERNEL5: src_dev dst_dev

26 4.0 transpozycja (~/workshop/les4_transpose) Zadanie 4: zaimplementuj i zbadaj różne techniki transponowania macierzy; TODO: CUDA Visual Profiler. ścieżka: [/usr/local/cuda/]computeprof/bin/computeprof; local store (load) ilość zapisów (pobrań) zmiennych do (z) pamięci local; branch ilość warpów które wykonywały jedną (ta samą) ścieżkę kodu; divergent branch ilość warpów które wykonywały więcej niż jedną ścieżkę kodu; instructions liczba wykonanych instrukcji; warp serialize liczba konfliktów w dostępie do pamięci shared; cta launched ilość wykonanych bloków na multiprocesorze; occupancy procentowe wypełnienie multiprocesorów warpami; gst(gld)<n> liczba zapisów (odczytów) wielkości n bajtów do (z) pamięci globalnej; 26

27 Agenda Wprowadzenie do narzędzi umożliwiających tworzenie programów w środowisku CUDA. Zadanie 0; stworzenie i skompilowanie pierwszego programu Zapoznanie z prostym środowiskiem stworzonym na potrzeby szkolenia; Zadanie 1: Hello World na karcie graficznej; Zadanie 2: porównanie wydajności kopiowania danych pomiędzy różnymi typami pamięci; Zadanie 3: zapoznanie z tablicami 2D i ich zastosowaniem; debugowanie i szukanie błędów; Zadanie 4: transpozycja macierzy; optymalizacja dostępu do pamięci global, shared i optymalizacja przy pomocy okienkowego profilowania; Zadanie 5: algorytm redukcji; Zadanie 6: ukrywanie opóźnień związanych z uruchamianiem kernela i dodatkowych wątków 27

28 5.0 redukcja (~/workshop/les5_reduce) Zadanie 5: zaimplementuj i zoptymalizuj algorytm redukcji (1 blok); KERNEL1: ++ SM + SM global shared TODO, kernel2 przeanalizuj sposób przetwarzania; czy da się jakoś zrównoleglić 2. etap (tylko w pamięci shared) poprzez równoległe sumowanie? W jaki sposób zapewnić spójność danych? 28

29 5.0 redukcja (~/workshop/les5_reduce) Zadanie 5: zaimplementuj i zoptymalizuj algorytm redukcji (1 blok); KERNEL2: ++ SM + SM + SM global shared TODO, kernel3 W jaki sposób wykorzystać fakt, że warp zawsze wykonuje tą samą instrukcję? Czy działa to na wszystkich typach kart (podpowiedź: volatile)? 29

30 5.0 redukcja (~/workshop/les5_reduce) Zadanie 5: zaimplementuj i zoptymalizuj algorytm redukcji (1 blok); KERNEL3: ++ SM + SM if() + + SMlast warp global shared TODO, kernel4 Czy usunięcie pętli dla ostatniego warpa może przyspieszyć wykonywany proces? pragma unroll? 30

31 5.0 redukcja (~/workshop/les5_reduce) Zadanie 5: zaimplementuj i zoptymalizuj algorytm redukcji (1 blok); KERNEL4: + ++ SM SM if() for() + + SMlast warp global shared TODO, kernel5 Czy usunięcie pozostałej pętli może przyspieszyć wykonywany proces? Jak to zrobić (podpowiedź: #if TILE >= 512)? 31

32 5.0 redukcja (~/workshop/les5_reduce) Zadanie 5: zaimplementuj i zoptymalizuj algorytm redukcji (1 blok); KERNEL5: ++ for() SM SM + if() + + for() SMlast warp global shared TODO, porównanie wydajności. 32

33 6.0 (~/workshop/les6_latency_hide) Zadanie 6: zbyt duża liczba wątków powoduje, że czas ich obsługi może spowilnić obliczenia uzupełnij kernel2 (modyfikując kernel) wprowadzając do niego pętlę for redukującą liczbę uruchamianych wątków b1 b2 b3 b4 b5 b6 b7 b8 bn... b1 b2... bm 33

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

Programowanie Równoległe wykład, 21.01.2013. CUDA, przykłady praktyczne 1. Maciej Matyka Instytut Fizyki Teoretycznej

Programowanie Równoległe wykład, 21.01.2013. CUDA, przykłady praktyczne 1. Maciej Matyka Instytut Fizyki Teoretycznej Programowanie Równoległe wykład, 21.01.2013 CUDA, przykłady praktyczne 1 Maciej Matyka Instytut Fizyki Teoretycznej Motywacja l CPU vs GPU (anims) Plan CUDA w praktyce Wykład 1: CUDA w praktyce l aplikacja

Bardziej szczegółowo

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego Mariusz Uchroński 3 grudnia 2010 Plan prezentacji 1. Wprowadzenie 2.

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Programowanie Równoległe wykład 12. OpenGL + algorytm n ciał. Maciej Matyka Instytut Fizyki Teoretycznej

Programowanie Równoległe wykład 12. OpenGL + algorytm n ciał. Maciej Matyka Instytut Fizyki Teoretycznej Programowanie Równoległe wykład 12 OpenGL + algorytm n ciał Maciej Matyka Instytut Fizyki Teoretycznej CUDA z OpenGL 1. Dane dla kerneli znajdują się na karcie GFX. 2. Chcemy liczyć i rysować używając

Bardziej szczegółowo

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu inż. Daniel Solarz Wydział Fizyki i Informatyki Stosowanej AGH 1. Cel projektu. Celem projektu było napisanie wtyczki

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

Programowanie procesorów graficznych GPGPU

Programowanie procesorów graficznych GPGPU Programowanie procesorów graficznych GPGPU 1 GPGPU Historia: lata 80 te popularyzacja systemów i programów z graficznym interfejsem specjalistyczne układy do przetwarzania grafiki 2D lata 90 te standaryzacja

Bardziej szczegółowo

CUDA obliczenia ogólnego przeznaczenia na mocno zrównoleglonym sprzęcie. W prezentacji wykorzystano materiały firmy NVIDIA (http://www.nvidia.

CUDA obliczenia ogólnego przeznaczenia na mocno zrównoleglonym sprzęcie. W prezentacji wykorzystano materiały firmy NVIDIA (http://www.nvidia. CUDA obliczenia ogólnego przeznaczenia na mocno zrównoleglonym sprzęcie W prezentacji wykorzystano materiały firmy NVIDIA (http://www.nvidia.com) 1 Architektura karty graficznej W porównaniu z tradycyjnym

Bardziej szczegółowo

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Java jako język programowania

Java jako język programowania Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)

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

CUDA część 1. platforma GPGPU w obliczeniach naukowych. Maciej Matyka

CUDA część 1. platforma GPGPU w obliczeniach naukowych. Maciej Matyka CUDA część 1 platforma GPGPU w obliczeniach naukowych Maciej Matyka Bariery sprzętowe (procesory) ok na. 1 10 00 la raz t y Gdzie jesteśmy? a ok. 2 razy n 10 lat (ZK) Rozwój 1985-2004 i dalej? O roku ów

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

Moc płynąca z kart graficznych

Moc płynąca z kart graficznych Moc płynąca z kart graficznych Cuda za darmo! Czyli programowanie generalnego przeznaczenia na kartach graficznych (GPGPU) 22 października 2013 Paweł Napieracz /20 Poruszane aspekty Przetwarzanie równoległe

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

Programowanie mikrokontrolerów AVR

Programowanie mikrokontrolerów AVR Programowanie mikrokontrolerów AVR Czym jest mikrokontroler? Mikrokontroler jest małym komputerem podłączanym do układów elektronicznych. Pamięć RAM/ROM CPU wykonuje program Układy I/O Komunikacje ze światem

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

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

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

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

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

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

Bardziej szczegółowo

Ćwiczenie 1. Przygotowanie środowiska JAVA

Ćwiczenie 1. Przygotowanie środowiska JAVA Ćwiczenie 1 Przygotowanie środowiska JAVA 1. Wprowadzenie teoretyczne Instalacja JDK (Java Development Kit) NaleŜy pobrać z java.sun.com środowisko i zainstalować je. Następnie naleŝy skonfigurować środowisko.

Bardziej szczegółowo

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

Bardziej szczegółowo

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

Bardziej szczegółowo

IdyllaOS. Prosty, alternatywny system operacyjny. www.idyllaos.org. Autor: Grzegorz Gliński. Kontakt: milyges@gmail.com

IdyllaOS. Prosty, alternatywny system operacyjny. www.idyllaos.org. Autor: Grzegorz Gliński. Kontakt: milyges@gmail.com IdyllaOS www.idyllaos.org Prosty, alternatywny system operacyjny Autor: Grzegorz Gliński Kontakt: milyges@gmail.com Co to jest IdyllaOS? IdyllaOS jest to mały, prosty, uniksopodobny, wielozadaniowy oraz

Bardziej szczegółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Metody numeryczne Laboratorium 2

Metody numeryczne Laboratorium 2 Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby Część XI C++ W folderze nazwisko36 program za każdym razem sprawdza oba warunki co niepotrzebnie obciąża procesor. Ten problem można rozwiązać stosując instrukcje if...else Instrukcja if wykonuje polecenie

Bardziej szczegółowo

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

JCuda Czy Java i CUDA mogą się polubić? Konrad Szałkowski

JCuda Czy Java i CUDA mogą się polubić? Konrad Szałkowski JCuda Czy Java i CUDA mogą się polubić? Konrad Szałkowski Agenda GPU Dlaczego warto używać GPU Budowa GPU CUDA JCuda Przykładowa implementacja Co to jest? GPU GPU Graphical GPU Graphical Processing GPU

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

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

Wprowadzenie do środowiska Qt Creator

Wprowadzenie do środowiska Qt Creator 1.Instalacja środowiska Qt Creator Qt Creator jest wygodnym środowiskiem programistycznym przeznaczonym do tworzenia projektów, czyli aplikacji zarówno konsolowych, jak i okienkowych z wykorzystaniem biblioteki

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Sposoby wykrywania i usuwania błędów. Tomasz Borzyszkowski

Sposoby wykrywania i usuwania błędów. Tomasz Borzyszkowski Sposoby wykrywania i usuwania błędów Tomasz Borzyszkowski Mylić się jest rzeczą ludzką Typy błędów: błędy specyfikacji: źle określone wymagania błędy projektowe: nieodpowiednie struktury danych i algorytmy

Bardziej szczegółowo

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe Architektury Usług Internetowych Laboratorium 2. Usługi sieciowe Wstęp Celem laboratorium jest zapoznanie się z modelem usług sieciowych na przykładzie prostego serwera Apache Axis2. Apache Axis2 Apache

Bardziej szczegółowo

Programowanie niskopoziomowe

Programowanie niskopoziomowe Programowanie niskopoziomowe Programowanie niskopoziomowe w systemie operacyjnym oraz poza nim Tworzenie programu zawierającego procedury asemblerowe 1 Programowanie niskopoziomowe w systemie operacyjnym

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII Spis treści Od autora..................................................... Obliczenia inżynierskie i naukowe.................................. X XII Ostrzeżenia...................................................XVII

Bardziej szczegółowo

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE Nazwa przedmiotu: Podstawy programowania komputerów Computer programming basics Kierunek: Mechatronika Rodzaj przedmiotu: obowiązkowy Rodzaj zajęć: wykład, laboratorium Forma studiów: stacjonarne Poziom

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

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

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

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

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

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. Część XVII C++ Funkcje Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. 2 3 Tworzymy deklarację i definicję funkcji o nazwie pobierzln() Funkcja

Bardziej szczegółowo

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1 Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1 Organizacja przedmiotu Dr inż. Robert Banasiak Dr inż. Paweł Kapusta 1 2 Nasze kompetencje R n D Tomografia 3D To nie tylko statyczny obraz!

Bardziej szczegółowo

Instrukcja laboratoryjna cz.3

Instrukcja laboratoryjna cz.3 Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:

Bardziej szczegółowo

Programowanie niskopoziomowe

Programowanie niskopoziomowe W. Complak, J.Kniat, M. Antczak, K. Kwarciak, G. Palik, A. Rybarczyk, Ł. Wielebski Materiały Programowanie niskopoziomowe http://www.cs.put.poznan.pl/arybarczyk/c_w_0.pdf Spis treści 1. Instalacja środowiska

Bardziej szczegółowo

Informatyka, Ćwiczenie 1. 1. Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

Informatyka, Ćwiczenie 1. 1. Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu Informatyka, Ćwiczenie 1 1. Uruchomienie Microsoft Visual C++ I. ZałoŜenie nowego projektu Wybieramy menu: File>New>Files jak na rys. poniŝej Zapisujemy projekt pod nazwą LAN, w katalogu d:\temp\lab typu

Bardziej szczegółowo

Ogólne zasady projektowania algorytmów i programowania

Ogólne zasady projektowania algorytmów i programowania Ogólne zasady projektowania algorytmów i programowania Pracuj nad właściwie sformułowanym problemem dokładna analiza nawet małego zadania może prowadzić do ogromnych korzyści praktycznych: skrócenia długości

Bardziej szczegółowo

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład V Rzut okiem na języki programowania 1 Kompilacja vs. interpretacja KOMPILACJA Proces, który przetwarza program zapisany w języku programowania,

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

Systemy mobilne. Laboratorium. Dostęp do danych GPS w Windows Phone 7

Systemy mobilne. Laboratorium. Dostęp do danych GPS w Windows Phone 7 Systemy mobilne Laboratorium Dostęp do danych GPS w Windows Phone 7 1. Wprowadzenie Laboratorium ma na celu zapoznanie się z narzędziami dostępu do danych dotyczących lokalizacji w urządzeniach mobilnych

Bardziej szczegółowo

Praktyka Programowania

Praktyka Programowania Praktyka Programowania Dariusz Dereniowski Materiały udostępnione przez Adriana Kosowskiego Katedra Algorytmów i Modelowania Systemów Politechnika Gdańska deren@eti.pg.gda.pl Gdańsk, 2010 strona przedmiotu:

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

Piotr Dwieczkowski. Code coverage. Mierzenie pokrycia kodu, teoria oraz praktyka w C/C++

Piotr Dwieczkowski. Code coverage. Mierzenie pokrycia kodu, teoria oraz praktyka w C/C++ Piotr Dwieczkowski Code coverage Mierzenie pokrycia kodu, teoria oraz praktyka w C/C++ Plan Co to jest pokrycie kodu? Możliwe sposoby wykorzystania Rodzaje statystyk Wady i zalety mierzenia porycia kodu

Bardziej szczegółowo

CUDA PROGRAMOWANIE PIERWSZE PROSTE PRZYKŁADY RÓWNOLEGŁE. Michał Bieńkowski Katarzyna Lewenda

CUDA PROGRAMOWANIE PIERWSZE PROSTE PRZYKŁADY RÓWNOLEGŁE. Michał Bieńkowski Katarzyna Lewenda PROGRAMOWANIE RÓWNOLEGŁE PIERWSZE PROSTE PRZYKŁADY Michał Bieńkowski Katarzyna Lewenda Programowanie równoległe Dodawanie wektorów SPIS TREŚCI Fraktale Podsumowanie Ćwiczenia praktyczne Czym jest? PROGRAMOWANIE

Bardziej szczegółowo

Wykład 4: Klasy i Metody

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

Bardziej szczegółowo

Delphi podstawy programowania. Środowisko Delphi

Delphi podstawy programowania. Środowisko Delphi Delphi podstawy programowania Środowisko Delphi Olsztyn 2004 Delphi Programowanie obiektowe - (object-oriented programming) jest to metodologia tworzeniu programów komputerowych definiująca je jako zbiór

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

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

Bardziej szczegółowo

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych Laboratorium OiOSE. Programowanie w środowisku MS Visual C++ 1 Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych Organizacja i Oprogramowanie Systemów Elektronicznych Michał Kowalewski

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

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

Bardziej szczegółowo

EGZAMIN MATURALNY 2011 INFORMATYKA

EGZAMIN MATURALNY 2011 INFORMATYKA Centralna Komisja Egzaminacyjna w Warszawie EGZAMIN MATURALNY 2011 INFORMATYKA POZIOM PODSTAWOWY MAJ 2011 2 Zadanie 1. a) (0 1) Egzamin maturalny z informatyki poziom podstawowy CZĘŚĆ I Obszar standardów

Bardziej szczegółowo

Programowanie C++ Wykład 1 - Aplikacje konsowlowe w środowisku QT. dr inż. Jakub Możaryn. Warszawa, 2014. Instytut Automatyki i Robotyki

Programowanie C++ Wykład 1 - Aplikacje konsowlowe w środowisku QT. dr inż. Jakub Możaryn. Warszawa, 2014. Instytut Automatyki i Robotyki Wykład 1 - Aplikacje konsowlowe w środowisku QT Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Podstawowe pojęcia i proste programy. Pojęcia algorytmu, programu, kodu wykonywalnego. Kompilacja

Bardziej szczegółowo

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

Co to jest NODE.JS? Nowoczesne środowisko programistyczne Node.js Co to jest NODE.JS? Nowoczesne środowisko programistyczne Środowisko programistyczne w sensie zestawu gotowych klas i metod których można używać do przygotowania własnych skalowalnych i wydajnych

Bardziej szczegółowo

ALGORYTMY I PROGRAMY

ALGORYTMY I PROGRAMY ALGORYTMY I PROGRAMY Program to ciąg instrukcji, zapisanych w języku zrozumiałym dla komputera. Ten ciąg instrukcji realizuje jakiś algorytm. Algorytm jest opisem krok po kroku jak rozwiązać problem, czy

Bardziej szczegółowo

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

Bardziej szczegółowo

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język PYTHON Podstawowe informacje Python to język skryptowy, interpretowany - co oznacza, że piszemy skrypt, a następnie wykonujemy go za

Bardziej szczegółowo

Optymalizacja kodu. Ze wszystkich metod optymalizacji kodu programowego zwrócimy uwagę na: Usunięcie (po możliwości) skoków danych.

Optymalizacja kodu. Ze wszystkich metod optymalizacji kodu programowego zwrócimy uwagę na: Usunięcie (po możliwości) skoków danych. Optymalizacja kodu Ze wszystkich metod optymalizacji kodu programowego zwrócimy uwagę na: Usunięcie (po możliwości) skoków danych Rozwijanie pętli Opcje kompilatora 1 Usunięcie skoków danych: for(i=1;

Bardziej szczegółowo

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej. Procesy Proces (zwany też zadaniem) jest jednostką aktywną, kontrolowaną przez system operacyjny i związaną z wykonywanym programem. Proces ma przydzielone zasoby typu pamięć (segment kodu, segment danych,

Bardziej szczegółowo

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

Zacznij Tu! Poznaj Microsoft 2012. Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska

Zacznij Tu! Poznaj Microsoft 2012. Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska Zacznij Tu! Poznaj Microsoft 2012 Visual Basic Michael Halvorson Przekład: Joanna Zatorska APN Promise, Warszawa 2013 Spis treści Wstęp...................................................................vii

Bardziej szczegółowo

Nowoczesne technologie przetwarzania informacji

Nowoczesne technologie przetwarzania informacji Projekt Nowe metody nauczania w matematyce Nr POKL.09.04.00-14-133/11 Nowoczesne technologie przetwarzania informacji Mgr Maciej Cytowski (ICM UW) Lekcja 2: Podstawowe mechanizmy programowania równoległego

Bardziej szczegółowo

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH ZATWIERDZAM Prorektor ds. dydaktyki i wychowania S Y L A B U S 1 Tytuł (stopień) naukowy oraz imię i nazwisko wykładowcy: dr hab.,

Bardziej szczegółowo

Dodatek A. CUDA. 1 Stosowany jest w tym kontekście skrót GPCPU (od ang. general-purpose computing on graphics processing units).

Dodatek A. CUDA. 1 Stosowany jest w tym kontekście skrót GPCPU (od ang. general-purpose computing on graphics processing units). Dodatek A. CUDA Trzy ostatnie rozdziały książki poświęcone są zagadnieniom związanym z programowaniem równoległym. Skłoniła nas do tego wszechobecność maszyn wieloprocesorowych. Nawet niektóre notebooki

Bardziej szczegółowo

C++ - [1-3] Debugowanie w Qt Creator

C++ - [1-3] Debugowanie w Qt Creator Slajd 1 z 10 C++ - [1-3] Debugowanie w Qt Creator Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 15 maja 2013 r. Slajd 2 z 10 Pojęcia związane z debugowaniem DEBUGOWANIE (z ang. debugging odrobaczanie)

Bardziej szczegółowo

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

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować

Bardziej szczegółowo

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Mgr inż. Witold BUŻANTOWICZ Wojskowa Akademia Techniczna SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD Streszczenie: W referacie przedstawiono możliwości

Bardziej szczegółowo

METODY REPREZENTACJI INFORMACJI

METODY REPREZENTACJI INFORMACJI Politechnika Gdańska Wydział Elektroniki, Telekomunikacji i Informatyki Magisterskie Studia Uzupełniające METODY REPREZENTACJI INFORMACJI Ćwiczenie 1: Budowa i rozbiór gramatyczny dokumentów XML Instrukcja

Bardziej szczegółowo

Systemy Rozproszone Technologia ICE

Systemy Rozproszone Technologia ICE Systemy Rozproszone Technologia ICE Zespół Systemów Rozproszonych () Katedra Informatyki AGH Kraków Kornel Skałkowski skalkow@agh.edu.pl Opracowano na podstawie książki: Henning M, Spruiell M. Distributed

Bardziej szczegółowo

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Podstawy programowania C dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Tematy Struktura programu w C Typy danych Operacje Instrukcja grupująca Instrukcja przypisania Instrukcja warunkowa Struktura

Bardziej szczegółowo

PROGRAMOWANIE w C prolog

PROGRAMOWANIE w C prolog PROGRAMOWANIE w C prolog dr inż. Jarosław Stańczyk Uniwersytet Przyrodniczy we Wrocławiu Wydział Biologii i Hodowli Zwierząt Katedra Genetyki 1 / jaroslaw.stanczyk@up.wroc.pl programowanie w c 17.10.2014

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Podstawy programowania - 1

Podstawy programowania - 1 Podstawy programowania - 1 doc. dr inż. Tadeusz Jeleniewski Wykład: sobota B, godz. 10.30 12.55 sala 12 Laboratorium: sobota B, godz. 13.00 15.25 sala 2 sobota B, godz. 15.30-17.55 sala 2 e-mail: tadeusz.jeleniewski@pwr.wroc.pl

Bardziej szczegółowo

SAS Institute TECHNICAL SUPPORT

SAS Institute TECHNICAL SUPPORT SAS Institute TECHNICAL SUPPORT Optymalizacja serwera metadanych Spis treści 1. Jak działa serwer metadanych?...2 2. Szacowanie wielkości pamięci operacyjnej potrzebnej dla serwera metadanych...2 3. Workunit

Bardziej szczegółowo

Instrukcja importu deklaracji pacjentów. do dreryka

Instrukcja importu deklaracji pacjentów. do dreryka Instrukcja importu deklaracji pacjentów do dreryka Jeżeli posiadasz plik sprawozdań do NFZ w formacie XML/PDX lub POZ, czytaj: Rozdział 1. - Import deklaracji z formatów XML/PDX oraz POZ Jeżeli używasz

Bardziej szczegółowo

Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 podłączenie i obsługa wyświetlacza LCD.

Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 podłączenie i obsługa wyświetlacza LCD. LAB. 2 Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 podłączenie i obsługa wyświetlacza LCD. Laboratorium Mikroprocesorowych Układów Sterowania instrukcja

Bardziej szczegółowo

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową Plan 1 Uwagi na temat wydajności CPython a 2 Podstawowe techniki poprawiające wydajność obliczeniową 3 Podstawowe techniki poprawiające zużycie pamięci krótkie opisy modułów 1 array - jak oszczędzić na

Bardziej szczegółowo

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce. Przygotować program tworzący tablicę dwuwymiarową zawierającą zestawy 10 2, 10 4, 10 6 liczb losowych zmiennoprzecinkowych. Korzystając z funkcji bibliotecznych uporządkować zawartość każdego (a) wiersza

Bardziej szczegółowo

I - Microsoft Visual Studio C++

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

Bardziej szczegółowo

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych)

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych) I. WSTĘP Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych) Algorytm - sposób na osiągnięcie celu w pewnych ograniczonych krokach. Program komputerowy realizuje zawsze algorytm.

Bardziej szczegółowo

Programowanie strukturalne i obiektowe

Programowanie strukturalne i obiektowe Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie

Bardziej szczegółowo

WYMAGANIA EDUKACYJNE

WYMAGANIA EDUKACYJNE GIMNAZJUM NR 2 W RYCZOWIE WYMAGANIA EDUKACYJNE niezbędne do uzyskania poszczególnych śródrocznych i rocznych ocen klasyfikacyjnych z INFORMATYKI w klasie II gimnazjum str. 1 1. Algorytmika i programowanie

Bardziej szczegółowo