| Název předmětu | Parallel Programming |
|---|---|
| Kód předmětu | KI/KPAR |
| Organizační forma výuky | Přednáška + Cvičení + Exkurze |
| Úroveň předmětu | Magisterský |
| Rok studia | nespecifikován |
| Semestr | Letní |
| Počet ECTS kreditů | 5 |
| Vyučovací jazyk | Angličtina |
| Statut předmětu | Povinný |
| Způsob výuky | Kontaktní |
| Studijní praxe | Nejedná se o pracovní stáž |
| Doporučené volitelné součásti programu | Není |
| Vyučující |
|---|
|
| Obsah předmětu |
|
1. - 2. Paralelní hardware (Flynnova taxonomie, volně a těsně vázané systémy, NUMA, SIMD podpora na plaformě AMD/Intel x86_64, AMD, výpočetní clustery, masivní paralelismus prostřednictvím GPGU) 3. Omezení paralelismu (Amdahlův a Gustafsonův zákon, organizace paměti, vliv mezipaměti), paralelismus z pohledu softwaru (asynchronní a souběžné programování, výpočetní vlákna, datově a úlohově orientovaný paralelismus, sdílení paměti versus předávání zpráv, synchronizace využitelná pro HPC úlohy) 4. Modul multiprocessing, paralelní map, explicitní využívání komunikačních front 5. - 6. MPI v Pythonu (point-to-point communication, kolektivní komunikace) 7. - 8. Paralelismus nad sdílenou pamětí, OpenMP a jeho využití v Pythonu (Numba, Cython, integrace kódu v jazyce C) 9. - 11. Využití platformy CUDA v Pythonu (Numba Cuda, Python CUDA) 12. - 14. Moderní přístupy k HPC paralelismu (např. paralelismus v jazyce Julia, Intel oneAPI, obsah se bude přizpůsobovat aktuálním trendům) Exkurze + cvičení 1. - 3. Motivační exkurze, podpora paralelismu v OS Linux, instalace a zprovoznění, profiling kódu, benchmarking 4. - 14. Řešení praktických úloh a implementace základních paralelních algoritmů s využitím nástrojů zavedených v rámci přednášek Předmět je vyučován v anglickém jazyce.
|
| Studijní aktivity a metody výuky |
| nespecifikováno |
| Výstupy z učení |
|
Předmět se věnuje využití paralelismu včetně high performance computing. Kromě nezbytných teoretických východisek je zaměřen na využití existujících nástrojů a knihoven na platformě Python. Předmět pokrývá oba základní přístupy k paralelismu: systémy s předáváním zpráv (modul multiprocessing, klasické MPI) a systémy nad sdílenou pamětí (založená na OpenMPI a CUDA). Klíčovou částí předmětu jsou cvičení, v nichž si studenti mohou paralelní programování vyzkoušet nejen na desktopových počítačích a noteboocích s více jádry, ale také na výpočetním clusteru fakulty a na specializovaném hardwaru (aktuálně Nvidia Jetson Nano). Na rychlý vývoj v této oblasti by měly reagovat přednášky a cvičení věnované moderním trendům zařazené na konci předmětu
|
| Předpoklady |
|
nespecifikováno
KI/KPDSA |
| Hodnoticí metody a kritéria |
|
nespecifikováno
Zápočet: seminární práce (implementace paralelní verze netriviálního algoritmu za použití CPU a GPU) Zkouška: ústní (diskuse nad seminární prací a ověření obecných faktických znalostí) |
| Doporučená literatura |
|
|
| Studijní plány, ve kterých se předmět nachází |
| Fakulta | Studijní plán (Verze) | Kategorie studijního oboru/specializace | Doporučený semestr |
|---|