Detail předmětu
Aplikace paralelních počítačů
PDD Ak. rok 2017/2018 zimní semestr
Předmět podává přehled existujících použitelných paralelních platforem a modelů programování, zejména programování se sdílenou pamětí (OpenMP), zasíláním zpráv (MPI) a datově-paralelní programování (CUDA, OpenCL). Metodika paralelizace programů je doplněna studiem výkonnosti a aplikována na určitý konkrétní problém. Důraz je na praktických aspektech a implementaci.
Garant předmětu
Jazyk výuky
Zakončení
Rozsah
- 39 hod. přednášky
Bodové hodnocení
- 100 bodů závěrečná zkouška (písemná část)
Zajišťuje ústav
Získané dovednosti, znalosti a kompetence z předmětu
Naučit se paralelizovat různé třídy úloh a predikovat jejich výkonnost. Umět využívat paralelismu a komunikace na úrovni vláken a procesů. Seznámit se s moderními standardními rozhraními, rozšířením jazyků a dalšími nástroji pro paralelní programování. Napsat a odladit paralelní program pro vybranou úlohu.
Paralelní architektury s distribuovanou a sdílenou pamětí, programování v C/C++ s MPI a OpenMP, GPGPU, paralelizace základních numerických metod.
Cíle předmětu
Vysvětlit možnosti paralelního programování na vícejádrových procesorech, na svazcích počítačů a na GPGPU. Získat přehled o technikách synchronizace a komunikace. Seznámit se s metodikou paralelizace a predikcí výkonnosti vybraných reálných aplikací, tvorbě správných programů a užití paralelních výpočtů v praxi.
Okruhy otázek k SDZ:
- Ukazatele a zákony paralelního zpracování. Funkce konst. účinnosti a škálovatelnost.
- Paralelní zpracování v OpenMP, SPMD, smyčky,sekce a tasky. Synchronizační prostředky.
- Architektury se sdílenou pamětí, UMA i NUMA, zajištění koherence pamětí cache.
- Blokující a neblokující párové (point-to-point) komunikace v MPI.
- Kolektivní komunikace v MPI, paralellní vstup a výstup.
- Architektura superskalárních procesorů a algoritmy OOO zpracování instrukcí.
- Datový paralelismus SIMD a SIMT, HW implementace a SW podpora.
- Architektura grafických procesorů, odlišnosti od superskalárních procesorů.
- Programovací jazyk CUDA, model vláken a paměťový model.
Požadované prerekvizitní znalosti a dovednosti
Typy paralelních počítačů, programování v C/C++, základní numerické metody
Literatura studijní
Literatura referenční
- Pacecho, P.: Introduction to Parallel Programming. Morgan Kaufman Publishers, 2011, 392 s., ISBN: 9780123742605
- Kirk, D., and Hwu, W.: Programming Massively Parallel Processors: A Hands-on Approach, Elsevier, 2010, s. 256, ISBN: 978-0-12-381472-2
Osnova přednášek
- Architektury paralelních počítačů, ukazatele výkonnosti a predikce výkonnosti.
- Vzory paralelního programování
- Techniky synchronizace a komunikace.
- Programování se sdílenými proměnnými v OpenMP
- Programování zasíláním zpráv v MPI
- Datově paralelní programování v CUDA/OpenCL
- Příklady paralelizace úloh a paralelních aplikací
Průběžná kontrola studia
Hodnocení studia je založeno na bodovacím systému. Pro úspěšné absolvování předmětu je nutno dosáhnout 50 bodů.
Kontrolovaná výuka
Obhajoba projektu, programového díla využívajícího některou variantu paralelního programování.
Zkouška probíhá jako obhajoba malého projektu, nejlépe z oblasti, na kterou se doktorand chce zaměřit v disertační práci. Projekt by měl demonstrovat potřebné zvýšení výkonnosti při řešení konkrétního problému použitím clusteru, vícejádrového procesoru nebo GPU. Podle toho je třeba zvolit programování v OpenMPI, OpenMP nebo CUDA/OpenCL, popřípadě v nějakém dalším specializovaném jazyce.
Zařazení předmětu ve studijních plánech