Detail předmětu
Paralelní a distribuované programování
PDD Ak. rok 2004/2005 zimní semestr
Předmět podává celkový přehled paralelního programování se sdílenou i distribuovanou pamětí s orientací na vysokou výkonnost vědeckých výpočtů. Na začátku je uveden přehled paralelních architektur, a to jak abstraktní modely, tak reálné systémy. Než se přejde na všeobecně uznávanou obecnou metodiku návrhu paralelních algoritmů podle Fostera (rozčlenění-komunikace-aglomerace-mapování), je provedena analýza výkonnosti paralelního zpracování, která možní získat názor na hranice možností paralelních výpočtů a paralelizace samotné. Další praktičtější část představuje úvod do OpenMP, aplikačního rozhraní pro programy se sdílenými proměnnými. Je pojednáno o vyjádření paralelizmu (paralelní oblast, paralelní sekce, sdílení práce a příslušné direktivy) s důrazem na paralelizaci smyček. Dále je pojednáno o synchronizaci v OpenMP (vzájemném vyloučení, synchronizaci událostmi a synchronizaci programované uživatelem). Je analyzována výkonnost paralelních aplikací, tj. konečný cíl, včetně některých úskalí, která se mohou vyskytnout (falešné sdílení, synchronizační režie, špatná lokalita a granularita apod.). Další probírané rozhraní (MPI) se týká programů se zasíláním zpráv. Zde je důraz na variantách komunikačních příkazů a jejich správném použití. Podrobně jsou též vyloženy kolektivní komunikace, které se vyskytují ve všech vědecko-technických programech. Je uvedena i možnost smíšeného programování v OpenMP+MPI na svazcích SMP. V poslední části předmětu jsou probírány možnosti paralelizace často se vyskytujících úloh: paralelní lineární algebra, metoda konečných diferencí, dále paralelní řazení, paralelní řešení diskrétních optimalizačních úloh a konečně paralelní zpracování signálů a obrazů. Důraz je na praktických aspektech a implementaci, výklad je doplněn četnými příklady. Celkově jsou vysvětleny základní kameny paralelních aplikací, techniky interakce procesů a vláken, možnosti jejich zápisu jazykovými prostředky v OpenMP a MPI s ohledem na výkonnost a nejčastější se vyskytující paralelní výpočty.
Garant předmětu
Jazyk výuky
Zakončení
Rozsah
- 39 hod. přednášky
Zajišťuje ústav
Získané dovednosti, znalosti a kompetence z předmětu
Naučit se psát paralelní programy pro řešení reálných problémů. 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 uvedené typy paralelního programování.
Cíle předmětu
Vysvětlit klíčové pojmy a techniky paralelního programování. Naučit paralelnímu řešení problémů, tvorbě správných programů a seznámit s vybranými reálnými paralelními aplikacemi.
Doporučené prerekvizity
Požadované prerekvizitní znalosti a dovednosti
Nejsou žádné prerekvizity.
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
- Paralelní architektury.
- Analýza výkonnosti
- Návrh paralelních algoritmů.
- Programování se zasíláním zpráv, MPI
- Kolektivní komunikace
- Programování se sdílenou pamětí, OpenMP
- Synchronizace vláken
- Kombinace MPI a OpenMP
- Paralelní lineární algebra
- Metody konečných diferencí
- Paralelní řazení
- Paralelní řešení diskrétních optimalizačních úloh
- Paralelní zpracování signálů a obrazů
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í.