Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.