CUDA ćwiczenia praktyczne
|
|
- Dagmara Markowska
- 8 lat temu
- Przeglądów:
Transkrypt
1 CUDA ćwiczenia praktyczne 7 kwietnia 2011, Poznań Marek Błażewicz, marqs@man.poznan.pl Michał Kierzynka, michal.kierzynka@man.poznan.pl
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
Bardziej szczegółowoProgramowanie kart graficznych
CUDA Compute Unified Device Architecture Programowanie kart graficznych mgr inż. Kamil Szostek AGH, WGGIOŚ, KGIS Wykorzystano materiały z kursu Programowanie kart graficznych prostsze niż myślisz M. Makowski
Bardziej szczegółowoProgramowanie 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
Bardziej szczegółowoProgramowanie 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ółowoProgramowanie Równoległe Wykład, CUDA praktycznie 1. Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład, 07.01.2014 CUDA praktycznie 1 Maciej Matyka Instytut Fizyki Teoretycznej Motywacja l CPU vs GPU (anims) Plan CUDA w praktyce Wykład 1: CUDA w praktyce Wykład 2: Cuda +
Bardziej szczegółowoWstę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ółowoPoró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ółowoProgramowanie Współbieżne
Programowanie Współbieżne Agnieszka Łupińska 5 października 2016 Hello World! helloworld.cu: #include global void helloworld(){ int thid = (blockidx.x * blockdim.x) + threadidx.x; printf("hello
Bardziej szczegółowoProgramowanie 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ń
Bardziej szczegółowoProgramowanie 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ółowoWprowadzenie do programowania w środowisku CUDA. Środowisko CUDA
Wprowadzenie do programowania w środowisku CUDA Środowisko CUDA 1 Budowa procesora CPU i GPU Architektura GPU wymaga większej ilości tranzystorów na przetwarzanie danych Control ALU ALU ALU ALU Cache DRAM
Bardziej szczegółowoJava 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ółowoWprowadzenie 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
Bardziej szczegółowoCUDA 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ółowoProgramowanie 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ółowoLaboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
Bardziej szczegółowoProgramowanie 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żą
Bardziej szczegółowoProgramowanie 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ółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoCUDA 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ółowoProgramowanie CUDA informacje praktycznie i. Wersja
Programowanie CUDA informacje praktycznie i przykłady Wersja 16.12.2013 Podstawowe operacje na GPU cudasetdevice() Określenie GPU i ustanowienie kontekstu (analog w GPU tego czym jest proces dla CPU) dla
Bardziej szczegółowoCUDA 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ółowoPrzygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,
Przetwarzanie równoległe PROJEKT OMP i CUDA Temat projektu dotyczy analizy efektywności przetwarzania równoległego realizowanego przy użyciu komputera równoległego z procesorem wielordzeniowym z pamięcią
Bardziej szczegółowo1 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ółowoWstęp do programowania
Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład
Bardziej szczegółowoMATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis
MATERIAŁY DO ZAJĘĆ I Podstawowe pojęcia Spis treści I. Algorytm II. Schemat blokowy III. Struktury danych IV. Program komputerowy V. Opis środowiska programistycznego VI. Obsługa wejścia wyjścia VII. Przykład
Bardziej szczegółowoProgramowanie procesorów graficznych w CUDA.
Programowanie procesorów graficznych w CUDA. Kompilujemy program Alokacja zasobów gpgpu oraz załadowanie modułu CUDA odbywa się za pomocą komend: qsub -q gpgpu -I -l walltime=2:00:00,nodes=1:ppn=1:gpus=1
Bardziej szczegółowoZadanie 2: Arytmetyka symboli
1 Cel ćwiczenia Zadanie 2: Arytmetyka symboli Wykształcenie umiejętności abstrahowania operacji arytmetycznych. Zapoznanie się i przećwiczenie mechanizmu tworzenia przeciążeń funkcji operatorowych. Utrwalenie
Bardziej szczegółowoutworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,
Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz
Bardziej szczegółowoMoc 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ółowoPodstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
Bardziej szczegółowoSzablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
Bardziej szczegółowoTechniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 8. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 8 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Biblioteka GSL Na podstawie: https://www.gnu.org/software/gsl/doc/html/index.html
Bardziej szczegółowo1 Zapoznanie się ze środowiskiem Xenomai.
1 Zapoznanie się ze środowiskiem Xenomai. Wszystkie ćwiczenia oraz programy opracowane zostały w Xenomai w wersji 2.5.6. Dlatego też odwołania do dokumentacji dotyczą dokumentu pod adresem: http://www.xenomai.org/documentation/xenomai-2.5/html/api/
Bardziej szczegółowoCUDA. cudniejsze przyk ady
CUDA cudniejsze przyk ady Agenda: CPU vs. GPU Mnożenie macierzy CPU Mnożenie macierzy - GPU Sploty Macierze CPU vs. GPU CPU: GPU: Mnożenie wykonywane w kolejnych iteracjach pętli. Przechodzimy przez pierwszy
Bardziej szczegółowoArgumenty wywołania programu, operacje na plikach
Temat zajęć: Argumenty wywołania programu, operacje na plikach Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Zmienne statyczne) W języku C można decydować o sposobie przechowywania zmiennych. Decydują
Bardziej szczegółowoPodstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów Krzysztof Banaś Podstawy programowania 1 Programy Większość programów w C stanowią rozbudowane kody, definiujące wiele funkcji
Bardziej szczegółowoIMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Bardziej szczegółowoJak 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ółowoMETODY 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ółowoCwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR
Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR Zadanie polega na napisaniu pierwszego programu w języku C, jego poprawnej kompilacji i wgraniu na mikrokontroler. W tym celu należy zapoznać
Bardziej szczegółowoProgramowanie 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> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017
> C++ wskaźniki Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017 >??? Co to jest WSKAŹNIK? ++ wskaźniki 2 / 20 >??? Co to jest WSKAŹNIK? To po prostu ADRES
Bardziej szczegółowoPodstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
Bardziej szczegółowoPodstawy Programowania.
Podstawy Programowania http://www.saltbox.com/img/under_the_hood.png O mnie... dr inż. Łukasz Graczykowski Zakład Fizyki Jądrowej Wydział Fizyki Politechniki Warszawskiej lgraczyk@if.pw.edu.pl www.if.pw.edu.pl/~lgraczyk/wiki
Bardziej szczegółowoJeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Bardziej szczegółowoProgramowanie 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ółowoJęzyk C, tablice i funkcje (laboratorium, EE1-DI)
Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.
Bardziej szczegółowoWykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
Bardziej szczegółowoJęzyki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Bardziej szczegółowoTemat 1: Podstawowe pojęcia: program, kompilacja, kod
Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,
Bardziej szczegółowoPodstawowe 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ółowoTemat: 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ółowoStałe, tablice dynamiczne i wielowymiarowe
Stałe, tablice dynamiczne i wielowymiarowe tylko do odczytu STAŁE - CONST tablice: const int dni_miesiaca[12]=31,28,31,30,31,30,31,31,30,31,30,31; const słowo kluczowe const sprawia, że wartość zmiennej
Bardziej szczegółowoZaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce
Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Bardziej szczegółowo1 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ółowoznajdował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ółowoWstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.
Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Dyrektywy preprocesora #include #define Interakcja
Bardziej szczegółowoPytania 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?
Bardziej szczegółowoTesla. 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
Bardziej szczegółowoPrzekazywanie argumentów wskaźniki
Przekazywanie argumentów wskaźniki klasyczne wywołanie wyliczenie i zwrotne przekazanie tylko jednej wielkości moŝliwość uŝycia zmiennych globalnych niebezpieczeństwa z tym związane wyjście wywołanie funkcji
Bardziej szczegółowoProgramowanie 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ółowoProgramowanie CUDA informacje praktycznie i przykłady. Wersja
Programowanie CUDA informacje praktycznie i przykłady problemów obliczeniowych Wersja 25.11.2014 cudasetdevice() Podstawowe operacje na urządzeniu GPU Określenie GPU i ustanowienie kontekstu (analog w
Bardziej szczegółowoProgramowanie i techniki algorytmiczne
Temat 2. Programowanie i techniki algorytmiczne Realizacja podstawy programowej 1) wyjaśnia pojęcie algorytmu, podaje odpowiednie przykłady algorytmów rozwiązywania różnych 2) formułuje ścisły opis prostej
Bardziej szczegółowoProgramowanie kart graficznych. Sprzęt i obliczenia
Programowanie kart graficznych Sprzęt i obliczenia CUDA Szczegóły implementacji sprzętowej Architektura SIMT: podstawą konstrukcji urządzeń CUDA jest skalowalna macierz wielowątkowych multiprocesorów strumieniowych
Bardziej szczegółowoi3: internet - infrastruktury - innowacje
i3: internet - infrastruktury - innowacje Wykorzystanie procesorów graficznych do akceleracji obliczeń w modelu geofizycznym EULAG Roman Wyrzykowski Krzysztof Rojek Łukasz Szustak [roman, krojek, lszustak]@icis.pcz.pl
Bardziej szczegółowoJCuda 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Ć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ółowoRPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )
III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego
Bardziej szczegółowoPodstawy Programowania
Podstawy Programowania http://www.saltbox.com/img/under_the_hood.png Any sufficiently advanced technology is indistinguishable from magic. Arthur C. Clarke O mnie... dr inż. Małgorzata Janik Zakład Fizyki
Bardziej szczegółowoPodstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej
Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok
Bardziej szczegółowoZajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 1 Podstawy programowania dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Ramowy program warsztatów 1. Pierwsze: Podstawy programowania 2. Drugie:
Bardziej szczegółowoWskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to
Bardziej szczegółowo1. 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ółowo1 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ółowoWykł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ółowoStruktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.
Struktura programu Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem. W ostatnich latach najbardziej używanym stylem oprogramowania
Bardziej szczegółowoCUDA. obliczenia na kartach graficznych. Łukasz Ligowski. 11 luty Łukasz Ligowski () CUDA 11 luty / 36
CUDA obliczenia na kartach graficznych Łukasz Ligowski 11 luty 2008 Łukasz Ligowski () CUDA 11 luty 2008 1 / 36 Plan 1 Ogólne wrażenia 2 Obliczenia na kartach - wstęp 3 Wprowadzenie 4 CUDA Łukasz Ligowski
Bardziej szczegółowoIdyllaOS. 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ółowoProgramowanie 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ółowoProcesy i wątki. Krzysztof Banaś Obliczenia równoległe 1
Procesy i wątki Krzysztof Banaś Obliczenia równoległe 1 Procesy i wątki Proces: ciąg rozkazów (wątek główny) i ewentualnie inne wątki stos (wątku głównego) przestrzeń adresowa dodatkowe elementy tworzące
Bardziej szczegółowoObliczenia 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
Bardziej szczegółowoWskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
Bardziej szczegółowo1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Bardziej szczegółowo7. Pętle for. Przykłady
. Pętle for Przykłady.1. Bez użycia pętli while ani rekurencji, napisz program, który wypisze na ekran kolejne liczby naturalne od 0 do pewnego danego n. 5 int n; 6 cin >> n; 8 for (int i = 0; i
Bardziej szczegółowoMake jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.
Spis treści 1 Krótkie wprowadzenie do makefile'a 1.1 Typowa reguła programu make 1.2 Zmienne w pliku Makefile 1.3 Zmienne standardowe 1.4 Zmienne automatyczne 1.5 Więcej o regułach 1.5.1 Reguły z wzorcem
Bardziej szczegółowoJAVA. 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ółowoTworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1
Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1 Metodologia programowania równoległego Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje (functional
Bardziej szczegółowoPodstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk
Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, Materiał
Bardziej szczegółowoProgramowanie kart graficznych. Architektura i API część 2
Programowanie kart graficznych Architektura i API część 2 CUDA hierarchia pamięci c.d. Globalna pamięć urządzenia: funkcje CUDA API takie jak cudamalloc() i cudafree() z założenia służą do manipulowania
Bardziej szczegółowoProgramowanie 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ółowoWPROWADZENIE DO INFORMATYKI
J.NAWROCKI, M. ANTCZAK, H. ĆWIEK, W. FROHMBERG, A. HOFFA, M. KIERZYNKA, S. WĄSIK WPROWADZENIE DO INFORMATYKI PROGRAMOWANIE IMPERATYWNE ŚRODOWISKO URUCHOMIENIOWE I. INSTALACJA I KONFIGURACJA ECLIPSE CDT
Bardziej szczegółowoAlgorytmika i pseudoprogramowanie
Przedmiotowy system oceniania Zawód: Technik Informatyk Nr programu: 312[ 01] /T,SP/MENiS/ 2004.06.14 Przedmiot: Programowanie Strukturalne i Obiektowe Klasa: druga Dział Dopuszczający Dostateczny Dobry
Bardziej szczegółowoJęzyk C, tablice i funkcje (laboratorium)
Język C, tablice i funkcje (laboratorium) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.
Bardziej szczegółowoAlgorytm. 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ółowoKlasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny
Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady
Bardziej szczegółowoZad. 3: Układ równań liniowych
1 Cel ćwiczenia Zad. 3: Układ równań liniowych Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich
Bardziej szczegółowoTechniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 7. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni Wykład 7 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Praca z repozytorium kodu Na podstawie: https://www.gnu.org/software/gsl/doc/html/index.html
Bardziej szczegółowoSzablony 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ółowoINFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki
INFORMATYKA Z MERMIDONEM Programowanie Moduł 5 / Notatki Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego. Realizator projektu: Opracowano w ramach projektu
Bardziej szczegółowo