GPGPU alkalmazások

A tantárgy angol neve: GPGPU Applications

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, Számítási felhők és párhuzamos rendszerek mellékspecializáció
Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIIIMB01 3 2/1/0/v 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/gpgpu-alkalmazasok
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 tantárgy a grafikus kártyákban rejlő számítási teljesítmények általános célú felhasználását mutatja be a GPU-k általánosított modelljén keresztül. A tantárgy keretében bemutatásra kerül a grafikus hardver felépítése és az általános célú számításokra alkalmazható OpenCL környezet. Bemutatásra kerülnek a masszívan párhuzamos architektúrán hatékonyan implementálható algoritmusok gyakorlati példákon keresztül.
8. A tantárgy részletes tematikája

1. A GPU felépítésének és működésének áttekintése az általános célú programozhatóság szempontjából.

Az előadás keretében áttekintésre kerül a grafikus hardver masszívan párhuzamos architektúrája, a árhuzamos programozás alapvető kérdései és az architektúra korlátaiból fakadó megkötések. Bemutatásra kerülnek a grafikus hardver programozására felhasználható környezetek.

 

2. Bevezetés az OpenCL framework használatába.

Az előadás keretében bemutatásra kerül a grafikus hardver általános célú programozására alkalmas OpenCL környezet. Áttekintjük az OpenCL virtuális gép platform, memória és program modelljét, illetve az OpenCL C nyelvet és a hozzá kapcsolódó CPU oldali API-t.

 

3. Nagyméretű adathalmazokon végzett műveletek GPGPU támogatása.

Az előadás keretében bemutatásra kerülnek a nagyméretű adathalmazon végezhető vektorfeldolgozási műveletek. Áttekintjük a szóró és gyűjtő típusú algoritmusok párhuzamosíthatóságát, korlátaikat és a gyakorlati megvalósításukat.

 

4. Alapvető párhuzamos primitívek megvalósításának kérdései OpenCL környezetben.

Az előadás keretében bemutatásra kerülnek az alapvető párhuzamos primitívek, amelyekből hatékonyan skálázódó algoritmusok építhetőek. A bemutatott primitívek a map, reduce, amplify, histogram, scan és compact. 

 

5. Lineáris egyenletrendszerek megoldása. 

Az előadás keretében bemutatjuk a lineáris egyenletrendszerek megoldására alkalmazható párhuzamos algoritmusokat. Áttekintjük a megoldás során alkalmazott mátrix és vektor műveletek implementációs kérdéseit, illetve a nagyméretű ritka mátrixok hatékony tárolását és a rajtuk végezhető műveleteket. 

 

6. Fizikai szimuláció a GPU-n.

Az előadás keretében bemutatjuk a GPU-n hatékonyan számítható fizikai modelleket. Megvizsgáljuk az algoritmusok hatékonyságát és skálázódását.

 

7. Párhuzamos rendező algoritmusok.

Az előadás keretében bemutatjuk a párhuzamos architektúrákon alkalmazható rendező algoritmusokat: brick sort, radix sort, merge sort és speciális quick sort. Az előadás során összehasonlítjuk a párhuzamos rendezéseket a klasszikus rendező algoritmusokkal művelet szám és futási idő szempontjából.

 

8. Gráfok szélességi bejárása és alkalmazásai.

Az előadás során bemutatásra kerülnek a párhuzamos architektúrákon alkalmazható gráfbejáró algoritmusok és azok alkalmazási lehetőségei. A bemutatott algoritmusokat összehasonlítjuk a CPU-n alkalmazható hatékony gráf algoritmusokkal művelet igény és futási idő szempontjából.

 

9. Párhuzamos hash alapú algoritmusok.

Az előadás során bemutatjuk a párhuzamos architektúrákon alkalmazható hash alapú algoritmusokat és azok alkalmazási lehetpségeit. A bemutatott algoritmusokat összehasonlítjuk a CPU-n alkalmazható hatékony hash alapú algoritmusokkal művelet igény és futási idő szempontjából.

 

10. Monte Carlo módszerek a GPU-n.

Az előadás során áttekintjük a Monte Carlo alapú módszerek implementációs kérdéseit és az alkalmazási lehetőségeket. A bemutatásra kerülő algoritmusok kulcskérdése a megfelelő minőségű véletlen számok hatékony generálása, ezért az előadás keretében bemutatjuk a párhuzamos architektúrákon alkalmazható álvéletlen és kvázi véletlen generátorokat.

11. Adjungált Monte Carlo módszerek.

Az előadás keretében bemutatjuk az adjungált Monte Carlo alapú számítások kérdéseit. Áttekintjük az elméleti követelményeket és a gyűjtés típusú algoritmusok implementációs kérdéseit a GPU alapú PET rekonstrukción keresztül. 

 

12. A GPGPU algoritmusok optimalizációs kérdései.

Az előadás keretében áttekintjük a párhuzamos algoritmusok teljesítmény mérésének és optimalizációjának kérdéseit. A rendelkezésre elméleti és gyakorlati metrikák segítségével bemutatjuk az algoritmikus optimalizálás lehetőségeit és áttekintjük a korábban bemutatott főbb algoritmusok korlátait.

 

13. Hatékony együttműködés a grafikus API-val (OpenGL).

Az előadás keretében bemutatjuk az OpenCL környezet összekapcsolásának lehetőségeit az OpenGL grafikus API-val. A bemutatott módszerek segítségével az általános célú számításokhoz hatékony vizualizáció készíthető, amely nagyban segítheti az eredmények értékelését.

 

14. Multi GPU és elosztott rendszerek speciális igényei.

Az előadás keretében bemutatjuk a több GPU-val rendelkező rendszerek programozásának kérdéseit. Áttekintjük az elosztott  működésből fakadó korlátokat és az általánosan alkalmazható technikákat.

 

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) A tantárgy elméleti és gyakorlati órákból áll. A gyakorlati órákon az elméleten elhangzott anyag gyakorlati megvalósítását végezzük el egy példaprogramon keresztül. A gyakorlaton letölthető kiindulási projekteket egészítünk ki. A kiegészítendő kódrészleteket a letölthető fóliasor részletesen tartalmazza. A kódsorok pontos magyarázata a gyakorlatokon történik.
10. Követelmények

A szorgalmi időszakban: A félév végi aláírás feltétele a tárgy anyagához kapcsolódó házi feladat (otthoni feladat) megfelelő színvonalú elkészítése, és az előadások látogatása. A házi feladat a vizsgajegybe beszámít 1/3 súllyal.

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 Órák után, illetve előre megbeszélt időpontokban.
13. Jegyzet, tankönyv, felhasználható irodalom A előadások fóliái és gyakorlatokra a felkészülést segítő írásos anyagok letölthetők a tárgyhonlapról.
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árthelyire0
Házi feladat elkészítése34
Kijelölt írásos tananyag elsajátítása0
Vizsgafelkészülés30
Összesen120

15. A tantárgy tematikáját kidolgozta Dr. Tóth Balázs György, Irányítástechnika és Informatika Tanszék