Nyomtatás

Miskolci Egyetem - Gépészmérnöki és Informatikai Kar

TANTÁRGYI TEMATIKA

Párhuzamos eszközök programozása; BSc (Nappali)

Tantárgy neve:
Párhuzamos eszközök programozása
Tantárgy Neptun kódja:
Nappali: GEMAK259-B
Tárgyfelelős intézet:
MAT - Matematikai Intézet
Tantárgyelem: A
Tárgyfelelős: Dr. Olajos Péter - egyetemi docens
Közreműködő oktató(k):
Javasolt félév: 6 Előfeltétel:GEMAK243-B
Óraszám/hét:
Előadás (nappali): 2
Gyakorlat (nappali): 2
Számonkérés módja: kollokvium
Kreditpont: 5Munkarend: Nappali
Tantárgy feladata és célja:
A párhuzamos technikák, algoritmusok implementálásának megismerése és alkalmazása. Az autovektorizálás, a Pthreads és az OpenMP lehetőségei. Grafikus kártyákon, C programkörnyezetben való programozás az OpenCl segítségével.
Tudás: Ismeri az informatikai szakterület tudásanyagát megalapozó általános és specifikus matematikai, számítástudományi elveket, tényeket, szabályokat, összefüggéseket, és eljárásokat. Az érintett területek: analízis (kalkulus), numerikus analízis, diszkrét matematika, lineáris algebra, operációkutatás, valószínűségszámítás és statisztika, logikai alapok, számításelmélet, algoritmusok tervezése és elemzése, automaták és formális nyelvek, mesterséges intelligencia alapjai. Ismeri és érti az informatikai szakterület legfontosabb általános elméleteit, összefüggéseit, tényanyagát és az ezekhez szükséges felépítő fogalomrendszert, különösen az alábbi területeken: a programozás módszertani alapjai, programozási nyelvek, fordítóprogramok, alkalmazások fejlesztése, programozási környezet; számítógép architektúrák, operációs rendszerek, számítógépes hálózatok, osztott rendszerek, az adatbázisok elméleti alapjai. Ismeri az informatikai szakterület tervezési, fejlesztési, működtetési és irányítási folyamatainak alapvető feladatmegoldási elveit, módszereit és eljárásait, különösen - választott specializációjának megfelelően - a következő területeken: programozási technológia, adatbázisok felépítése és menedzselése, vállalati információs rendszerek felépítése és menedzselése, internet eszközök és szolgáltatások fejlesztése, térinformatikai rendszerek fejlesztése, osztott rendszerek felépítése, menedzselése, információbiztonság, logika informatikai alkalmazásai. Alapvető ismeretekkel rendelkezik a rendszertervezés alapjai és a projektmenedzsment módszertanok területén.
Képesség: Képes az általános és specifikus matematikai, számítástudományi elveket, tényeket, szabályokat, összefüggéseket alkalmazni informatikai szakterületen. Képes az informatika formális modelljeinek alkalmazására. Képes az informatikai szakterület tudásanyagát alkalmazni algoritmusok tervezésére, elemzésére és implementálására a legfontosabb programozási paradigmák figyelembe vételével. Képes az informatikai szakterület tudásanyagát alkalmazni meglévő rendszertervek értelmezése és szoftverfejlesztési módszertanok és technológiák alkalmazása során, különös tekintettel a projekt munkában történő szoftverfejlesztésre, dokumentálásra, tesztelésre, kódminőség ellenőrzésre, validálásra. Képes az informatikai szakterület tudásanyagát alkalmazni mesterséges intelligencia technikák, eszközök használata során. Képes az informatikai szakterület tudásanyagát alkalmazni osztott rendszerek használata során.
Attitűd: Nyitott a képesítésével, szakterületével kapcsolatos szakmai, technológiai fejlődés és innováció megismerésére és befogadására. Fontosnak tartja az informatikai szakmai eredmények közvetítését szakmai és nem szakmai körök számára. Elfogadja az informatikai szakma munka- és szervezeti kultúra szabályait, etikai elveit. Törekszik más szakterületek szakembereivel való együttműködésre. Munkája során figyelembe veszi az informatikai szakterület jogi előírásait.
Autonomia és felelősség: Felelősséget vállal szakmai tevékenységéért.
Tárgy tematikus leírása:
Autovektorizálás, Pthreads, OpenMP és OpenCl. Ezek története, jelene és jövője. A párhuzamosítási lehetőségek. Programozási környezet, fordítás, linkelés, futtatás. Az OpenCL specifikáció: platform modell,végrehajtási modell, memória modell, programozási modell. Az OpenCL API. Hibakezelés, platformréteg, futtató réteg. Az OpenCL programozási nyelv: típusok, kifejezések, minősítők, vezérlési szerkezetek, könyvtári függvények. Esettanulmányok: lineáris algebra-mátrix szorzás, digitális képfeldolgozás-konvolúció szűrés. Kép és mintavételező objektumok: létrehozás, típusok, minősítők, függvények.
Félévközi számonkérés módja és az aláírás megszerzésének feltétele (Nappali):
1db önállóan elkészített beadandó program/feladat.
Félévközi számonkérés módja és az aláírás megszerzésének feltétele (Levelező):
Gyakorlati jegy / kollokvium teljesítésének módja, értékelése (Nappali):
Gyakorlati jegy / kollokvium teljesítésének módja, értékelése (Levelező):
Kötelező irodalom:
1. Kovács György: OpenCL (magyar és angol), Debreceni Egyetem, www.tankonyvtar.hu.
2. Kovács György: Párhuzamos programozási eszközök és összetett alkalmazásaik, Typotex, Budapest, 2014.
3. Kacsuk P., Ferenczi Sz.: Párhuzamos és konkurrens programozás soktranszputeres rendszeren, BME Mérnöktovábbképző Intézet, 1993.
4. Dr. Olajos Péter: Párhuzamos algoritmusok, Tankönyvtár, 2011.
5. Aaftab Munshi, Benedict Gaster, Timothy G. Mattson: OpenCL Programming Guide, Addison-Wesley Professional, 2011.
Ajánlott irodalom:
1. Giancarlo Zaccone: Python Parallel Programming Cookbook, Packt Publishing - ebooks Account, 2015.
2. Peter Pacheco: Parallel Programming with MPI, Morgan Kaufmann, 1996.
3. Peter Pacheco: An Introduction to Parallel Programming, Morgan Kaufmann, 2011.
4. Michael J. Quinn: Parallel Programming in C with MPI and OpenMP, McGraw-Hill Science/Engineering/Math, 2003.
5. Bertil Schmidt, Jorge Gonzalez-Dominguez, Christian Hundt, Moritz Schlarb: Parallel Programming, Morgan Kaufmann, 2017.