Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    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, Irányítástechnika és Informatika Tanszék
    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.