Detail předmětu

Aplikace paralelních počítačů

PDD Ak. rok 2017/2018 zimní semestr

Aktuální akademický rok

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

česky, anglicky

Zakončení

zkouška (kombinovaná)

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:

  1. Ukazatele a zákony paralelního zpracování. Funkce konst. účinnosti a škálovatelnost.
  2. Paralelní zpracování v OpenMP, SPMD, smyčky,sekce a tasky. Synchronizační prostředky.
  3. Architektury se sdílenou pamětí, UMA i NUMA, zajištění koherence pamětí cache.
  4. Blokující a neblokující párové (point-to-point) komunikace v MPI.
  5. Kolektivní komunikace v MPI, paralellní vstup a výstup.
  6. Architektura superskalárních procesorů a algoritmy OOO zpracování instrukcí.
  7. Datový paralelismus SIMD a SIMT, HW implementace a SW podpora.
  8. Architektura grafických procesorů, odlišnosti od superskalárních procesorů.
  9. 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

  • Program VTI-DR-4, obor DVI4, libovolný ročník, volitelný
Nahoru