GPU programozás és párhuzamos rendszerek laboratórium

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

Adatlap utolsó módosítása: 2014. október 2.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar
Informatika MSc, Vizualizációs infromatika főspecializáció
Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIIIMB00 3 0/0/3/f 4  
3. A tantárgyfelelős személy és tanszék Dr. Szécsi László,
A tantárgy tanszéki weboldala http://cg.iit.bme.hu/portal/oktatott-targyak/gpu-programozas-es-parhuzamos-rendszerek-laboratorium
4. A tantárgy előadója Dr. Tóth Balázs György, Irányítástechnika és Informatika Tanszék
5. A tantárgy az alábbi témakörök ismeretére épít Programozás, adatstruktúrák, algoritmusok, matematika
6. Előtanulmányi rend
Ajánlott:

A tantárgy elvégzéséhez C++ programozási ismeret szükséges.

7. 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.
8. 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.

 A laboratórium célja a grafikus hardver és az inkrementális csővezeték felépítésének megismerése. A laboratórium során bemutatásra kerül a csővezeték programozható egységeinek működési környezete és használata példákon keresztül.

 

2. Modern OpenGL API felépítése és használata, GLSL shader nyelv.

A laboratórium során a bemutatásra kerül a grafikus hardver programozásához használható OpenGL API és GLSL shader nyelv. A laboratórium célja az OpenGL API által nyújtott alapvető szolgáltatások bemutatása: geometria definíció, textúrák, shader programok létrehozása és használata, illetve az OpenGL állapottér.

 

3.  Vektor feldolgozás a GPU-n, szóró és gyűjtő típusú algoritmusok.

A laboratórium célja az alapvető számítási sémák bemutatása. Az egyszerű párhuzamos számítási módok példákon keresztül kerülnek bemutatásra: 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.

A laboratórium célja az OpenGL Compute Shader bemutatása, amely az OpenGL API-n keresztül elérhetően, de az inkrementális pipeline-tól teljesen elkülönülve általános célú számítások implementálását tesz lehetővé. A laboratórium során a Compute Shader használata a sugárkövetésen alapuló képszintézis algoritmuson keresztül kerül bemutatásra.

 

5. Bevezetés a CUDA keretrendszer használatába.

A laboratórium célja a CUDA keretrendszer bemutatása. A laboratórium során bemutatásra kerül a  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 segítségével áttekintjük a párhuzamos primitívek megvalósítását CUDA platformon.

 

6. Fejlett párhuzamos algoritmusok

A laboratórium célja a grafikus hardver masszívan párhuzamos működéséhez illeszkedő algoritmusok bemutatása. A laboratórium során bemutatásra kerülnek az alapvető párhuzamos primitívek felhasználásával felépíthető kereső és rendező algoritmusok.

 

7. Optimalizációs technikák CUDA környezetben.

A laboratórium célja a masszívan párhuzamos környezet által támasztott speciális igényeknek megfelelő optimalizálási technikák bemutatása. A laboratórium során áttekintésre kerülnek a párhuzamos programok skálázódási kérdései, a rendelkezésre álló és effektív memória sávszélesség értékének meghatározása, a kódszervezés hatásai a teljesítményre.

 

8. CUDA környezetben rendelkezésre álló hibakereső és teljesítmény mérő eszközök. 

A laboratórium célja a CUDA környezetben rendelkezésre álló hibakereső és teljesítmény mérő programok megismerése, az NVidia NSight és Visual Profiler bemutatása és használata.

 

9. Bevezetés a CUDA segéd könyvárak használatába: CUFFT, CUBLAS, CURAND, NPP, Thrust.

A laboratórium célja a CUDA környezetben elérhető segédkönyvtárak használatának bemutatása. A laboratórium során a bemutatásra kerül a Thrust konténer könyvtár, illetve a CUFFT, CUBLAS és CURAND könyvtárak, amelyek segítésével Fourier transzformáció, egyes lineáris algebra műveletek és a véletlen számok generálása gyorsítható. 

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) Laboratórium.
10. Követelmények Órák látogatása, félév végi házi feladat bemutatása.
11. Pótlási lehetőségek A házi feladat a pótlási héten pótlólag beadható.
12. Konzultációs lehetőségek A laboratóriumokat követően, illetve a laborvezetőkkel egyeztetve igény szerint.
13. Jegyzet, tankönyv, felhasználható irodalom A laboratóriumhoz a felkészülést segítő írásos segédlet tartozik.
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ákra18
Felkészülés zárthelyire
Házi feladat elkészítése60
Kijelölt írásos tananyag elsajátítása
Vizsgafelkészülés 
Összesen120
15. A tantárgy tematikáját kidolgozta Dr. Tóth Balázs György, Irányítástechnika és Informatika Tanszék