Detail předmětu

Aplikace paralelních počítačů

FIT-PDDAk. rok: 2017/2018

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.

Jazyk výuky

čeština

Výsledky učení 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.

Prerekvizity

Typy paralelních počítačů, programování v C/C++, základní numerické metody

Způsob a kritéria hodnocení

Hodnocení studia je založeno na bodovacím systému. Pro úspěšné absolvování předmětu je nutno dosáhnout 50 bodů.

Osnovy výuky

    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í 

     

Učební cíle

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.

Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky

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.

Prerekvizity a korekvizity

Základní literatura

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

Zařazení předmětu ve studijních plánech

  • Program VTI-DR-4 doktorský

    obor DVI4 , 0 ročník, zimní semestr, volitelný

Typ (způsob) výuky

 

Přednáška

39 hod., nepovinná

Vyučující / Lektor

Osnova

  • 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í