Belépés címtáras azonosítással
magyar nyelvű adatlap
GPU-k általános célú programozása
A tantárgy angol neve: General Purpose Computing on Graphics Processing Units
Adatlap utolsó módosítása: 2012. május 30.
Tantárgy lejárati dátuma: 2015. június 30.
Mérnök informatikus szak
Villamosmérnöki szak
Szabadon választható tantárgy
dr. Szécsi László
Tóth Balázs
A jelenlegi grafikus kártyák (GPU) nagy teljesítményű párhuzamos rendszerek (sok száz processzor és 1 teraflopnál nagyobb teljesítmény), amelyeket nem csupán a képszintézisben, hanem általános célú számításigényes feladatokban is fel lehet használni. A GPU processzortömbjét C-szerű programozási nyelveken lehet programozni (Cg, HLSL, CUDA, stb.), de a hatékony alkalmazáshoz a párhuzamos programozás és a nagy teljesítményű számítási algoritmusok (HPC) elveit is el kell sajátítani.
A tárgy keretében a GPU-t mint általános célú párhuzamos programozási eszközt mutatjuk be különböző programozási környezetek (API-k) felhasználásával, és a hallgatók konkrét példákon keresztül tanulhatják meg ezen eszközök programozási módszereit.
1. Előadás: A GPU története, fejlődési lépései: Fix-funkciójú csővezeték, képszintézis API-k programozható csúcspont, geometria és pixel árnyalóval. A beépített elemek funkciói (raszterizáció, mélység teszt, alfa összemosás). Labor: Ismerkedés a fejlesztő eszközzel, egyszerű grafikus programok készítése
2. OpenGL/Cg API felépítése és használata. Labor: képfeldolgozási műveletek, szűrés, éldetektálás, tone-mapping, mélységélesség párhuzamos megvalósítása.
3. GLSL környezet. Labor: Keresés és rendezés. Bitonic keresés, négyes fa, fontosság szerinti mintavételezés.
4. Direct3D/HLSL API felépítése és használata. Labor: Sugárkövetés megvalósítása a GPU-n.
5. Monte Carlo módszerek a GPU-n. Labor: Véletlenszám generálás, integrálás, globális illumináció.
6. CUDA felépítése, CUDA programok írása. Labor: skalármezők izofelületeinek megkeresére és megjelenítése.
7. Lineáris algebrai műveletek CUDA-val. Szálak szinkronizálása. Párhuzamosítási stratégiák: gyűjtés és szórás. Oszthatatlan műveletek: Labor: nagy vektorok skaláris szorzása, mátrix-vektor szorzás, lineáris egyenlet megoldása.
8. Fizikai szimuláció GPU-n I. Folytonos problémák diszkretizálási lehetőségei, Lagrange és Euler módszerek. Részecskék. Differenciál operátorok és diszkrét változataik. Labor: többtest probléma megoldása.
9. Fizikai szimuláció II: digitális holográfia. Labor: holográf program elkészítése.
9. Fizikai szimuláció III: folyadékáramlás szimulációja. Navier-Stokes egyenlet értelmezése és diszkrét változata. Időbeli differenciálegyenletek megoldása. Előre és visszafelé haladó Euler módszer. Térfogati adatok megjelenítése sugármasírozással.
10. Tőzsdei opcióárazás, statisztikai műveletek GPU-n. Monte Carlo rizikó elemzés. Labor: opcióárazás és egy tőzsdei modell megoldása.
11. Tomográfiás rekonstrukció GPU-n I. Labor: szűrt visszavetítés.
12. Tomográfiás rekonstrukció GPU-n. A tomográfiás rekonstrukcó alapjai és párhuzamosítása. Labor: előre-vetítő operatáror implementálása.
13. OpenCL: Az OpenCL és a CUDA különbségei. Szabványosítási törekvések, nem GPU alapú párhuzamos rendszerek alkalmazásai. Labor: Lineáris algebra OpenCL-ben.
14. Házi feladatok bemutatása és beszámolók.
A félév során egy önként választott házifeladatot kell megoldani és a félév végén bemutatni. A házifeladat sikeres megvédése az aláírás feltétele. A házi feladat értékelését a vizsgajegybe beszámítjuk. A legkiválóbb házifeladatok készítőinek megajánlott jegyet adunk.
A tárgy vizsgával zárul.
Szirmay-Kalos László, Szécsi László, Mateu Sbert: GPU-Based Techniques for Global Illumination Effects Morgan and Claypool Publishers, 2008.
Szirmay-Kalos László, Szécsi László: GPGPU programming (in Algorithm in Informatics). Tinta kiadó. 2011.
Dr. Szécsi László, tanársegéd
Dr. Szirmay-Kalos László, egyetemi tanár
Tóth Balázs, tanársegéd