Párhuzamos algoritmusok és programozás (MSC_INF_21)

Alapadatok
Szak és képzési szint
Mérnökinformatikus mesterképzési szak, MSc
Tanterv
2023
Óraszám
2 + 0 + 2 (E+Gy+L)
Kreditérték
5 kredit
Elmélet-Gyakorlat arány
Elmélet: 50%, Gyakorlat: 50%
Tantervi félév
3. félév
Oktatók
Tantárgyfelelős
Dr. Kovács Tamás
Felelős tanszék
Informatika Tanszék
Oktatók
Dr. Kovács Tamás, - nincs
Ellenőrzésért felel
Prof. Dr. Johanyák Zsolt Csaba
Tantárgy 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.

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.

Szakmai kompetenciák
Tudás

- É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ég

- 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űd

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

Számonkérés és értékelés
Félévközi követelmények

Pontszerző zárthelyi dolgozatokkal a szükséges pontszám megszerzése.

Vizsgakövetelmények

Generatív MI használata

Nincs megadva

Irodalom
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