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.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar

Mérnök informatikus szak

Villamosmérnöki szak

Szabadon választható tantárgy

Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIIIAV00   2/0/2/v 4  
3. A tantárgyfelelős személy és tanszék Dr. Tóth Balázs György,
A tantárgy tanszéki weboldala http://cg.iit.bme.hu/portal/node/311
4. A tantárgy előadója

dr. Szécsi László

Tóth Balázs

5. A tantárgy az alábbi témakörök ismeretére épít C, C++ programozás
6. Előtanulmányi rend
Ajánlott:
Szoftver labor 3.
7. A tantárgy célkitűzése

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. 

8. A tantárgy részletes tematikája

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. 

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) A tantárgy anyagát a hallgatók előadásokon ismerhetik meg, a hallottakat pedig a laborfoglalkozásokon próbálhatják ki a gyakorlatban.
10. Követelmények

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.

11. Pótlási lehetőségek A házifeladatot a határidő elmulasztása esetén a szorgalmi időszak végéig lehet pótolni a TVSZ-ben meghatározott feltételek mellett.
12. Konzultációs lehetőségek A gyakorlatokon és utána a félév során folyamatos konzultációs lehetőséget biztosítunk.
13. Jegyzet, tankönyv, felhasználható irodalom

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.

14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
Kontakt óra56
Félévközi készülés órákra24
Felkészülés zárthelyire
Házi feladat elkészítése20
Kijelölt írásos tananyag elsajátítása
Vizsgafelkészülés20
Összesen120
15. A tantárgy tematikáját kidolgozta

Dr. Szécsi László, tanársegéd

Dr. Szirmay-Kalos László, egyetemi tanár

Tóth Balázs, tanársegéd

Egyéb megjegyzések Arra számítunk, hogy a tárgyat indulása esetén az nVidia és az Intel szponzorálni fogja, elsősorban tananyagokkal és a legújabb hardver eszközökkel.