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ó    

    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. Magdics Milán, Irányítástechnika és Informatika Tanszék
    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