Detail předmětu
Paralelní výpočty na GPU
FIT-PCGAk. rok: 2022/2023
Předmět pokrývá architekturu a programování grafických karet Nvidia a částečně i AMD. Nejprve je detailně rozebrána architektura grafických karet. Následně je popsán model vykonávání programu pomocí techniky SIMT a víceúrovňové rozdělení výpočtu do vláken a bloků. Následuje popis hierarchie paměti CUDA, techniky synchronizace a redukce. Následuje popis pokročilých technik dynamického paralelismu a data-flow zpracování na GPU zakončené možnostmi využití více GPU v distribuovaných systémech s technologií NVlink a MPI společně s technikami překrývání výpočtu a komunikace. Předmět dále popisuje vysokoúrovňové knihovny pro akceleraci algoritmů na GPU. Zbytek předmětu se věnuje technologii OpenACC, která významně zjednodušuje programování grafických karet pomocí pragma nápověd pro kompilátor.
Jazyk výuky
Počet kreditů
Garant předmětu
Zajišťuje ústav
Výsledky učení předmětu
Pochopení důsledků hardwarových omezení na efektivitu softwarových řešení.
Prerekvizity
Způsob a kritéria hodnocení
Učební cíle
Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky
Doporučená literatura
Current PPT slides for lectures (EN)
Dokumentace Nvidia: https://docs.nvidia.com/cuda/ (CS)
Dokumentace OpenACC: https://www.openacc.org/ (CS)
Chandrasekaran, S., and Juckeland, G.: OpenACC for Programmers: Concepts and Strategies, Addison-Wesley Professional, 2017, ISBN 978-0134694283. link.
Kirk, D., and Hwu, W.: Programming Massively Parallel Processors: A Hands-on Approach, Elsevier, 2010, s. 256, ISBN: 978-0-12-381472-2. download.
Nvidia CUDA documentation: https://docs.nvidia.com/cuda/ (EN)
OpenACC documentation: https://www.openacc.org/ (EN)
Sanders, J., & Kandrot, E: CUDA by Example: An Introduction to General-Purpose GPU Programming. Review Literature And Arts Of The Americas. Addison-Wesley, 2010. download.
Storti,D., and Yurtoglu, M.: CUDA for Engineers: An Introduction to High-Performance Parallel Computing, Addison-Wesley Professional; 1 edition, 2015. ISBN 978-0134177410. link.
Elearning
Zařazení předmětu ve studijních plánech
- Program MITAI magisterský navazující
specializace NADE , 0 ročník, zimní semestr, volitelný
specializace NBIO , 0 ročník, zimní semestr, volitelný
specializace NCPS , 0 ročník, zimní semestr, volitelný
specializace NEMB , 0 ročník, zimní semestr, volitelný
specializace NGRI , 0 ročník, zimní semestr, volitelný
specializace NHPC , 0 ročník, zimní semestr, povinný
specializace NIDE , 0 ročník, zimní semestr, volitelný
specializace NISD , 0 ročník, zimní semestr, volitelný
specializace NISY do 2020/21 , 0 ročník, zimní semestr, volitelný
specializace NMAL , 0 ročník, zimní semestr, volitelný
specializace NMAT , 0 ročník, zimní semestr, volitelný
specializace NNET , 0 ročník, zimní semestr, volitelný
specializace NSEC , 0 ročník, zimní semestr, volitelný
specializace NSEN , 0 ročník, zimní semestr, volitelný
specializace NSPE , 0 ročník, zimní semestr, volitelný
specializace NVER , 0 ročník, zimní semestr, volitelný
specializace NVIZ , 0 ročník, zimní semestr, volitelný
specializace NISY , 0 ročník, zimní semestr, volitelný
specializace NEMB do 2021/22 , 0 ročník, zimní semestr, volitelný
Typ (způsob) výuky
Přednáška
Vyučující / Lektor
Osnova
- Architektura grafických jednotek GPU.
- CUDA model vykonávání programu.
- CUDA hierarchie pamětí.
- Synchronizace a redukce.
- Dynamický paralelismus a unifikovaná paměť.
- Návrh a optimalizace algoritmů pro GPU.
- Víceproudové zpracování, překrytí komunikace a výpočtu.
- Multi-GPU systémy.
- Knihovna Nvidia Thrust.
- Základy knihovny OpenACC.
- Správa paměti v OpenACC.
- Optimalizace s OpenACC.
- Knihovny pro akceleraci výpočtů pomocí GPU.
Cvičení na počítači
Vyučující / Lektor
Osnova
- CUDA: Paměťové přenosy, jednoduché kernely (4, týden)
- CUDA: Práce se sdílenou pamětí (5. týden).
- CUDA: Práce s texturní a konstantní pamětí (6. týden).
- CUDA: Dynamický paralelismus, streamy (8. týden).
- OpenACC: základní techniky (10. týden).
- OpenACC: pokročilé techniky (11. týden).
Projekt
Vyučující / Lektor
Osnova
- Vývoj aplikace v prostředí Nvidia CUDA
- Vývoj aplikace v prostředí OpenACC
Elearning