Paralelní programování
Kurz uvádí posluchače do problémů paralelního programování a technik
jejich řešení.
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ů.
Předpokládá se dovednost programování v jazycích C/C# a Common Lisp.
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í.
Studijní materiály
Literatura
Základy paralelního (konkurentního) programování a rozborem klasických synchronizačních problémů se zabývají např. následující knihy:
-
Ben-Ari M.: Principles of Concurrent and Distributed Programming (2nd Edition)
Addison Wesley, 2006. ISBN 032131283X
-
Andrews G. R.: Foundations of Multithreaded, Parallel, and Distributed
Programming.
Addison-Wesley, 2000. ISBN 0201357526
-
Andrews G. R: Concurrent programming. Principles and practise.
Addison Wesley,
1991. ISBN 0-8053-0086-4
-
Magee J., Kramer J.: Concurrency, State Models and Java Programs.
John Wiley and Sons Ltd, 1999.
-
Schneider F. B.: On Concurrent Programming (Texts in Computer Science)
Springer,
1997. ISBN 0387949429
Další zdroje
Kniha s mnoha synchronizačními problémy a jejich řešeními:
Mnoho synchronizačním problémů včetně jejich řešení lze samozřejmě najít i
na internetu, např.
-
Wikipedia - otevřená internetová encyklopedie