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.  Miért …  … egyszálúan programozunk?  … probléma ez?  Hogyan …  … változik ez?  … tudjuk kihasználni?  Megéri-e párhuzamosítani?

Hasonló előadás


Az előadások a következő témára: "Bevezetés.  Miért …  … egyszálúan programozunk?  … probléma ez?  Hogyan …  … változik ez?  … tudjuk kihasználni?  Megéri-e párhuzamosítani?"— Előadás másolata:

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)

4

5 Image courtesy of NVIDIA Corporation

6

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ó

36

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


Letölteni ppt "Bevezetés.  Miért …  … egyszálúan programozunk?  … probléma ez?  Hogyan …  … változik ez?  … tudjuk kihasználni?  Megéri-e párhuzamosítani?"

Hasonló előadás


Google Hirdetések