Název předmětu | Parallel Programming |
---|---|
Kód předmětu | KI/PAR |
Organizační forma výuky | Přednáška + Cvičení + Exkurze |
Úroveň předmětu | Magisterský |
Rok studia | 1 |
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/PDSA |
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 |
---|