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