Paralelní programování - Seznam přednášek a cvičení (sylabus)
Přednášky
- 
Úvod
 Paralelní a distribuované programování, konkurence, synchronizace, abstrakce konkurentního
programu, stav, scénář.
- 
Úvod
 Atomické akce, architektury HW, korektnost, férovost,
podmíněná synchronizace, aktivní čekání.
- 
Problém producent-konzument
- 
Kritická sekce a vzájemné vyloučení
 Dokazování korektnosti pomocí stavových diagramů, Dekkerův,
Petersonův, pekařský a „rychlý“ algoritmus,
složené atomické akce, zámek (mutex).
- 
Bariéra
 Flynnova taxonomie, implementace.
- 
Datově paralelní algoritmy
- 
Semafor
 Implementace a jeho použití pro řešení kritické sekce, problému
producent-konzument a bariéry, simulace obecného semaforu.
- 
Problém čtenářů a písařů
- 
Další synchronizační problémy
 Večeřící mudrci, spící
holič, kuřáci dýmky aj.
- 
Monitor, podmíněné proměnná a chráněný objekt
 Jejich použití pro řešení
synchronizačních problémů.
- 
API pro paralelní programování, heterogenní výpočetní platformy
 Simulátor konkurence, model checker, API pro paralelní
programování (POSIX Threads, Windows Threads, OpenMP, .NET
Parallel Extensions, GCD), výpočty na grafických kartách.
 
Cvičení
- 
API pro paralelní programování
 Vytvoření vícevláknového programu, POSIX Threads, Windows
Threads, .NET System.Threading, Common Lisp.
- 
Scénář paralelního programu
 Sestavení a demonstrace scénáře, procedura/metoda/makro
concurrent.
- 
Problém producent-konzument
 Implementace, modifikace, ověření korektnosti.
- 
Kritická sekce a složené atomické akce
 Řešení, implementace a ověření korektnosti řešení kritické
sekce s využitím složené atom. akce.
- 
Podmíněná synchronizace, bariéra
 Implementace bankovního systému a řešení bariér.
- 
Datově paralelní algoritmy
 Implementace různých algoritmů.
- 
Semafor a mutex
 Implementace a ověření řešení problémů.
- 
Simulace obecného semaforu, problém stabilních manželství
 Ověření korektnosti, řešení a implementace.
- 
Problém čtenářů a písařů
 Implementace.
- 
Další synchronizační problémy
 Implementace: večeřící
mudrci, spící holič, kuřáci dýmky aj.
- 
Monitor, podmíněné proměnná a chráněný objekt
 Implementace některého problému, tvorba simulací.
- 
API pro paralelní programování, výpočty na grafických
kartách
 OpenMP, .NET Parallel Extensions, OpenCL.