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 programozás és párhuzamos rendszerek labor

    A tantárgy angol neve: GPU Programming and Parallel Systems Laboratory 

    Adatlap utolsó módosítása: 2023. december 30.

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

    Mérnök Informatikus MSc

    Vizuális informatika

    Főspecializáció (A) 

    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIIIMB09   0/0/3/f 5  
    3. A tantárgyfelelős személy és tanszék Dr. Szécsi László,
    4. A tantárgy előadója

    Dr. Szécsi László

    Fridvalszky András 

    5. A tantárgy az alábbi témakörök ismeretére épít
    Programozás, szoftvertervezés, számítógépes grafika,
    matematika, fizika.
    6. Előtanulmányi rend
    Ajánlott:

    Kötelező:

    Számítógépes grafika

    VAGY

    Képszintézis

    Ajánlott:

    A tantárgy elvégzéséhez C++ nyelvű programozási tudás és gyakorlat elengedhetetlen. A Python ismerete

    segít. Algoritmuselméleti alapok, mechanikai ismeretek és a matematikai eszköztár (differenciálegyenletek, numerikus módszerek) megértéséhez szükséges alapismeretek szükségesek.

    7. A tantárgy célkitűzése
    A tárgy célja CUDA és kisebb részben a Vulkan környezet alkalmazásának megtanítása a vizuális
    informatikához kapcsolódó gyakorlati problémákon keresztül. Az architektúra és az azon
    hatékonyan végrehajtható párhuzamos alap- és összetettebb műveletek megismerése után az
    alacsony szintű erőforráskezelés és a legújabb GPU-képességek kihasználásával legyenek képesek
    a hallgatók szimulációs és megjelenítési feladatok megoldására.
    8. A tantárgy részletes tematikája
    1. Bevezetés a CUDA keretrendszer használatába: CUDA virtuális gép platform,
    memória és program modellje. A párhuzamos programok végrehajtási sémája. A
    CUDA C/C++ nyelv bemutatása. Vektorfeldolgozás a GPU-n, szóró és gyűjtő
    típusú algoritmusok.
    2. Párhuzamos primitívek megvalósítása CUDA platformon. Párhuzamos
    rendezések. Radix-rendezés.
    3. Optimalizációs technikák CUDA környezetben. A párhuzamos programok
    skálázódási kérdései, magas szintű optimalizációs technikák.
    Memóriasávszélesség elméleti és effektív értékének meghatározása, a
    rendelkezésre álló memóriasávszélesség optimális kihasználása. Kódszervezési
    kérdések vizsgálata. CUDA programok teljesítményének mérése és hibakeresés
    NVidia NSight segítségével.
    4. Position-Based Dynamics. Ruhaszimuláció. Ütközésdetektálás.
    5. Hajszimuláció. Sorrendfüggetlen átlátszóság (OIT). Anti-aliasing. Előszűrés és
    utószűrés (FSAA vagyis full-screen anti-aliasing).
    6. Strain-Based Dynamics. Lágy testek szimulációja.
    7. Folyadékszimuláció a GPU-n: A Navier-Stokes egyenletek valós idejű megoldása
    2D és 3D rácson.
    8. Folyadékszimuláció a GPU-n részecske alapon. Smoothed Particle
    Hydrodynamics. Az összenyomhatatlanság biztosítása. Position Based Fluids.
    9. Modern alacsony szintű grafikus API (Vulkan). Pipeline, memóriakezelés,
    diszkriptorok, szinkronizáció.
    10. Fényforráskezelés és árnyékok. Mélység-térképek létrehozása és használata.
    Takarás-szűrés (percentage closer filtering). Lágy árnyékok (soft shadow).
    11. Magasságmező, terepgenerálás, tesszellátor. Részletességi szintek. Folytonos
    LOD. Mesh shader.
    12. Illusztratív képszintézis. Geometria-alapú kontúrrajzolás. Vonalkázás, Tonal Art
    Maps.
    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)
    Gyakorlati oktatás. A szükséges elméleti alapok a gyakorlat folyamán hangoznak el. Minden
    laboratóriumi gyakorlathoz tartozik egy kiindulási projekt, amelyben kritikus részfeladatokat kell
    megoldani. Ezek a projektek a félév elején, a Cuda programozás témakörénél minimálisak, a
    hivatalos üres CUDA projekthez legfeljebb a korábbi gyakorlatokon érintett funkciókat adják hozzá.
    A szimulációs feladatokat egy számos „alapműveletet”, például a közelségi keresést megvalósító
    keretben kell megvalósítani. Ez a keret az NVIDIA szimulációs könyvtáraira (elősorban a Warp) épül
    az adott félévben elérhető hardverfeltételek figyelembe vételével. A Vulkan részben egy
    megjelenítőmotort kell kész elemekből összeállítani, és új funkciókkal kiegészíteni. A laborok során
    egy részletes útmutatóként szolgáló fóliasort használunk, amiben jellemzően nem kód, hanem
    algoritmus-leírás, vagy matematikai képletek formájában, de lépésről lépésre végigkövetjük a
    megoldások lépésit. Ezek pontos megértéséhez szükséges magyarázatok a laboron hangzanak el.
    10. Követelmények
    A gyakorlati feladatok megoldását 0-6 pontos skálán értékeljük. Az
    érdemjegybe a legjobb 8 gyakorlat pontszáma, legfejlebb 48 pont
    számít bele. További legfeljebb 52 pontot otthon készített házi
    feladatra adunk. Ezeket az egyéni házi feladatokat legkésőbb a 8-
    adik héten, a hallgatóval egyeztetve adjuk ki, és félév végig lehet
    bemutatni őket. Az osztályzatot az alábbi ponthatárok alapján
    számoljuk:
    0-39%: elégtelen
    40-54%: elégséges
    55-69%: közepes
    70-84%: jó
    85-100%: jeles
    11. Pótlási lehetőségek
    A házi feladat a pótlási héten pótlólag beadható. A labor alkalmak nem pótolhatóak, de csak az
    alkalmak kétharmada (a legjobb nyolc) számít bele az osztályzatba.
    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra42
    Félévközi készülés órákra14
    Felkészülés zárthelyire
    Házi feladat elkészítése87
    Kijelölt írásos tananyag elsajátítása14
    Vizsgafelkészülés
    Összesen150
    15. A tantárgy tematikáját kidolgozta Dr. Szécsi László, egyetemi docens, IIT