Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Bevezetés GPGPU Alkalmazások.

Hasonló előadás


Az előadások a következő témára: "Bevezetés GPGPU Alkalmazások."— Előadás másolata:

1 Bevezetés GPGPU Alkalmazások

2 Miért és hogyan? Miért … Hogyan … Megéri-e párhuzamosítani?
… egyszálúan programozunk? … probléma ez? Hogyan … … változik ez? … tudjuk kihasználni? Megéri-e párhuzamosítani?

3 Egyszálú teljesítmény
Image courtesy of Jeff Preshing (preshing.com)

4 Egyszálú teljesítmény
Image courtesy of Jeff Preshing (preshing.com)

5 CPU – GPU összehasonlítás
Image courtesy of NVIDIA Corporation

6 CPU – GPU összehasonlítás
Image courtesy of NVIDIA Corporation

7 CPU – GPU összehasonlítás
Image courtesy of NVIDIA Corporation Néhány mag (2-8) Bonyolult vezérlés Nagy utasítás és adat cache Soros végrehajtásra optimalizálva Sok mag (2048) Egyszerű elosztott vezérlés Minimális cache Átbocsátó képességre optimalizálva

8 Megéri-e párhuzamosítani?
Mennyit nyerhetünk? Soros kód párhuzamosítása bonyolult lehet. Mennyi a várható teljesítmény növekedés? Erős skálázódás (Amdahl törvény) Tserial – soros futás idő Tparallel – párhuzamos futás idő P – párhuzamosítható kódrész

9 Megéri-e párhuzamosítani?
Mennyit nyerhetünk? Gyenge skálázódás (Gustafson törvény) Mennyire lineáris a skálázódás A processzorok számának növelésével Fix probléma méret processzoronként Azaz a problématér a processzorok számával nő

10 GPU = Graphics Processing Unit
A számítógépes grafika inkrementális képszintézis algoritmusának hardver realizációja Teljesítménykövetelmények: Animáció: néhány nsec / képpont Masszívan párhuzamos Pipeline (stream processzor) Párhuzamos ágak

11 Inkrementális képszintézis
MODELVIEW PROJECTION Perspektív transzformáció + Vágás homogén koordinátákban Kamera transzformáció, illumináció Virtuális világ 2. 1. szín mélység megjelenítés Képernyő transzf+Raszterizáció+interpoláció

12 Textúra leképzés x3, y3, z3 (u3, v3) (u1, v1) x2, y2, z2 (u2, v2)
Interpolációval: (u, v) (u1, v1) (u1, v1) Textúra objektum a grafikus kártya memóriájában: kép + szűrés + kilógás kezelés (u2, v2) (u3, v3) szín

13 Pontok: homogén koordináták
Descartes: (x,y,z) Homogén: [X,Y,Z,w] = [xw,yw,zw,w] Miért jó? Eltolás, elforgatás, középpontos vetítés, stb. mind 4x4-es mátrixszal szorzás Több transzformáció egyetlen mátrixban összefogható Párhuzamosok nem okoznak gondot (párhuzamosok ideális pontban metszik egymást) A homogén koordináták lineáris transzformációi: háromszöget háromszögbe visznek át

14 Homogén koordináták értelmezése
x, y, z az irány w a távolság inverze [x,y,0] [x,y,1/3] [x,y,1] [2x,2y,1] = [x,y,1/2] y x

15 Példák homogén lineáris transzformációkra
Eltolás Elforgatás Skálázás 1 px, py, pz, 1 px, py, pz [x,y,z,1] cos sin -sin cos 1 [x,y,z,1] Sx Sy Sz 1 [x,y,z,1]

16 Példák homogén lineáris transzformációkra
Vetítés Nem lineáris -f -b Nem lineáris

17 Példák homogén lineáris transzformációkra
Vetítés 1 -α -1 -β 0 [x,y,z,1] Lineáris

18 Csúcspontok (vertex) feldolgozása
MODELVIEW PROJECTION Perspektív transzformáció Kamera transzformáció Virtuális világ [x,y,z,1] Tmodelviewproj = [X,Y,Z,w] Zcamera

19 Vágás [X,Y,Z,w] = [xw,yw,zw,w] (1, 1, 1) -1 < x < 1
(-1,-1,-1) [X,Y,Z,w] = [xw,yw,zw,w]

20 Vágás (1, 1, 1) (-1,-1,-1)

21 Vágás (1, 1, 1) (-1,-1,-1)

22 Képernyő (viewport) transzformáció
(-1,-1,-1) (1, 1, 1) 1 Képernyő k. Z(-1,1) (0,1)

23 Raszterizáció (X3,Y3) (X2,Y2) (X1,Y1)

24 Tulajdonságok interpolációja
(X2,Y2,Z2) Z Z(X,Y) = aX + bY + c (X1,Y1,Z1) Y (X3,Y3,Z3) Z(X,Y) 1 pixel / 1 sor = 1 összeadás X Z(X+1,Y) = Z(X,Y) + a

25 Interpolációs hardver
X Z(X,Y) X számláló Z regiszter CLK S a

26 Perspektív helyes interpoláció
u v Y Perspektív helyes X lineáris au X+buY+cu u/h =au X+buY+cu v/h = av X+bvY+cv 1/h =ah X+bhY+ch u = v = ah X+bhY+ch av X+bvY+cv ah X+bhY+ch

27 Homogén lineáris interpolációs hardver
u v X Div Div [u/h](X,Y) [v/h](X,Y) [1/h](X,Y) X számláló [u/h] regiszter [v/h] regiszter [1/h] regiszter S S CLK S av ah au

28 Kompozitálás: Z-buffer algoritmus
2. 1. 3.  = 1 z 0.6 0.3 0.3 0.6 0.8 Mélység buffer Z-buffer Szín buffer

29 Kompozitálás: alfa blending
Interpolált vagy textúrából olvasott szín (Rs,Gs,Bs,As) (Rd,Gd,Bd,Ad) * * első első ALU (R,G,B,A) Rasztertár (R,G,B,A) = (RsAs+Rd(1-As), GsAs+Gd (1-As), BsAs+Bd (1-As), AsAs+Ad (1-As))

30 Képszintézis csővezeték
Képernyő transzf Raszterizáció+interpoláció Z-buffer Rasztertár Csúcspont Transzf.+ megvilágítás kompozit Vágás + homogén osztás Triangle setup Textúrázás

31 A PC-s GPU története Korai nem PC rendszerek
A teljes csővezeték megvalósítva Workstation és Graphics Terminal HP, Sun, Textronix Képernyő transzf Raszterizáció+interpoláció Z-buffer Rasztertár Csúcspont Transzf.+ megvilágítás kompozit Vágás + homogén osztás Triangle setup Textúrázás

32 A PC-s GPU története 1970-1990 Tipikusan 2D Spriteok, primitivek
Blitter, vonal, négyszög rajzolás Ablakkezelő gyorsítás Amiga, Atari, S3 Képernyő transzf Raszterizáció+interpoláció Z-buffer Rasztertár Csúcspont Transzf.+ megvilágítás kompozit Vágás + homogén osztás Triangle setup Textúrázás

33 A GPU története 1990-1998 Vertex feldolgozás, textúra szűrés, Z-buffer
PlayStation, Nintendo64 S3 Virge, ATI Rage, Matrox Mystique 3dfx Voodoo 3dfx Glide Microsoft DirectX 5.0 Képernyő transzf Raszterizáció+interpoláció Z-buffer Rasztertár Csúcspont Transzf.+ megvilágítás kompozit Vágás + homogén osztás Triangle setup Textúrázás

34 A GPU története 1990-2000 A csővezetés felbontása
Transform & Lighting Microsoft DirectX 7.0 OpenGL NVIDIA GeForce 256 (NV10) az első nem professzionális 3D gyorsító Képernyő transzf Raszterizáció+interpoláció Z-buffer Rasztertár Csúcspont Transzf.+ megvilágítás kompozit Vágás + homogén osztás Triangle setup Textúrázás

35 A GPU története 2000 – Shaderek megjelenése
Vertex és fragmens shader (2001) Geometria shader (2006) Programozható tesszelátor (2010) Képernyő transzf Raszterizáció+interpoláció Z-buffer Rasztertár Csúcspont Transzf.+ megvilágítás kompozit Vágás + homogén osztás Triangle setup Textúrázás

36 Modern GPU csővezeték

37 Grafikus API Általános felület a GPU-hoz Csővezeték vezérlése
Shaderek Geometria definíció Textúrák Framebuffer Párhuzamos renderelés

38 Grafikus API Microsoft DirectX Windows specifikus
DirectX7: Transform & Lighting DirectX9: Vertex és pixel shader DirectX10: Geometry shader DirectX11: Tesszeláció, DirectCompute

39 Grafikus API OpenGL OpenGL 2.0: Vertex és pixel shader
OpenGL 3.0: Framebuffer objects OpenGL 3.1: OpenCL interop OpenGL 3.2: Geometry Shader OpenGL 3.3/4.0: Tesszeláció OpenGL 4.3: Compute Shader

40 GPGPU API CUDA Compute Unified Device Architecture 2007. NVIDIA
Magas szintű, C szerű nyelv Atomi műveletek Szavazás Dupla pontosságú számítás Szinkronizáció

41 GPGPU API OpenCL 2008 november, Khronos Group
Gyártó független GPGPU API CPU és GPU összemosás ATI, Intel, Apple, IBM és NVIDIA

42 OpenCL fejlődése 1.0 – 2009 Heterogén környezet támogatás
OpenCL virtuális gép Végrehajtási modell Memória modell Programozási modell OpenCL C nyelv a kernel programokhoz Lineáris és textúra memória támogatás

43 OpenCL fejlődése 1.1 – 2010 Új adattípusok
3 komponensű vektor, új textúra formátumok Több szálon vezérelhető működés Több párhuzamos eszköz támogatása Régióra korlátozott műveletek Bővített eseményrendszer a vezérléshez Új OpenCL C függvények Integer clamp, shuffle, szinkron másolás Javított OpenGL együttműködés

44 OpenCL fejlődése 1.2 – 2011 Eszköz partícionálás
Az eszköz egy része fentartható kritikus feladatokhoz Kernel fordítás és linkelés szétválasztása Bővített textúra támogatás Eszközbe épített kernelek támogatása Videó dekódolás, fix funkciójú eszközök Javított DirectX támogatás IEEE 754 teljes támogatása elérhető

45 OpenCL fejlődése 2.0 – 2013 Osztott virtuális memória
Beágyazott párhuzamosság Kernel oldali munka indítás Általános címtér A különböző memória régiók egy címtérben érhetőek el C11 atomikus műveletek FIFO objektumok a kernel oldalon

46 OpenCL fejlődése 2.1 – 2015 OpenCL C mellett OpenCL C++
C++14 subset A virtuális gép átalakul SPIR-V alapú, mint a Vulkan Kernel objektumok bővítése Alcsoportok Klónozás Javított profiler


Letölteni ppt "Bevezetés GPGPU Alkalmazások."

Hasonló előadás


Google Hirdetések