Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaCsaba Rácz Megváltozta több, mint 8 éve
1
Bevezetés
2
Miért … … egyszálúan programozunk? … probléma ez? Hogyan … … változik ez? … tudjuk kihasználni? Megéri-e párhuzamosítani?
3
Image courtesy of Jeff Preshing (preshing.com)
5
Image courtesy of NVIDIA Corporation
7
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
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) ▪ Mennyire lineáris a skálázódás a párhuzamosítás növelésével? ▪ S: maximális teljesítmény növekedés P: párhuzamosítható kód aránya a soros kódban N: processzorok száma ▪ GPGPU példa: N: nagyon nagy, ha a párhuzamosítható a ¾-e a kódnak
9
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
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
Virtuális világ Kamera transzformáció, illumináció Perspektív transzformáció + Vágás homogén koordinátákban 1.2. Képernyő transzf+Raszterizáció+interpoláció megjelenítés szín mélység MODELVIEWPROJECTION
12
szín (u3, v3) (u1, v1) (u2, v2) Interpolációval: (u, v) Textúra objektum a grafikus kártya memóriájában: kép + szűrés + kilógás kezelés x1, y1, z1 x2, y2, z2 x3, y3, z3 (u1, v1) (u2, v2) (u3, v3) (u1, v1) (u3, v3) (u2, v2)
13
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
x y [x,y,1] [2x,2y,1] = [x,y,1/2] [x,y,1/3] [x,y,0] x, y, z az irány w a távolság inverze
15
Eltolás Elforgatás Skálázás cos sin -sin cos 1 px, py, pz, 1 [x,y,z,1] Sx Sy Sz 1 [x,y,z,1] px, py, pz
16
Vetítés -f -b Nem lineáris
17
Vetítés 1 -α -1 -β 0 [x,y,z,1] Lineáris
18
Virtuális világ Kamera transzformáció Perspektív transzformáció MODELVIEWPROJECTION [x,y,z,1] T modelviewproj = [X,Y,Z,w] Z camera
19
(-1,-1,-1) (1, 1, 1) -w < X < w -w < Y < w -w < Z < w -1 < x < 1 -1 < y < 1 -1 < z < 1 w > 0 [X,Y,Z,w] = [xw,yw,zw,w]
20
(-1,-1,-1) (1, 1, 1)
21
(-1,-1,-1) (1, 1, 1)
22
1 Képernyő k. (-1,-1,-1) (1, 1, 1) Z(-1,1)(0,1)
23
(X3,Y3)(X3,Y3) (X1,Y1)(X1,Y1) (X2,Y2)(X2,Y2)
24
X Y Z Z(X,Y) = aX + bY + c Z(X,Y) Z(X+1,Y) = Z(X,Y) + a (X1,Y1,Z1)(X1,Y1,Z1) (X2,Y2,Z2)(X2,Y2,Z2) (X3,Y3,Z3)(X3,Y3,Z3)
25
Z(X,Y) X számlálóZ regiszter a X CLK
26
u = v = a u X+b u Y+c u a v X+b v Y+c v a h X+b h Y+c h Perspektív helyes lineáris u v X Y u/h =a u X+b u Y+c u v/h = a v X+b v Y+c v 1/h =a h X+b h Y+c h
27
[u/h](X,Y) X számláló [u/h] regiszter auau X CLK [v/h](X,Y) [v/h] regiszter avav [1/h](X,Y) [1/h] regiszter ahah Div u v
28
= 1 0.6 0.3 0.6 0.3 0.8 1.2.3. z Szín buffer Mélység buffer Z-buffer
29
Interpolált vagy textúrából olvasott szín Rasztertár ALU (R s,G s,B s,A s ) (R d,G d,B d,A d ) (R,G,B,A) (R,G,B,A) = (R s A s +R d (1-A s ), G s A s +G d (1-A s ), B s A s +B d (1-A s ), A s A s +A d (1-A s )) * * első
30
Csúcspont Transzf.+ megvilágítás Vágás + homogén osztás Képernyő transzf Textúrázás Z-buffer kompozit Rasztertár Triangle setup Raszterizáció+ interpoláció
31
Korai nem PC rendszerek A teljes csővezeték megvalósítva Workstation és Graphics Terminal ▪ HP, Sun, Textronix Csúcspont Transzf.+ megvilágítás Vágás + homogén osztás Képernyő transzf Textúrázás Z-buffer kompozit Rasztertár Triangle setup Raszterizáció+ interpoláció
32
1970-1990 Tipikusan 2D Spriteok, primitivek ▪ Blitter, vonal, négyszög rajzolás Ablakkezelő gyorsítás Amiga, Atari, S3 Csúcspont Transzf.+ megvilágítás Vágás + homogén osztás Képernyő transzf Textúrázás Z-buffer kompozit Rasztertár Triangle setup Raszterizáció+ interpoláció
33
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 Csúcspont Transzf.+ megvilágítás Vágás + homogén osztás Képernyő transzf Textúrázás Z-buffer kompozit Rasztertár Triangle setup Raszterizáció+ interpoláció
34
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ó Csúcspont Transzf.+ megvilágítás Vágás + homogén osztás Képernyő transzf Textúrázás Z-buffer kompozit Rasztertár Triangle setup Raszterizáció+ interpoláció
35
2000 – Shaderek megjelenése ▪ Vertex és fragmens shader (2001) ▪ Geometria shader (2006) ▪ Programozható tesszelátor (2010) Csúcspont Transzf.+ megvilágítás Vágás + homogén osztás Képernyő transzf Textúrázás Z-buffer kompozit Rasztertár Triangle setup Raszterizáció+ interpoláció
37
Á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
Microsoft DirectX Windows specifikus DirectX7: Transform & Lighting DirectX9: Vertex és pixel shader DirectX10: Geometry shader DirectX11: Tesszeláció, DirectCompute
39
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
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
OpenCL 2008 november, Khronos Group Gyártó független GPGPU API CPU és GPU összemosás ATI, Intel, Apple, IBM és NVIDIA
42
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
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
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
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
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.