GPU programozás és párhuzamos rendszerek laboratórium
A tantárgy célkitűzése:
A tárgy célja Modern OpenGL/GLSL és a CUDA környezet alkalmazásának megtanítása a vizuális informatikához kapcsolódó gyakorlati problémákon keresztül.
A tantárgy részletes tematikája:
1. A grafikus hardver felépítése, az inkrementális csővezeték lépései, programozható egységek.
2. Modern OpenGL API felépítése és használata (geometria definíció, textúrák, shader programok, OpenGL állapottér a rendereléshez), GLSL shader nyelv.
3. Vektor feldolgozás a GPU-n, szóró és gyűjtő típusú algoritmusok: iterált függvények attraktorai, egyszerű képfeldolgozási műveletek (fényesség transzformáció, küszöbözés, függvény konvolúció alapú szűrések, élkeresés).
4. OpenGL Compute Shader, mint általános célú lépcső a grafikus pipeline-ban: sugárkövetés a GPU-n.
5. Bevezetés a CUDA keretrendszer használatába:
6. CUDA virtuális gép platform, memória és program modellje. A párhuzamos programok végrehajtási sémája.
7. A CUDA C/C++ nyelv bemutatása.
8. Párhuzamos primitívek megvalósítása CUDA platformon.
9. Optimalizációs technikák CUDA környezetben.
10. A párhuzamos programok skálázódási kérdései, magas szintű optimalizációs technikák.
11. Memória sávszélesség elméleti és effektív értékének meghatározása, a rendelkezésre álló memória sávszélesség optimális kihasználása.
12. Kódszervezési kérdések vizsgálata.
13. CUDA programok teljesítmény mérése és hibakeresés NVidia NSight és Visual Profiler segítségével.
14. Bevezetés a CUDA segéd könyvárak használatába: CUFFT, CUBLAS, CURAND, NPP, Thrust.