Paralelné programovanie
- Kredity: 4
- Ukončenie: Skúška
- Rozsah: 0P + 4C
- Semester: letný
- Fakulta hospodárskej informatiky
Vyučujúci
Zaradený v študijných programoch
informačný manažmentVýsledky vzdelávania
Výstupy vzdelávania po absolvovaní predmetu
Znalosti (vedomosti)
A. Rozumieť pokročilejším princípom objektovo orientovaného programovania v programovacom jazyku Python.
B. Rozumieť paradigme sekvenčného, súbežného (konkurentného) a paralelného programovania.
C. Poznať varianty paralelizmu a súbežného výpočtu vrátane ich teoretických východísk.
G. Rozumieť výhodám, limitom a vlastnostiam paralelných a konkurentných programov.
C (2). Poznať základné pojmy súvisiace s vláknami, procesmi, zámkami, synchronizáciou, komunikáciou a deadlockom (uviaznutím).
Zručnosti
D. Implementovať konkurentné verzie pôvodne sekvenčných algoritmov vyvinutých v jazyku Python.
E. Aplikovať výkonnostné metriky na hodnotenie paralelného a konkurentného kódu.
F. Implementovať nástroje jazyka Python pre konkurentné a paralelné programovanie, ako sú vlákna, procesy a synchronizačné mechanizmy.
H. Navrhovať a vytvárať responzívne a vysoko výkonné programy využívajúce paralelizmus.
I. Implementovať paralelné algoritmy na grafických procesoroch s využitím modulu PyCUDA.
B (2). Vytvárať konkurentné a paralelné algoritmy schopné efektívne využívať výpočtové zdroje rôzne výkonných počítačových systémov.
Kompetentnosti
A (2). Samostatne a zodpovedne aplikovať paradigmu konkurentného a paralelného programovania v objektovo orientovanom prostredí.
D (2). Kriticky posudzovať vhodnosť paralelizácie algoritmov s ohľadom na výkonnosť, zložitosť a dostupné výpočtové zdroje.
F (2). Zvyšovať kvalitu a efektívnosť vlastných softvérových riešení prostredníctvom pokročilých viacvláknových a viacprocesových programátorských techník v jazyku Python
Stručná osnova predmetu
1. algoritmus a programovacie jazyky,
2. programovanie v Pythone, dátové typy,
3. programovanie v Pythone, princípy objektovo orientovaného programovania,
4· paradigma konkurentného a paralelného programovania z pohľadu teoretickej a aplikovanej informatiky,
5. prínosy a riziká konkurentných a paralelných algoritmov,
6. manažment pamäte paralelných a konkurentných algoritmov,
7. vlákna, procesy, synchronizácia, zámky,
8. využitie Python knižníc pre konkurentné a paralelné algoritmy,
9. komunikácia medzi procesmi a vláknami,
10. deadlock a návrhy riešení,
11. paralelné programovanie využitím grafických procesorov,
12. paralelné architektúry,
13. implementácia paralelizmu v programovacom jazyku Python
Odporúčaná literatúra
1. Zaccone, G.: Python Parallel Programming Cookbook. Packt Publishing, 2015. ISBN: 978-1-78528-958-3.
2. Nelli, F.: Parallel and High Performance Programming with Python. Orange Education Pvt Ltd, 2023. ISBNs: 9789388590747.
3. Quan Nguyen: Mastering Concurrency in Python. Packt, 2018. ISBN: 9781789341362.
4. Jones, L.: Mastering Python Concurrency and Parallelism: Unlock the Secrets of Expert-Level Skills. Independently published, 2025. ISBN-13: 979-8313153988.
Sylabus predmetu
1. Úvodná časť sa venuje pojmu algoritmu a programovacím jazykom ako základným nástrojom riešenia problémov v informatike. Zdôrazňuje sa vzťah medzi algoritmom, programom a výpočtovým procesom. 2. Predmet uvádza programovanie v jazyku Python so zameraním na základné dátové typy. Rozoberajú sa premenné, vstavané dátové štruktúry a ich praktické využitie pri tvorbe programov. 3. Pozornosť sa venuje objektovo orientovanému programovaniu v jazyku Python. Vysvetľujú sa pojmy trieda, objekt, zapúzdrenie, dedičnosť a polymorfizmus v kontexte návrhu softvéru. 4. Rozoberá sa paradigma konkurentného a paralelného programovania z pohľadu teoretickej a aplikovanej informatiky. Zdôrazňuje sa rozdiel medzi konkurenciou a paralelizmom. 5. Obsahom sú prínosy a riziká konkurentných a paralelných algoritmov. Pozornosť sa venuje výkonnostným aspektom, zložitosti riešení a možným chybám pri návrhu algoritmov. 6. Predmet sa zaoberá manažmentom pamäte v paralelných a konkurentných algoritmoch. Rozoberajú sa problémy zdieľanej pamäte, konzistencie dát a riadenia prístupu. 7. Pozornosť sa venuje vláknam, procesom a mechanizmom synchronizácie. Vysvetľuje sa použitie zámkov a ich význam pri koordinácii súbežného vykonávania. 8. Rozoberá sa využitie knižníc jazyka Python pre konkurentné a paralelné algoritmy. Zdôrazňuje sa ich praktické použitie pri implementácii paralelných riešení. 9. Predmet sa venuje komunikácii medzi procesmi a vláknami. Vysvetľujú sa mechanizmy výmeny dát a synchronizácie v konkurentnom prostredí. 10. Obsahom je problematika deadlocku a jeho dôsledkov. Rozoberajú sa príčiny vzniku deadlocku a návrhy riešení na jeho prevenciu a odstránenie. 11. Pozornosť sa venuje paralelnému programovaniu s využitím grafických procesorov. Vysvetľujú sa základné princípy GPU paralelizmu a oblasti jeho využitia. 12. Predmet sa zaoberá paralelnými architektúrami a ich vlastnosťami. Rozoberajú sa rôzne architektonické prístupy a ich vplyv na návrh algoritmov. 13. Záverečná časť sa zameriava na implementáciu paralelizmu v programovacom jazyku Python. Zdôrazňuje sa praktická aplikácia paralelných techník pri vývoji softvéru.
Podmienky na absolvovanie predmetu
samostatná práca
kombinovaná skúška
1. Aktivita na cvičení (40 %). Overuje sa dosiahnutá úroveň schopností A, - E..
2. Kombinovaná skúška (60 %, z toho písomná časť skúšky 30 % a ústna časť skúšky 30 %). Teoretickou časťou sa overuje dosiahnutá úroveň kompetentností A, - I..
Pracovné zaťaženie študenta
Pracovné zaťaženie študenta (v hodinách): 4 kreditov x 26 h = 104 h
Rozdelenie pracovného zaťaženia študenta
účasť na cvičeniach, seminároch 26 h,
príprava na semináre 26 h,
príprava na samostatnú písomnú prácu 26 h,
príprava na skúšku 26 h.
Jazyk, ktorého znalosť je potrebná na absolvovanie predmetu
slovenský
Dátum schválenia: 04.03.2025
Dátum poslednej zmeny: 04.01.2026
Dátum schválenia: 04.03.2025
Dátum poslednej zmeny: 04.01.2026

