Předmět: Paradigmata programování 3

« Zpět
Název předmětu Paradigmata programování 3
Kód předmětu KMI/YPP3
Organizační forma výuky Přednáška
Úroveň předmětu Bakalářský
Rok studia nespecifikován
Semestr Letní
Počet ECTS kreditů 6
Vyučovací jazyk Čeština
Statut předmětu nespecifikováno
Způsob výuky Kontaktní
Studijní praxe Nejedná se o pracovní stáž
Doporučené volitelné součásti programu Není
Vyučující
  • Osička Petr, Mgr. Ph.D.
Obsah předmětu
Znalosti nástrojů a technik paralelního programování patří v současné době, vzhledem k vývoji hardware (vícejádrové procesory, stovky procesorů na grafických kartách použitelných pro výpočty), k základním požadavkům kladeným na kvalitního programátora. V kurzu studenti poznají jak výhody tak i problémy vznikající u paralelních programů se sdílenou pamětí, na klasických synchronizačních problémech i na úlohách z praxe, a naučí se je řešit pomocí metod synchronizace. Programuje se v jazycích C/C# pomocí rozhraní poskytovaných operačními systémy a také v jazyce Common Lisp, ve kterém jsou představena rozšíření pro paralelní programování, která se v poslední době dostávají do moderních programovacích jazyků. Na kurz navazují některé předměty magisterského oboru Informatika, v nichž je podrobněji probírána problematika paralelního programování, a také distribuovaných systémů, které získávají na významu s rozvojem počítačových i jiných (např. mobilních) sítí. 1. Paralelní program: vlastnosti, výhody, problémy. Atomické akce a jejich podpora HW. 2. Synchronizace, reentrantnost, aktivní a pasivní čekání. 3. Demonstrace základních problémů, problém producent-konzument. 4. Kritická sekce a její použití. Zámek (mutex), vzájemné vyloučení, podmíněné čekání. 5.,6. Bariéra a její použití v kritické sekci a datově paralelních algoritmech. Problémy řešitelné datově paralelními algoritmy. 7. Semafor a jeho použití pro řešení kritické sekce, bariéry a problému producent-konzument (omezený buffer). 8. Problém čtenářů a písařů a jeho různá řešení. 9. Další typické synchronizační problémy: večeřící mudrci, spící holič, kuřáci dýmky aj. 10. Monitor a podmíněné proměnná. Jejich použití pro řešení synchronizačních problémů. 11. Podpora paralelizace v programovacích jazycích, nové prostředky pro paralelní programování v .NET a MacOS X.

Studijní aktivity a metody výuky
Přednášení, Demonstrace
Výstupy z učení
Studenti se seznámí se základními pojmy z paralelního programování.
3. Aplikace: Rozpoznej a řeš překážky při vývoji paralelních programů.
Předpoklady
nespecifikováno

Hodnoticí metody a kritéria
Ústní zkouška, Písemná zkouška

Aktivní účast v hodině. Plnění zadaných úkolů. Složení ústní (příp. písemné) zkoušky.
Doporučená literatura
  • ANDREWS G. R. (2000). Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley.
  • Ben-Ari M. (2006). Principles of concurrent and distributed programming. Addison-Wesley.
  • McCool M., Reinders J., Robinson A. (2012). Structured parallel programming: patterns for efficient computation. Morgan Kaufman.
  • Roosta, Seyed H. (2000). Parallel processing and parallel algorithms. Springer.
  • Schmidt Ph.D., Gonzales-Domingues, J., Hundt, Cc., Schlarb, M. (2017). Parallel Programming: Concepts and Practice. Morgan Kaufman.
  • Schneider F. B. (1997). On concurrent programming. Springer.


Studijní plány, ve kterých se předmět nachází
Fakulta Studijní plán (Verze) Kategorie studijního oboru/specializace Doporučený ročník Doporučený semestr