Technologia GPGPU na przykładzie środowiska CUDA

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

Download "Technologia GPGPU na przykładzie środowiska CUDA"

Transkrypt

1 Technologia GPGPU na przykładzie środowiska CUDA Instytut Fizyki Teoretycznej Uniwersytet Wrocławski

2 Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

3 Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

4 Architektura CPU Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

5 Architektura CPU Architektura CPU CPU = Central Processing Unit ALU- jednostka arytmetyczno-logiczna Rejestry- integralna pamięć CPU(dane) IR- rejestr instrukcji(rozkazów procesora) PC-licznikprogramu(miejscewliście rozkazów procesora)

6 Architektura CPU Schemat działania CPU CPUbyłzzałożeniaprocesoremsekwencyjnym 1 : fetch- pobieranie rozkazu do wykonania(pc) decode- przekładanie rozkazu na operacje elementarne CPU execute- wykonanie operacji(alu) writeback- zapisanie wyniku(np. do rejestrów) 1

7 Architektura CPU Obliczenia równoległe, a CPU: Obliczenia równoległe, a CPU: poziom instrukcji(instruction pipelining, superscalar pipeline) - wykorzystanie opóźnień w sekwencji podstawowej procesora poziom wątków(multiple Instructions-Multiple Data) - od kilku procesorów(1960 r.) do wielordzeniowości(2001 r.) poziom danych(single Instruction-Multiple Data)- wektoryzacja CPU, nadaje się do specjalnej klasy problemów

8 Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

9 Architektura GPU Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

10 Architektura GPU Potok graficzny(1) Źródło: The Cg Tutorial, nvidia

11 Architektura GPU Potok graficzny(2) Źródło: The Cg Tutorial, nvidia

12 Architektura GPU GPU- Graphics Processor Unit Procesor GPU został zoptymalizowany pod kątem wykonywania elementów potoku graficznego: te same operacje na ogromnej liczbie elementów architektura SIMD(Single Instruction-Multiple Data) tranzystory używane do wykonywania ogromnej ilości operacji zmiennoprzecinkowych programowalne jednostki cieniujące(vertex/pixel shaders) języki programowania wysokiego poziomu(cg, HLSL, GLSL)

13 Architektura GPU Porównanie architektury GPU i CPU Źródło: nvidia CUDA, Programming Guide 2.2, nvidia

14 Architektura GPU Wydajność(1) Źródło: nvidia CUDA, Programming Guide 2.2, nvidia

15 Architektura GPU Wydajność(2) Źródło: nvidia CUDA, Programming Guide 2.2, nvidia

16 Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

17 Istniejące środowiska programowania GPU Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

18 Istniejące środowiska programowania GPU Środowiska Początki GPGPU, to obliczenia z użyciem programowalnych jednostek cieniujących Aktualnie istnieją dwa kompleksowe środowiska do programowania procesorów GPU(ATI, nvidia) Równolegle powstaje OpenCL- otwarty standard do obliczeń równoległych(grupa Khronos)

19 Istniejące środowiska programowania GPU Co to właściwie jest CUDA? CUDA, Compute Unified Device Architecture: język wysokiego poziomu oparty na c interfejs programowania aplikacji dedykowany kompilator(nvcc) model pamięci W przyszłości CUDA będzie obsługiwana z poziomu dowolnego języka(źródło: nvidia CUDA, Programming Guide 2.2, nvidia).

20 Istniejące środowiska programowania GPU Model pamięci w architekturze CUDA W CUDA wyróżniamy kilka rodzajów pamięci na których operuje GPU: shared memory(16kb) texture cache constant cache device memory(gb)

21 Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

22 Typy danych i jądro Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

23 Typy danych i jądro Programowanie w CUDA(1) nowe typy danych wektorowych: char1, char2, char3, char4, int1, uint1, int2, uint2, int3, uint3, int4, uint4, float1, float2, float3, float4, double1, double2, dim3(+ wiele innych)

24 Typy danych i jądro Programowanie w CUDA(2) przykład dla float3: 1 ÐÓ Ø Û Ñ ÐÓ Ø ¼º½ ¾º¾ º¼µ 2 ÐÓ Ø ÛºÜ ÛºÞ // a = 4.1 typy wektorowe nie posiadają przeciążonych operatorów arytmetycznych można próbować tak(prędkość) 1 Ú ÐÓ Ø ÓÔ Ö ØÓÖ ÓÒ Ø ÐÓ Ø ² 2 ÓÒ Ø ÐÓ Ø ² µ 3 ß 4 Ö ØÙÖÒ Ñ ÐÓ Ø ºÜ ºÜ ºÝ ºÝ ºÞ ºÞµ 5 Ð w praktyce należy bardzo starannie dbać o dostęp do pamięci!

25 Typy danych i jądro Jądro, deklaracja i wywołanie(1) wcudaprogramydlagputojądra(ang.kernel) kodjąderumieszczasięwplikach.cu Jądro(ang.kernel)deklarujesiępodobniejakfunkcjewc dodajemy słowo kluczowe opisującego poziom z jakiego można wywołać jądro(z funkcji CPU, z innego jądra itp.)

26 Typy danych i jądro Jądro, deklaracja i wywołanie(2) przykład deklaracji: 1 ÐÓ Ð ÚÓ ÓËÓÑ Ø Ò ÇÒ Ú ºººµ 2 ß 3 ººº 4 Ð gdzie: global kompilowane dla GPU, wywoływane przez CPU device kompilowane dla GPU, wywoływane przez GPU host kompilowane dla CPU, wywoływane przez CPU

27 Typy danych i jądro Jądro, deklaracja i wywołanie(3) Jądrowywołujesiępodobniejakfunkcjewjęzykuc dodatkowo deklaruje się ilość bloków w kracie i ilość wątków na blok używając nawiasów: 1 ººº ººº przykład wywołania: 1 ÒØ ÐÓ Ë Þ ½¾ 2 ÒØ Ò ÐÓ Æ» ÐÓ Ë Þ 3 Æ ± ÐÓ Ë Þ ¼ ¼ ½µ 4 5 ÓËÓÑ Ø Ò ÇÒ Ú Ò ÐÓ ÐÓ Ë Þ ºººµ

28 Krata, bloki, wątki, pamięć Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

29 Krata, bloki, wątki, pamięć Krata, bloki, wątki... 1 ÓËÓÑ Ø Ò ÇÒ Ú Ò ÐÓ ÐÓ Ë Þ ºººµ tworzy kratę(grid) o nblocks blokach(blocks) blocksize wątków każdy Przykład nblocks = dim3(3,2,1); blocksize = dim3(4,3,1); Źródło: nvidia CUDA, Programming Guide 2.2, nvidia

30 Krata, bloki, wątki, pamięć Deklarowanie zmiennych, pamięć(1) stałewpamięcigpu,np. 1 ÓÒ Ø ÒØ ÐÓ Ø Ö Ú ØÝ ß¼ ¹½º¼ ¼Ð zmienne w pamięci globalnej karty, np. 1 Ú ÐÓ Ø Ú ÐÓ ØÝ ß¼ ¼ ¼Ð pamięć współdzielona na wątki w bloku 1 Ö ÐÓ Ø Ø Ð Æ dostęp do zmiennych typu device z CPU, przykład: 1 ÐÓ Ø Ú Ð Ó Ø 2 ÓÒ Ø Ö ÝÑ ÓÐ Ú ÐÓ ØÝ 3 Ù Å ÑÔÝ ÖÓÑËÝÑ ÓÐ Ú Ð Ó Ø ÝÑ ÓÐ 4 Þ Ó ÐÓ Ø µ ¼ Ù Å ÑÔÝ Ú ÌÓÀÓ Øµ

31 Krata, bloki, wątki, pamięć Alokacja pamięci i kopiowanie(cpu GPU) CPU 1 ÐÓ Ø ÐÓ Ø µñ ÐÐÓ Þ µ GPU 1 ÐÓ Ø 2 Ù Å ÐÐÓ ÚÓ µ ² Þ µ Kopiowanie CPU GPU 1 Ù Å ÑÔÝ Þ Ù Å ÑÔÝÀÓ ØÌÓ Ú µ Kopiowanie CPU GPU 1 Ù Å ÑÔÝ Þ Ù Å ÑÔÝ Ú ÌÓÀÓ Øµ

32 Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

33 HelloWorld w wersji wielowątkowej Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

34 HelloWorld w wersji wielowątkowej Hello World 1 #include <stdio.h> 2 #include <cuda.h> 3 4 device char napis_device[14]; 5 6 global void helloworldondevice(void) 7 { 8 napis_device[0] = H ; 9 napis_device[1] = e ; napis_device[12] = \n ; 12 napis_device[13] = 0; 13 } int main(void) 16 { 17 helloworldondevice <<< 1, 1 >>>(); 18 cudathreadsynchronize(); char napis_host[14]; 21 const char *symbol= napis device ; 22 cudamemcpyfromsymbol (napis_host, symbol, sizeof(char)*13, 0, cudamemcpydevicetohost); printf( %s,napis_host); 25 } Wynik: Hello World! wpisane przez GPU.

35 HelloWorld w wersji wielowątkowej Hello World w wersji wielowątkowej Hello World! w wersji wielowątkowej: funkcjonalność jądra bez zmian podzielmy zadania na osobne rdzenie niech każda literka zostanie wpisana przez osobny rdzeń! (Wspólnie z Pawłem Czubińskim)

36 HelloWorld w wersji wielowątkowej Hello World w wersji wielowątkowej Jądrorozbijamyna14blokówpo1wątkukażdy: 1 ÐÐÓÏÓÖÐ ÇÒ Ú ½ ½ µ

37 HelloWorld w wersji wielowątkowej Hello World 1 2 device char napis_device[14]; 3 constant device char hw[]= HelloWorld!\n ; 4 5 global void helloworldondevice(void) 6 { 7 int idx = blockidx.x; 8 napis_device[idx] = hw[idx]; 9 } int main(void) 12 { 13 helloworldondevice <<< 14, 1 >>>(); 14 cudathreadsynchronize(); } Wynik: Hello World! wpisane przez GPU wielowątkowo! Każda literka przez inny rdzeń(jeśli zasoby były wolne).

38 Problem N ciał bez oddziaływania O(N) Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

39 Problem N ciał bez oddziaływania O(N) N nieoddziałujących ciał, problem O(N) N nieoddziałujących punktów materialnych grawitacjag = (0,g y,0) przyciąganie do wybranego punktu pętla obliczeniowa: 1. wyliczenie sił 2. całkowanie równań ruchu małooperacjinaodczytzpamięci! złożoność problemu rośnie liniowo- O(N)

40 Problem N ciał bez oddziaływania O(N) Rozwiązanie 1. CPU 1 2 for(inti=0;i<n;i++) 3 { 4 5 DIST=sqrt((_ATR.x-pos[i].x)*(_ATR.x-pos[i].x) 6 +(_ATR.y-pos[i].y)*(_ATR.y-pos[i].y)); 7 8 if(dist) 9 { 10 ATRF.x=KD*((_ATR.x-pos[i].x))/DIST; 11 ATRF.y=KD*((_ATR.y-pos[i].y))/DIST; 12 } vel[i].x=vel[i].x+(g.x+atrf.x)*dt; 15 vel[i].y=vel[i].y+(g.y+atrf.y)*dt; pos[i].x=pos[i].x+vel[i].x*dt; 18 pos[i].y=pos[i].y+vel[i].y*dt; if(pos[i].x >1){pos[i].x = 1; vel[i].x =-vel[i].x;} 21 if(pos[i].y >1){pos[i].y = 1; vel[i].y =-vel[i].y;} 22 if(pos[i].x <-1){pos[i].x =-1; vel[i].x =-vel[i].x;} 23 if(pos[i].y <-1){pos[i].y =-1; vel[i].y =-vel[i].y;} } x2 dostęp do pamięci!

41 Problem N ciał bez oddziaływania O(N) Rozwiązanie 2. GPU, float3 1 global void movepartondevice 2 (float3* posvbo, float3 *vel,...) 3 { 4 int idx = blockidx.x*blockdim.x + threadidx.x; 5 6 float3 posidx; 7 float3 velidx; 8 9 (...) if(idx<_n) 12 { 13 posidx = posvbo[idx]; 14 velidx = vel[idx]; // // Tu: pętla analogiczna z CPU, z zamianą 18 // pos[i]-> posidx 19 // vel[i]-> velidx 20 // posvbo[idx] = posidx; 23 vel[idx] = velidx; 24 } 25 } x2 dostęp do pamięci!

42 Problem N ciał bez oddziaływania O(N) Dostęp zwarty do pamięci(coalesced)

43 Problem N ciał bez oddziaływania O(N) Rozwiązanie 3. GPU, float4 1 global void movepartondevice 2 (float4* posvbo, float4 *vel,...) 3 { 4 int idx = blockidx.x*blockdim.x + threadidx.x; 5 6 float4 posidx; 7 float4 velidx; 8 9 (...) if(idx<_n) 12 { 13 posidx = posvbo[idx]; 14 velidx = vel[idx]; // // Tu: pętla analogiczna z CPU, z zamianą 18 // pos[i]-> posidx 19 // vel[i]-> velidx 20 // posvbo[idx] = posidx; 23 vel[idx] = velidx; 24 } 25 } x10 rząd wielkości!

44 Problem N ciał bez oddziaływania O(N) Problem O(N), wizualizacja w OpenGL, GPU vs CPU 0.5 miliona punktów wizualizacja w czasie rzeczywistym OpenGL GL Utility Toolkit(GLUT) Vertex Buffer Object(VBO) [run]

45 Problem N ciał bez oddziaływania O(N) Problem O(N) w działaniu, porównanie t[ms] CPU GPU3 GPU4 złożoność liniowa GPU pamięć karty > CPU pamięć na płycie. dostępzwarty x10! N

46 ProblemNoddziałującychciałO(N 2 ) Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

47 ProblemNoddziałującychciałO(N 2 ) Noddziałującychciał,problemO(N 2 ) N mas oddziałujących grawitacyjnie oddziaływanie każdy z każdym pętla obliczeniowa: 1. wyliczenie sił(podwójna) 2. całkowanie równań ruchu

48 ProblemNoddziałującychciałO(N 2 ) Rozwiązanie 1. CPU, N= (...) 3 4 for(inti=0;i<n;i++) 5 for(intj=0;j<n;j++) 6 { 7 n.x=pos[j].x-pos[i].x; 8 n.y=pos[j].y-pos[i].y; 9 10 DIST=sqrt(n.x*n.x+n.y*n.y+EPS2); //fg=n*g*m1m2/r** forc[i].x +=(n.x* BIGG/ DIST*DIST*DIST); 15 forc[i].y +=(n.y* BIGG/ DIST*DIST*DIST); } (...)

49 ProblemNoddziałującychciałO(N 2 ) Rozwiązanie 2. GPU, N= global void moveparticlesondevice 2 (float4* posvbo, float4 *vel,...) 3 { 4 int idx = blockidx.x*blockdim.x + threadidx.x; 5 (...) 6 if(idx<_n) 7 { 8 posidx = posvbo[idx]; 9 10 forc.x = 0; 11 forc.y = 0; for(intj=0;j<_n;j++) 14 { 15 //fg=n*g*m1m2/r**3 16 // między posidx, a posvbo[j] 17 // analogicznie jak w kodzie CPU 18 (...) 19 } 20 } (...) 23 }

50 ProblemNoddziałującychciałO(N 2 ) Algorytm n ciał z pamięcią shared Efektywny algorytm N ciał dla CUDA: Lars Nyland, Mark Harris, Jan Prins Fast N-Body Simulation with CUDA GPUGems3 algorytm n ciał z wykorzystaniem pamięci współdzielonej wkażdymwątkuwyznaczanychjestnsił p-ilośćwątkówwbloku każdy wątek wykonuje p razy pętlę liczącą N/p oddziaływań te N/p oddziaływań obliczanych jest w pamięci shared mapowanie wątek/blok- miejsce w pamięci

51 ProblemNoddziałującychciałO(N 2 ) Rozwiązanie 3. GPU- pamięć współdzielona, N= naive (loop) shared mem t CPU / t GPU x100! 2rzędyróżnicy! N

52 ProblemNoddziałującychciałO(N 2 ) ProblemO(N 2 ),wizualizacjawopengl,gpuvscpu 5835 punktów wizualizacja w czasie rzeczywistym OpenGL GL Utility Toolkit(GLUT) Vertex Buffer Object(VBO) [run-cpu] [run-gpu] [(GPU+CPU)]

53 Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

54 Na zakończenie Krótkie podsumowanie: optymalizacja dostępu do pamięci- kluczowa potrzebna gruntowna rekonstrukcja algorytmów pamięćtypushared-16kbrejestrów(!) narzut pracy ogromny, ale.. zysk również Przyszłość? GTX300- ponoć czeka nas zmiana architektury (!) Uwaga: W trakcie seminarium nie powiedzieliśmy nic o compute capabilities, operacjach atomowych, synchronizacji wątków, buforach wierzchołków i pikseli, teksturach, rozplątywaniu pętli, konfliktach dostępu do pamięci, zwojach (warpach) wątków itd.. Źródło: nvidia CUDA, Programming Guide 2.2, nvidia

55 Żródła hqgvfa7rye4/skai1b2qgli/aaaaaaaabd4/q5mhupffhca/s400/hun+sen+shaking nvidiacuda,programmingguide2.2,nvidia Wikipedia ZbigniewKoza, CUDAnaTwoimbiurku,czylisłówkilkanatematComputeUnifiedDeviceArchitecture, Wykład

56 Na Deser Plan prezentacji CPU Architektura CPU GPU Architektura GPU Architektura CUDA Istniejące środowiska programowania GPU Programowanie GPU Typy danych i jądro Krata, bloki, wątki, pamięć Przykłady HelloWorld w wersji wielowątkowej Problem N ciał bez oddziaływania O(N) ProblemNoddziałującychciałO(N 2 ) Na Koniec Na Deser

57 Na Deser Na deser prosty model materii granulowanej: N.Bell,Y.YuandP.J.Mucha, Particle-Based Simulation of Granular Materials, Eurographics/ACM SIGGRAPH(2005) oddziaływania sprężyste między masami CUDA, 4096 ziaren, [run]

58 Na Deser Koniec Dziękuję za uwagę

Programowanie Równoległe Wykład, CUDA praktycznie 1. Maciej Matyka Instytut Fizyki Teoretycznej

Programowanie 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ółowo

CUDA jako platforma GPGPU w obliczeniach naukowych

CUDA jako platforma GPGPU w obliczeniach naukowych CUDA jako platforma GPGPU w obliczeniach naukowych Seminarium Grupy Neutrinowej, 12.12.2011 Maciej Matyka, Zbigniew Koza Instytut Fizyki Teoretycznej Uniwersytet Wrocławski Bariery sprzętowe (procesory)

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie kart graficznych

Programowanie 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ółowo

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

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

Bardziej szczegółowo

Programowanie Współbieżne

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

Bardziej szczegółowo

Programowanie procesorów graficznych GPGPU

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

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ń

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Tesla. Architektura Fermi

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

Bardziej szczegółowo

Przetwarzanie Równoległe i Rozproszone

Przetwarzanie Równoległe i Rozproszone POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI I TECHNOLOGII INFORMACYJNYCH Przetwarzanie Równoległe i Rozproszone www.pk.edu.pl/~zk/prir_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl

Bardziej szczegółowo

Wprowadzenie do programowania w środowisku CUDA. Środowisko CUDA

Wprowadzenie 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ółowo

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek Implementacja sieci neuronowych na karcie graficznej Waldemar Pawlaszek Motywacja Czyli po co to wszystko? Motywacja Procesor graficzny GPU (Graphics Processing Unit) Wydajność Elastyczność i precyzja

Bardziej szczegółowo

Moc płynąca z kart graficznych

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

Bardziej szczegółowo

Karta przedmiotu. Podstawy programowania procesorów graficznych. realizowanego w ramach projektu PO WER

Karta przedmiotu. Podstawy programowania procesorów graficznych. realizowanego w ramach projektu PO WER Karta przedmiotu Podstawy programowania procesorów graficznych realizowanego w ramach projektu PO WER 2017-2019 Wydział Inżynierii Elektrycznej i Komputerowej Kierunek studiów: Informatyka Profil: Ogólnoakademicki

Bardziej szczegółowo

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Architektury komputerów Architektury i wydajność. Tomasz Dziubich Architektury komputerów Architektury i wydajność Tomasz Dziubich Przetwarzanie potokowe Przetwarzanie sekwencyjne Przetwarzanie potokowe Architektura superpotokowa W przetwarzaniu potokowym podczas niektórych

Bardziej szczegółowo

Nowoczesne technologie przetwarzania informacji

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

Bardziej szczegółowo

OpenGL - Open Graphics Library. Programowanie grafiki komputerowej. OpenGL 3.0. OpenGL - Architektura (1)

OpenGL - Open Graphics Library. Programowanie grafiki komputerowej. OpenGL 3.0. OpenGL - Architektura (1) OpenGL - Open Graphics Library Programowanie grafiki komputerowej Rados$aw Mantiuk Wydzia$ Informatyki Zachodniopomorski Uniwersytet Technologiczny! OpenGL: architektura systemu do programowania grafiki

Bardziej szczegółowo

Libra.cs.put.poznan.pl/mailman/listinfo/skisrkolo.

Libra.cs.put.poznan.pl/mailman/listinfo/skisrkolo. Konrad Szałkowski Libra.cs.put.poznan.pl/mailman/listinfo/skisrkolo Skisr-kolo@libra.cs.put.poznan.pl Po co? Krótka prezentacja Skąd? Dlaczego? Gdzie? Gdzie nie? Jak? CPU Pamięć DDR3-19200 19,2 GB/s Wydajność

Bardziej szczegółowo

Obliczenia na GPU w technologii CUDA

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

Bardziej szczegółowo

CUDA. cudniejsze przyk ady

CUDA. 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ółowo

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

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

Bardziej szczegółowo

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz Programowanie równoległe i rozproszone Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz 23 października 2009 Spis treści Przedmowa...................................................

Bardziej szczegółowo

Programowanie CUDA informacje praktycznie i. Wersja

Programowanie 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ółowo

i3: internet - infrastruktury - innowacje

i3: 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ółowo

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

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

Bardziej szczegółowo

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1

Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej. Krzysztof Banaś Obliczenia równoległe 1 Programowanie w modelu równoległości danych oraz dzielonej globalnej pamięci wspólnej Krzysztof Banaś Obliczenia równoległe 1 Model równoległości danych Model SPMD (pierwotnie dla maszyn SIMD) Zrównoleglenie

Bardziej szczegółowo

Programowanie kart graficznych

Programowanie kart graficznych Programowanie kart graficznych Sławomir Wernikowski swernikowski@wi.zut.edu.pl Wykład #1: Łagodne wprowadzenie do programowania w technologii NVIDIA CUDA Terminologia: Co to jest GPGPU? General-Purpose

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Wykład 3 Jan Kazimirski 1 Podstawowe elementy komputera. Procesor (CPU) 2 Plan wykładu Podstawowe komponenty komputera Procesor CPU Cykl rozkazowy Typy instrukcji Stos Tryby adresowania

Bardziej szczegółowo

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania, Przetwarzanie równoległe PROJEKT OMP i CUDA Temat projektu dotyczy analizy efektywności przetwarzania równoległego realizowanego przy użyciu komputera równoległego z procesorem wielordzeniowym z pamięcią

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności. Procesory wielordzeniowe (multiprocessor on a chip) 1 Procesory wielordzeniowe 2 Procesory wielordzeniowe 3 Intel Nehalem 4 5 NVIDIA Tesla 6 ATI FireStream 7 NVIDIA Fermi 8 Sprzętowa wielowątkowość 9 Architektury

Bardziej szczegółowo

CUDA. obliczenia na kartach graficznych. Łukasz Ligowski. 11 luty Łukasz Ligowski () CUDA 11 luty / 36

CUDA. 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ółowo

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza dźwięku i obrazu

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza dźwięku i obrazu Synteza dźwięku i obrazu GRAFIKA KOMPUTEROWA Rozwiązania sprzętowe i programowe Przyspieszanie sprzętowe Generowanie obrazu 3D wymaga złożonych obliczeń, szczególnie jeżeli chodzi o generowanie płynnej

Bardziej szczegółowo

Programowanie aplikacji równoległych i rozproszonych

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

Bardziej szczegółowo

Programowanie procesorów graficznych w CUDA.

Programowanie 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ółowo

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza i obróbka obrazu

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza i obróbka obrazu Synteza i obróbka obrazu GRAFIKA KOMPUTEROWA Rozwiązania sprzętowe i programowe Przyspieszanie sprzętowe Generowanie obrazu 3D wymaga złożonych obliczeń, szczególnie jeżeli chodzi o generowanie płynnej

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl

Bardziej szczegółowo

Programowanie CUDA informacje praktycznie i przykłady. Wersja

Programowanie 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ółowo

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

Bardziej szczegółowo

Grafika komputerowa. Grafika komputerowa. Grafika komputerowa

Grafika komputerowa. Grafika komputerowa. Grafika komputerowa OpenGL - Koncepcja i architektura Aplikacja odwo!uje si" poprzez funkcje API OpenGL bezpo#rednio do karty graficznej (z pomini"ciem systemu operacyjnego). Programowanie grafiki komputerowej Rados!aw Mantiuk

Bardziej szczegółowo

Programowanie kart graficznych. Sprzęt i obliczenia

Programowanie 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ółowo

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system. Wstęp Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system. Przedstawienie architektur sprzętu wykorzystywanych do

Bardziej szczegółowo

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

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

Bardziej szczegółowo

Programowanie współbieżne Wykład 2. Iwona Kochańska

Programowanie współbieżne Wykład 2. Iwona Kochańska Programowanie współbieżne Wykład 2 Iwona Kochańska Miary skalowalności algorytmu równoległego Przyspieszenie Stały rozmiar danych N T(1) - czas obliczeń dla najlepszego algorytmu sekwencyjnego T(p) - czas

Bardziej szczegółowo

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński Java - wprowadzenie Programowanie Obiektowe Mateusz Cicheński O języku Czym jest Java Cechy charakterystyczne języka Przykładowe zastosowania Składnia języka Podstawowe typy Wybrane słowa kluczowe Plan

Bardziej szczegółowo

Metody optymalizacji soft-procesorów NIOS

Metody optymalizacji soft-procesorów NIOS POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji Zakład Podstaw Telekomunikacji Kamil Krawczyk Metody optymalizacji soft-procesorów NIOS Warszawa, 27.01.2011

Bardziej szczegółowo

Implementacje algorytmów oddziałujących cząstek na architekturach masywnie równoległych

Implementacje algorytmów oddziałujących cząstek na architekturach masywnie równoległych Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki Katedra Informatyki Autoreferat rozprawy doktorskiej Implementacje algorytmów

Bardziej szczegółowo

Architektura von Neumanna

Architektura von Neumanna Architektura von Neumanna Klasyfikacja systemów komputerowych (Flynna) SISD - Single Instruction Single Data SIMD - Single Instruction Multiple Data MISD - Multiple Instruction Single Data MIMD - Multiple

Bardziej szczegółowo

Budowa i zasada działania komputera. dr Artur Bartoszewski

Budowa i zasada działania komputera. dr Artur Bartoszewski Budowa i zasada działania komputera 1 dr Artur Bartoszewski Jednostka arytmetyczno-logiczna 2 Pojęcie systemu mikroprocesorowego Układ cyfrowy: Układy cyfrowe służą do przetwarzania informacji. Do układu

Bardziej szczegółowo

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK 1 PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK POLITECHNIKA CZĘSTOCHOWSKA 2 Część teoretyczna Informacje i wstępne wymagania Cel przedmiotu i zakres materiału Zasady wydajnego

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Przetwarzanie potokowe pipelining

Przetwarzanie potokowe pipelining Przetwarzanie potokowe pipelining (część A) Przypomnienie - implementacja jednocyklowa 4 Add Add PC Address memory ister # isters Address ister # ister # memory Wstęp W implementacjach prezentowanych tydzień

Bardziej szczegółowo

Klasyfikacja systemów komputerowych. Architektura von Neumanna Architektura harwardzka Zmodyfikowana architektura harwardzka. dr inż.

Klasyfikacja systemów komputerowych. Architektura von Neumanna Architektura harwardzka Zmodyfikowana architektura harwardzka. dr inż. Rok akademicki 2011/2012, Wykład nr 6 2/46 Plan wykładu nr 6 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2011/2012

Bardziej szczegółowo

Wprowadzenie do grafiki maszynowej. Wprowadzenie do wprowadzenia

Wprowadzenie do grafiki maszynowej. Wprowadzenie do wprowadzenia Wprowadzenie do grafiki maszynowej. Wprowadzenie do wprowadzenia Aleksander Denisiuk Uniwersytet Warmińsko-Mazurski Olsztyn, ul. Słoneczna 54 denisjuk@matman.uwm.edu.pl 1 / 17 Wprowadzenie do wprowadzenia

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2011/2012 Wykład nr 6 (27.04.2012) dr inż. Jarosław Forenc Rok akademicki

Bardziej szczegółowo

Ó Ń Ś Ą Ś Ń Ś Ś

Ó Ń Ś Ą Ś Ń Ś Ś ź Ó Ń Ś Ą Ś Ń Ś Ś Ś Ą Ś Ń Ś Ę Ń Ą Ą Ś ź Ś ć Ó Ą Ś Ć ć Ś ć Ń ć Ń Ó Ą Ś ć Ó ć ć ć Ń Ę Ń ź ź ć ć Ę ć ć Ń Ń Ę Ą ź Ą Ń Ń Ą Ą Ą Ń ź ć Ń ź Ę ź ć Ą ć Ń ć Ś Ś Ń ć Ń ź ć Ś ź ź Ń Ń Ń ź Ę Ę ź Ę Ś ź Ń ź ć Ń Ń Ń

Bardziej szczegółowo

Ą Ś Ń Ś Ą Ś Ń

Ą Ś Ń Ś Ą Ś Ń ź Ż Ą Ę Ą Ś Ń Ś Ą Ś Ń Ą Ś Ś Ś Ś Ą Ś Ś ź Ś Ś ŚĆ Ń Ń Ń Ś Ń Ń Ń ć Ń Ń Ó Ą Ś Ą Ń Ń Ń ź ć Ń Ń Ń ć Ń Ę Ę Ś ć Ę Ń Ń ź Ą ć Ń Ą Ś Ń Ę Ń Ę Ę Ż Ś Ń Ń Ń ć Ę Ę Ę ć Ę Ą ć Ń Ą ć Ś Ń Ń Ń ć Ń Ę Ń Ń Ę ź Ń Ą Ę Ę Ę Ę Ę Ę

Bardziej szczegółowo

1 Temat: Vertex Shader

1 Temat: Vertex Shader Instrukcja Architektura procesorów graficznych 1 Temat: Vertex Shader Przygotował: mgr inż. Tomasz Michno 1 Wstęp 1.1 Czym jest shader Shader jest programem (zazwyczaj krótkim), wykonywanym przez kartę

Bardziej szczegółowo

ć ć ć ć ć ć ć ć ć ć ź

ć ć ć ć ć ć ć ć ć ć ź Ó ć Ś ź ź ć ć ć ć ź ć ź ć ź ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ź Ó ć ć ć ć ź ź ć Ę ć ć ć ź ć ć ź ć Ę ć ć ź ć ź ć Ó ć ć Ą ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć ć Ż ć ć ć Ń ć Ą ź ź ć ć ź ć ć Ę ć ć ć ć ć ć ć ć ź

Bardziej szczegółowo

Programowanie procesorów graficznych GPGPU

Programowanie procesorów graficznych GPGPU Programowanie procesorów graficznych GPGPU 1 OpenCL projektowanie kerneli Przypomnienie: kernel program realizowany przez urządzenie OpenCL wątek (work item) rdzeń (processing element): jeden wątek wykonywany

Bardziej szczegółowo

Zastosowanie technologii nvidia CUDA do zrównoleglenia algorytmu genetycznego dla problemu komiwojażera

Zastosowanie technologii nvidia CUDA do zrównoleglenia algorytmu genetycznego dla problemu komiwojażera Zastosowanie technologii nvidia CUDA do zrównoleglenia algorytmu genetycznego dla problemu komiwojażera Adam Hrazdil Wydział Inżynierii Mechanicznej i Informatyki Kierunek informatyka, Rok V hrazdil@op.pl

Bardziej szczegółowo

Grafika Komputerowa. Wprowadzenie

Grafika Komputerowa. Wprowadzenie Grafika Komputerowa. Wprowadzenie Aleksander Denisiuk Polsko-Japońska Akademia Technik Komputerowych Wydział Informatyki w Gdańsku ul. Brzegi 55 80-045 Gdańsk Ò Ù Ô º ÙºÔÐ 1 / 17 Wprowadzenie Najnowsza

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

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

Bardziej szczegółowo

Architektura mikroprocesorów z rdzeniem ColdFire

Architektura mikroprocesorów z rdzeniem ColdFire Architektura mikroprocesorów z rdzeniem ColdFire 1 Rodzina procesorów z rdzeniem ColdFire Rdzeń ColdFire V1: uproszczona wersja rdzenia ColdFire V2. Tryby adresowania, rozkazy procesora oraz operacje MAC/EMAC/DIV

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Podstawy Informatyki Systemy sterowane przepływem argumentów

Podstawy Informatyki Systemy sterowane przepływem argumentów Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Komputer i jego architektura Taksonomia Flynna 2 Komputer i jego architektura Taksonomia Flynna Komputer Komputer

Bardziej szczegółowo

Podstawy Programowania.

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

Bardziej szczegółowo

Budowa komputera Komputer computer computare

Budowa komputera Komputer computer computare 11. Budowa komputera Komputer (z ang. computer od łac. computare obliczać) urządzenie elektroniczne służące do przetwarzania wszelkich informacji, które da się zapisać w formie ciągu cyfr albo sygnału

Bardziej szczegółowo

Jacek Matulewski - Fizyk zajmujący się na co dzień optyką kwantową i układami nieuporządkowanymi na Wydziale Fizyki, Astronomii i Informatyki

Jacek Matulewski - Fizyk zajmujący się na co dzień optyką kwantową i układami nieuporządkowanymi na Wydziale Fizyki, Astronomii i Informatyki Michał Matuszak, Jacek Matulewski CUDA i czyny Technologia NVIDIA CUDA W zeszłomiesięcznym numerze SDJ w artykule pt. Czyń cuda opisaliśmy

Bardziej szczegółowo

Programowanie - wykład 4

Programowanie - wykład 4 Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include

Bardziej szczegółowo

Organizacja pamięci w procesorach graficznych

Organizacja pamięci w procesorach graficznych Organizacja pamięci w procesorach graficznych Pamięć w GPU przechowuje dane dla procesora graficznego, służące do wyświetlaniu obrazu na ekran. Pamięć przechowuje m.in. dane wektorów, pikseli, tekstury

Bardziej szczegółowo

Przyspieszanie sprzętowe

Przyspieszanie sprzętowe Synteza dźwięku i obrazu GRAFIKA KOMPUTEROWA Rozwiązania sprzętowe i programowe Przyspieszanie sprzętowe Generowanie obrazu 3D wymaga złoŝonych obliczeń, szczególnie jeŝeli chodzi o generowanie płynnej

Bardziej szczegółowo

Programowanie Równoległe wykład 12. Thrust C Maciej Matyka Instytut Fizyki Teoretycznej

Programowanie Równoległe wykład 12. Thrust C Maciej Matyka Instytut Fizyki Teoretycznej Programowanie Równoległe wykład 12 Thrust C++ 30.01.2013 Maciej Matyka Instytut Fizyki Teoretycznej Co to jest Thrust C++? Thrust C++ biblioteka szablonów Interfejs w pewnym sensie spójny z STL Biblioteka

Bardziej szczegółowo

LEKCJA TEMAT: Współczesne procesory.

LEKCJA TEMAT: Współczesne procesory. LEKCJA TEMAT: Współczesne procesory. 1. Wymagania dla ucznia: zna pojęcia: procesor, CPU, ALU, potrafi podać typowe rozkazy; potrafi omówić uproszczony i rozszerzony schemat mikroprocesora; potraf omówić

Bardziej szczegółowo

Budowa Mikrokomputera

Budowa Mikrokomputera Budowa Mikrokomputera Wykład z Podstaw Informatyki dla I roku BO Piotr Mika Podstawowe elementy komputera Procesor Pamięć Magistrala (2/16) Płyta główna (ang. mainboard, motherboard) płyta drukowana komputera,

Bardziej szczegółowo

Programowanie PKG - informacje praktycznie i przykłady. Wersja z Opracował: Rafał Walkowiak

Programowanie PKG - informacje praktycznie i przykłady. Wersja z Opracował: Rafał Walkowiak Programowanie PKG - informacje praktycznie i przykłady problemów obliczeniowych Wersja z 7.05.2018 Opracował: Rafał Walkowiak cudasetdevice() Podstawowe operacje na urządzeniu GPU Określenie GPU i ustanowienie

Bardziej szczegółowo

Architektura mikroprocesorów TEO 2009/2010

Architektura mikroprocesorów TEO 2009/2010 Architektura mikroprocesorów TEO 2009/2010 Plan wykładów Wykład 1: - Wstęp. Klasyfikacje mikroprocesorów Wykład 2: - Mikrokontrolery 8-bit: AVR, PIC Wykład 3: - Mikrokontrolery 8-bit: 8051, ST7 Wykład

Bardziej szczegółowo