Náväznosti a ciele predmetu
Cieľom predmetu je poskytnúť študentom znalosti o metódach a prostriedkoch paralelného spracovania s dôrazom na ich využitie pri tvorbe aplikácií. Predmet umožní študentom získať praktické skúsenosti s návrhom efektívnych paralelných algoritmov pomocou programovacích modelov pre symetrické multiprocesory a počítačové klastre, osobitná pozornosť bude venovaná programovacím modelom pre mnohojarové grafické procesory.
Znalosti súvisiace s návrhom a realizáciou sekvenčných algoritmov v programovacom jazyku C/C++ v rozsahu bakalárskeho štúdia.
Stručná osnova
- Flynnova taxonómia, Amhdalov zákon, Gustafsonov zákon
- Systémy so zdieľanou a distribuovanov pamäťou, multiprocesory a multipočítače
- Podmienky paralelizmu, dátová a zdrojová nezávislosť
- Zdroje paralelizmu, paralelizmus na úrovni inštrukcí, dátový paralelizmus, paralelizmus úloh
- Návrh paralelných programov, komunikácia, synchronizácia (atomické operácie, bariery, semafóry, mutexy), závislosť medzi dátami, dekompozícia, granularita, rozkladanie záťaže
- Paralelné programovacie modely, model vlákien, model zasielania správ
- Explicité použitie vláken – Pthreads (resp. Java threads, Win32 threads, ...)
- Implicitné použitie vlákien – OpenMP
- Programovanie systémov s distribuovanou pamäťou – MPI
- Programovanie mnohojadrových grafických procesorov – CUDA, OpenCL
- Analytické modelovanie paralelných programov, analýza výkonnosti, ladenie
- Vzory pre paralelné programovanie
- Iné paralelné programovacie modely (napr. Cilk++, Map-reduce, Unified Parallel C, Thread Building Blocks, High Performance Fortran, Erlang, BOINC, CellBE, ...)
Materiály k prednáškam
Hodnotenie predmetu
Získanie zápočtu = odovzdanie a odprezentovanie všetkých zadaní a projektu
Spolu 50 bodov (+ získané a - stratené body)
Vykonanie záverečnej skúšky. Účasť na skúške je nevyhnutná pre absolvovanie predmetu !!! Za skúšku je možné získať 50 bodov
Výsledné hodnotenie:
- výborne A
- 94 až 100
- veľmi dobre B
- 86 až 94
- dobre C
- 74 až 86
- uspokojivo D
- 62 až 74
- dostatočne E
- 56 až 62
- nedostatočne FX
- 0 až 56
Podmienky absolvovania predmetu
- Vypracovanie, odprezentovanie a odovzdanie všetkých úloh a projektu
- Tému projektu dohodnúť s cvičiacim a v stanovenom čase odovzdať zadanie projektu
- Úlohy aj projekt musia byť funkčné, v zhode so zadaním - posúdi cvičiaci
- Pri prezentácií je potrebné preukázať patričné vedomosti - posúdi cvičiaci
- Najneskoršie odovzdanie na cvičeniach do konca výučby počas semestra (- body)
- Vykonanie záverečnej skúšky.
- Získanie aspoň 20 bodov za prácu počas semestra
- Získanie aspoň 4 bodov za každú úlohu
- Získanie aspoň 8 bodov za projekt
- Získanie aspoň 56 bodov z celkového hodnotenia
Literatúra
- A. Grama, G.Karypis, V.Kumar, A.Gupta. Introduction to Parallel Computing, Addison-Wesley, 2003
- T. G. Mattson, B.A.Sanders, B.L. Massingill.Patterns for Parallel Programming, Addison-Wesley, 2004
- Maurice Herlihy, Nir Shavit. The art of multiprocessor programming. Morgan Kaufmann, 2008.