Předmět: Parallel Programming

« Zpět
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í
  • Posel Zbyšek, doc. RNDr. Ph.D.
  • Fišer Jiří, Mgr. Ph.D.
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ý ročník Doporučený semestr