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