Tantárgy neve, kódja: Párhuzamos algoritmusok és programozás, MSC_INF_21

Szak neve, képzési szintje: Mérnökinformatikus mesterképzési szak, MSc
Tanterv: 2023
Heti órászám (előadás + gyakorlat + labor): 2+0+2
Kreditérték: 5
Elmélet: 50 %
Gyakorlat: 50 %
A tantárgy tantervi helye: 3. félév
Munkarend: Nappali
Előtanulmányi feltételek:
Értékelés: kollokvium
Tantárgy besorolása: kötelezően választható
Oktatás nyelve: Magyar
Tantárgyfelelős: Dr. Kovács Tamás
Felelős tanszék: Informatika Tanszék
Tantárgy oktatója(i): Dr. Kovács Tamás
Ellenőrzésért felel: Prof. Dr. Johanyák Zsolt Csaba
Tárgy oktatásának célja:
A tárgy célja, hogy a hallgatók megismerjék a párhuzamos processzor-architektúrák által kínált algoritmus-gyorsítási lehetőségeket és az ezzel kapcsolatos elméleti és gyakorlati problémák kezelését. További cél, hogy egy GPU alapú és egy multi-CPU alapú fejlesztési környezetben ismerjék meg a párhuzamosított algoritmusok implementációs lehetőségeit.
Elsajátítandó ismeretanyag előadás:

A párhuzamos algoritmus hatékonysági mértékei. A párhuzamos gép memória kezelése. Brent tétele és a maximális gyorsítás tételei. Heterogén program architektúra (CPU és GPU). A CUDA/C++ fejlesztőeszköz felépítése és használata. A CUDA memória-kezelése. Programszálak és blokkok. Stream-ek és szinkronizálásuk, pipeline-ok alkalmazása. Párhuzamosított számítási eljárások a mátrix-algebra köréből: mátrix-szorzás, konvolúció kétdimenziós rácson, LU dekompozíció, mátrix invertálás, kumulatív összegzés. Párhuzamosított rendezési algoritmusok. Az N-test probléma párhuzamosítása. Párhuzamosított deep-learning algoritmusok. Skálázható CPU klaszterek: Multi-Process kiszolgálás és Message Passing Interface (MPI). Az OpenMP rendszer használata.


Elsajátítandó ismeretanyag laboratórium:

A párhuzamos algoritmus hatékonysági mértékeivel kapcsolatos számítási feladatok. Alapvető algoritmusok a párhuzamos gépen (párhuzamos írás-olvasás és logikai műveletek). A CUDA/C++ fejlesztőeszköz felépítése és használata: hoszt és device kód példa. Vektor-összeadás CUDA-val. Példa programszálak és blokkok használatára. Példa Stream-ek és pipeline-ok használatára. Mátrix-szorzás, konvolúció kétdimenziós rácson, LU dekompozíció, mátrix invertálás és kumulatív összegzés implementálása CUDA-val. Egy rendezési algoritmus implementációja. Egy párhuzamosított lineáris-algebrai feladat megoldása MPI és OpenMP alapokon.

Elsajátítandó szakmai kompetenciák (tudás, képesség, attitűd, autonómia és felelősség, további szakmai kompetenciák):
Tudása:

- Érti az informatikai alkalmazások fejlesztéshez szükséges természettudományos és mérnöki módszerek elvét. - Az informatikai szakmán belül, a specializációtól függően mélyebb elméleti és gyakorlati ismeretekkel rendelkezik az alábbiak közül egy vagy néhány területen: szoftvertervezés, rendszerszimuláció és -modellezés, kommunikációs hálózatok, mobil- és erőforrás-korlátos alkalmazások, számítógépes grafika és képfeldolgozás, kritikus és beágyazott rendszerek, médiainformatika, IT-biztonság, párhuzamos rendszerek, intelligens rendszerek, számításelmélet, adatbázisok.

Képességei:

- A megszerzett tudást képes alkalmazni és a gyakorlatban hasznosítani. - Képes problémamegoldó technikákat használni a szoftver- és alkalmazásfejlesztés során. - A specializációjának megfelelő területen elemzési, tervezési és megvalósítási készséggel rendelkezik. - Képes informatikai rendszerek teljesítményelemzésére, analitikus, szimulációs és mérési módszerek használatára. - Megérti az alkalmazás követelményeit.

Attitűdje:

- Nyitott és elkötelezett az önművelésre, önfejlesztésre, az egyéni tudás, ismeret elmélyítésére, bővítésére a természettudományok, a mérnöki és informatikai tudományok területén. - Munkája során vizsgálja a kutatási, fejlesztési és innovációs célok kitűzésének lehetőségét és törekszik azok megvalósítására.

Autonómia és felelősség:

- Önállóan tölt be informatikai munkakört, amelyben a teljes folyamatot kezében tartva, szakmailag felelős módon dolgozik.

További szakmai kompetenciák:


A számonkérés és értékelés rendszere:
Félévközi tanulmányi követelmények:
Pontszerző zárthelyi dolgozatokkal a szükséges pontszám megszerzése.
Vizsgakövetelmények:

Tanulmányi segédanyagok, laborháttér:

NVidia GPU-val felszerelt számítógépes labor. Elektronikusan kiadott segédanyagok.

Kötelező irodalom:

Fehér Krisztián: CUDA programozási alapismeretek, 2021, ISBN: 9786150076270 Han, Jaegeun, and Bharatkumar Sharma: Learn CUDA Programming: A beginner's guide to GPU programming and parallel computing with CUDA 10. x and C/C++. Packt Publishing Ltd, 2019, ISBN-13: 978-1788996242 Iványi Antal: Párhuzamos algoritmusok, ELTE Informatikai Kar, Budapest 2010

Ajánlott irodalom:

Fehér Krisztián: CUDA programozási alapismeretek, 2021, ISBN: 9786150076270 Han, Jaegeun, and Bharatkumar Sharma: Learn CUDA Programming: A beginner's guide to GPU programming and parallel computing with CUDA 10. x and C/C++. Packt Publishing Ltd, 2019, ISBN-13: 978-1788996242 Iványi Antal: Párhuzamos algoritmusok, ELTE Informatikai Kar, Budapest 2010