Předmět: Úvod do paralelního programování

« Zpět
Název předmětu Úvod do paralelního programování
Kód předmětu KIV/UPP
Organizační forma výuky Přednáška + Cvičení
Úroveň předmětu Bakalářský
Rok studia 3
Semestr Letní
Počet ECTS kreditů 4
Vyučovací jazyk Čeština
Statut předmětu Povinný
Způsob výuky Kontaktní
Studijní praxe Nejedná se o pracovní stáž
Doporučené volitelné součásti programu Není
Vyučující
  • JIRÁSEK Michal, Ing. Ph.D.
Obsah předmětu
1. Úvod do předmětu, terminologie; proces, vlákno, task; přehled základních typů úloh; Flynnova taxonometrie; urychlení 2. Analýza úlohy za účelem následné paralelizace; typy proměnných, problém paralelního přístupu do sdílené paměti 3. Kritická sekce, základní synchronizační primitiva (lock, mutex, podmínková proměnná, spurious wakeup) 4. Složená synchronizační primitiva (bariéra, monitor, aj.), atomická proměnná 5. Úloha typu "parallel for" a její paralelizace - dělení práce, farmer-worker, statické a dynamické plánování; příklady problémů 6. Úloha typu "parallel reduce" a její paralelizace; příklady problémů 7. Rozhraní POSIX pro paralelizaci a synchronizaci 8. Technologie OpenMP 9. Paralelizace v distribuovaných výpočetních systémech; technologie MPI 10. Další knihovny pro paralelizaci (parallel STL, Boost) 11. Case study (vybrané paralelizační problémy z reálného SW) 12. Úvod do kvantových výpočtů

Studijní aktivity a metody výuky
  • Kontaktní výuka - 39 hodin za semestr
  • Projekt individuální [40] - 38 hodin za semestr
  • Příprava na zkoušku [10-60] - 30 hodin za semestr
Předpoklady
Odborné znalosti
Znát a umět používat programovací jazyk C, Java, C#, Python nebo jiný jazyk.
Rozumět základním abstraktním datovým strukturám a umět je správně aplikovat.
Znát alespoň základní principy fungování počítače - CPU a periferií.
Odborné dovednosti
Být schopen analyzovat a dekomponovat problém, navrhnout algoritmické řešení a implementovat jej.
Obecné způsobilosti
bc. studium: své učení a pracovní činnost si sám plánuje a organizuje,
Výsledky učení
Odborné znalosti
Znát základní principy a modely paralelního programování.
Mít přehled o technikách paralelizace a technologiích ke korektní implementaci.
Znát základní a vybraná pokročilá synchronizační primitiva a principy jejich použití.
Odborné dovednosti
Umět analyzovat problém za účelem paralelizace a vybrat vhodné postupy.
Umět paralelizovat zpracování dat za pomocí zvolené technologie.
Umět vyhodnotit správnost a úspěšnost paralelizace.
Obecné způsobilosti
bc. studium: samostatně a odpovědně se na základě rámcového zadání rozhodují v souvislostech jen částečně známých,
Vyučovací metody
Odborné znalosti
Přednáška založená na výkladu,
Přednáška s demonstrací,
Odborné dovednosti
Samostatná práce studentů,
Obecné způsobilosti
Přednáška s diskusí,
Hodnotící metody
Odborné znalosti
Písemná zkouška,
Ústní zkouška,
Odborné dovednosti
Ústní zkouška,
Obecné způsobilosti
Ústní zkouška,
Doporučená literatura
  • Balaji Pavan. Programming Models for Parallel Computing. MIT Press Ltd., 2015. ISBN 978-0262528818.
  • Gebali Fayez. Gebali Fayez. Algorithms and Parallel Computing. Wiley, 2011. ISBN 978-0470902103.
  • Roman Trobec, Boštjan Slivnik, Patricio Bulić, Borut Robič. Introduction to Parallel Computing. Springer Nature Switzerland, 2018. ISBN 978-3-319-98832-0.
  • Williams Anthony. C++ Concurrency in Action: Practical Multithreading.. Manning Publishing, 2012. ISBN 978-1933988771.


Studijní plány, ve kterých se předmět nachází
Fakulta Studijní plán (Verze) Kategorie studijního oboru/specializace Doporučený ročník Doporučený semestr