Tantárgy neve: Párhuzamos algoritmusok |
Tantárgy Neptun kódja: Nappali: GEMAK243-B Tárgyfelelős intézet: MAT - Matematikai Intézet |
Tantárgyelem: A | |
Tárgyfelelős: - | |
Közreműködő oktató(k): | |
Javasolt félév: 4 | Előfeltétel:GEIAL313-B |
Óraszám/hét: Előadás (nappali): 2 Gyakorlat (nappali): 2 | Számonkérés módja: kollokvium |
Kreditpont: 5 | Munkarend: Nappali |
Tantárgy feladata és célja: A programozási alapok elméleti kiterjesztése a párhuzamosság bevezetésével. Olyan párhuzamos algoritmusok fejlesztése, használata, melyek valóban jobb lépésszámot és hatékonyságot hozhatnak a programozás során. Soros programok párhuzamosítási lehetőségei. 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: Párhuzamos architektúrák, párhuzamos programnyelvek. Adatpárhuzamosítás. Mátrixalgoritmusok, rendezések. Processz kommunikáció. Pipeline párhuzamosítás, lineáris egyenletrendszerek megoldási módszerei. Adatmegosztás. Szinkronizált párhuzamosság. Relaxációs módszerek, multifelbontás algoritmusok. Multicomputer architekturák, üzenet-átadó programok. Párhuzamos numerikus algoritmusok. PVM és MPI típusú programok. Java alapú cluszter. | |
Félévközi számonkérés módja és az aláírás megszerzésének feltétele (Nappali): 2db zárthelyi. 6-6 pontos zárthelyik. Aláírás megszerzése: mindkét zárthelyi legalább 3 pontos megírása (minden feladat tökéletes megoldása 1 pontot ér). | |
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): A vizsga írásbeli. A vizsga 90 perces és 8 pontot lehet maximálisan megszerezni (azaz összesen 8 feladat beugró nélkül és minden feladat tökéletes megoldása 1 pontot ér). A vizsga során számonkérésre kerülnek pl. az alapalgoritmusok, melyek beugrónak számítanak a vizsgán, azaz ezek teljesítése kötelező a legalább elégséges jegy megszerzéséhez. A jegyek kiosztása a következő: 0-3p elégtelen(1); 4p elégséges(2); 5p (közepes); 6p (jó); 7-8p jeles(5) az eredmény. | |
Gyakorlati jegy / kollokvium teljesítésének módja, értékelése (Levelező): | |
Kötelező irodalom: 1. Kacsuk P., Ferenczi Sz.: Párhuzamos és konkurrens programozás soktranszputeres rendszeren, BME Mérnöktovábbképző Intézet, 1993. 2. Dr. Olajos Péter: Párhuzamos algoritmusok, Tankönyvtár, 2011. 3. B. P. Lester: The Art of Parallel Programming, 1st World Publishing, 2013. 4. Iványi Antal: Párhuzamos algoritmusok, ELTE Informatikai Kar, Budapest, 2010. 5. Kovács György: Párhuzamos programozási eszközök és összetett alkalmazásaik, Typotex, Budapest, 2014. | |
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. |