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

Slides:



Advertisements
Hasonló előadás
OpenGL 2. gyakorlat Hapák József
Advertisements

CUDA.
2D képszintézis Szirmay-Kalos László.
Geometriai Transzformációk
Geometriai transzformációk
Inkrementális 3D képszintézis
GPU Szirmay-Kalos László.
Geometriai modellezés
Inkrementális 3D képszintézis Szirmay-Kalos László.
OpenGL Szirmay-Kalos László In theory, there is no difference
Geometriai modellezés
Számítógépes grafika Szirmay-Kalos László
Számítógépes grafika Szirmay-Kalos László
3D képszintézis fizikai alapmodellje
Bevezetés.  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.
 Adat- és feladat párhuzamos modell  Az ISO C99 szabvány részhalmaza  párhuzamos kiegészítésekkel  Numerikus műveletek az IEEE754 alapján  Beágyazott.
 CUDA mint architektúra  Párhuzamos feldolgozásra optimalizált architektúra  CUDA mint GPGPU keretrendszer  Runtime és Driver API  CUDA C/C++  NVCC.
Videokártyák.
Utasítás végrehajtás lépései
Számítógépes grafika, PPKE-ITK, Benedek Csaba, D képszintézis 4. előadás.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás.
Textúrák, világmodellek
A számítógépes grafika céljai és feladatai
CISC - RISC processzor jellemzők
3. Vetületi ábrázolások számítási eljárásai
2D képszintézis és textúrák
Számítógépes grafika 3. gyakorlat.
4.7. Textúra A felület anyagszerűsége Sík-képek ráborítása a felületre
2. Koordináta-rendszerek és transzformációk
Számítógépes Grafika Programtervező informatikus (esti)‏ Textúrázás.
2008/2009 tavasz Klár Gergely  Gyakorlatok időpontjai: ◦ Szerda 10:05–11:35 ◦ Csütörtök 10:00+ε –11:30+ε  Gyakvez: ◦ Klár Gergely ◦
Nikházy László Ureczky Bálint Konzulens: dr. Horváth Gábor
Grafikus alaphardver Szirmay-Kalos László. Jelfeldolgozási megközelítés modellezés modell képszintézis Digitális kép megjelenítés Analog Digitál Képinformáció.
2D képszintézis Szirmay-Kalos László.
Inkrementális 3D képszintézis Szirmay-Kalos László.
Számítógépes grafika Bevezetés
Rendering pipeline Ogre3D
Transzformációk Szirmay-Kalos László. Transzformációk (x,y) (x’,y’) = T(x,y) l Tönkre tehetik az egyenletet l Korlátozzuk a transformációkat és az alakzatokat.
Inkrementális 3D képszintézis
3. Vetületi ábrázolások számítási eljárásai
GPU ELTE IK Számítógépes Grafika II. Jeni László Attila
OpenGL 4 shaderek, GLSL Valasek Gábor
GPGPU A grafikus hardver általános célú felhasználása
2. Koordináta-rendszerek és transzformációk
CUDA C/C++ programozás Egyéb eszköztárak vegyesen A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt.
CUDA C/C++ programozás
Fotorealisztikus képszintézis valós időben Szirmay-Kalos László, Csébfalvi Balázs BME IIT.
CUDA C/C++ programozás Atomikus műveletek A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
Geometriai transzformációk
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás.
Informatikai eszközök a virtuális valóság szolgálatában Hapák József ELTE-IK X. Eötvös Konferencia.
Piramis klaszter rendszer
Számítógépes grafika gyakorlat: DirectX 2007/2008 tavasz Klár Gergely
Számítógépes Grafika OpenGL 4 shaderek, GLSL. OpenGL 4 A következő programozható fázisok vannak a 4.x-es OpenGL-ben: Vertex shader Tesselation control.
A számítógépes grafika alapjai, PPKE-ITK, Benedek Csaba, 2010 Tanagyag forrás © Szirmay-Kalos László, BME A számítógépes grafika céljai és feladatai 1.
1 Számítógépek felépítése 5. előadás a CPU gyorsítása, pipeline, cache Dr. Istenes Zoltán ELTE-TTK.
Képek, képfeldolgozás Szirmay-Kalos László.
3.4. Perspektív ábrázolások
GPU alapú fotontranszport nagyfelbontású heterogén közegben BME IIT Szirmay-Kalos László Magdics Milán Tóth Balázs.
Bevezetés a számítógépi grafikába
Teljesítményelemzés CLBenchmark 1.1-el
GPGPU – CUDA 1..
Általános célú számítások a GPU-n
A grafikus hardware programozása
Vizualizáció és képszintézis
GPGPU – CUDA 2..
Szécsi László 3D Grafikus Rendszerek 7. előadás
Nikházy László Ureczky Bálint Konzulens: dr. Horváth Gábor
C/C++, hobbi játékprogramozás
Bevezetés GPGPU Alkalmazások.
Előadás másolata:

Bevezetés

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

Image courtesy of Jeff Preshing (preshing.com)

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

 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

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

 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

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

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)

 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

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

 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

 Vetítés -f -b Nem lineáris

 Vetítés 1 -α -1 -β 0 [x,y,z,1] Lineáris

Virtuális világ Kamera transzformáció Perspektív transzformáció MODELVIEWPROJECTION [x,y,z,1]  T modelviewproj = [X,Y,Z,w] Z camera

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

(-1,-1,-1) (1, 1, 1)

(-1,-1,-1) (1, 1, 1)

1 Képernyő k. (-1,-1,-1) (1, 1, 1) Z(-1,1)(0,1)

(X3,Y3)(X3,Y3) (X1,Y1)(X1,Y1) (X2,Y2)(X2,Y2)

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)

Z(X,Y) X számlálóZ regiszter a X  CLK

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

[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

 = z Szín buffer Mélység buffer Z-buffer

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ő

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ó

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

  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ó

  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ó

  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ó

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

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

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

 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

 CUDA  Compute Unified Device Architecture  NVIDIA  Magas szintű, C szerű nyelv ▪ Atomi műveletek ▪ Szavazás ▪ Dupla pontosságú számítás ▪ Szinkronizáció

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

 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

 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

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

 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

 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