CUDA ćwiczenia praktyczne
|
|
- Dagmara Markowska
- 2 lat temu
- Przeglądów:
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 Wprowadzenie Procesory graficzne GPU (Graphics Processing Units) stosowane są w kartach graficznych do przetwarzania grafiki komputerowej
Programowanie aplikacji równoległych i rozproszonych
Programowanie aplikacji równoległych i rozproszonych Dr inż. Krzysztof Rojek krojek@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Strumienie operacji na GPU Domyślne
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
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.
Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1
Programowanie procesorów graficznych GPGPU Krzysztof Banaś Obliczenia równoległe 1 OpenCL projektowanie kerneli Przypomnienie: kernel program realizowany przez urządzenie OpenCL wątek (work item) rdzeń
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
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
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
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
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...)
Wprowadzenie do biblioteki klas C++
Instrukcja laboratoryjna nr 7 Programowanie w języku C 2 (C++ poziom zaawansowany) Wprowadzenie do biblioteki klas C++ WxWidgets mgr inż. Lasota Maciej dr inż. Kaczmarek Tomasz dr inż. Wilk-Jakubowski
Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1
Programowanie procesorów graficznych GPGPU Krzysztof Banaś Obliczenia równoległe 1 Projektowanie kerneli Zasady optymalizacji: należy maksymalizować liczbę wątków (w rozsądnych granicach, granice zależą
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
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)
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
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.
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ę
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
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
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
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
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,
Tesla. Architektura Fermi
Tesla Architektura Fermi Tesla Tesla jest to General Purpose GPU (GPGPU), GPU ogólnego przeznaczenia Obliczenia dotychczas wykonywane na CPU przenoszone są na GPU Możliwości jakie daje GPU dla grafiki
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,
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
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
Pytania sprawdzające wiedzę z programowania C++
Pytania sprawdzające wiedzę z programowania C++ Wstęp 1. Zaprezentuj mechanikę tworzenia programu napisanego w języku C++. 2. Co to jest kompilacja? 3. Co to jest konsolidacja? 4. Co to jest kod wykonywalny?
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
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
Ć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.
Obliczenia na GPU w technologii CUDA
Obliczenia na GPU w technologii CUDA 1 Różnica szybkości obliczeń (GFLOP/s) pomiędzy CPU a GPU źródło NVIDIA 2 Różnica w przepustowości pamięci pomiędzy CPU a GPU źródło NVIDIA 3 Różnice architektoniczne
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,
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
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
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
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
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
Wstęp Podstawowe informacje o mikroprocesorach AT91SAM9...11
Spis treści 3 Wstęp...9 1. Podstawowe informacje o mikroprocesorach AT91SAM9...11 1.1. Krótka charakterystyka wybranych mikroprocesorów serii AT91SAM9...12 1.1.1. Cechy wspólne... 12 1.1.2. Rodzina SAM9
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
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
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
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
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
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ąć
Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki
Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,
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
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
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
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
Wstęp do obliczeń równoległych na GPU
Spis treści 1 Wstęp do obliczeń równoległych na GPU 1.1 Zadanie 1.2 Profilowanie 1.2.1 Zadanie Wstęp do obliczeń równoległych na GPU W tej części ćwiczeń stworzymy pierwszy program wykorzystujący bibliotekę
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
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
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!
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
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
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
Podstawy Programowania Podstawowa składnia języka C++
Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include
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
Programowanie niskopoziomowe
Programowanie niskopoziomowe Programowanie niskopoziomowe w systemie operacyjnym oraz poza nim Tworzenie programu zawierającego procedury asemblerowe 1 Programowanie niskopoziomowe w systemie operacyjnym
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
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:
Funkcje wirtualne. Wskaźniki do klas pochodnych są podstawą dla funkcji wirtualnych i polimorfizmu dynamicznego.
Funkcje wirtualne W C++ polimorfizm jest zrealizowany w dwa sposoby: na etapie kompilacji i na etapie wykonania. Na etapie kompilacji polimorfizm jest zrealizowany poprzez przeciążenie funkcji i operatorów.
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
Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:
Tablice Tablice jednowymiarowe Jeżeli nasz zestaw danych składa się z wielu drobnych elementów tego samego rodzaju, jego najbardziej naturalnym ekwiwalentem w programowaniu będzie tablica. Tablica (ang.
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:
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
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
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
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
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
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
Zapisywanie algorytmów w języku programowania
Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym
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
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
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
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
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
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
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
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
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
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
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,
Fragment wykładu z języka C ( )
Fragment wykładu z języka C (2002-2009) Piotr Szwed pszwed@agh.edu.pl Program make Typowy program w języku C/C++ składa się z wielu odrębnych modułów (jednostek translacji). Ich liczba może dochodzić do
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ć
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
Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java
Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java Cechy C++ Język ogólnego przeznaczenia Można programować obiektowo i strukturalnie Bardzo wysoka wydajność kodu wynikowego
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ą
Kompilacja i scalanie programów w linii poleceń gcc i make
Kompilacja i scalanie programów w linii poleceń gcc i make Małgorzata Stankiewicz kwiecień 2012 Małgorzata Stankiewicz () gcc i make kwiecień 2012 1 / 26 GCC - GNU Compiler Collection GCC Zestaw kompilatorów
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
Programowanie kart graficznych. Architektura i API część 1
Programowanie kart graficznych Architektura i API część 1 Literatura NVIDIA CUDA Programming Guide version 4.2 http//developer.download.nvidia.com/compute/devzone/ docs/html/c/doc/cuda_c_programming_guide.pdf
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
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
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
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
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
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;
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
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,
Rekurencja (rekursja)
Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)