Detail předmětu
Paralelní výpočty na GPU
FIT-PCGAk. rok: 2024/2025
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
Vstupní znalosti
Pravidla hodnocení a ukončení předmětu
- Vyhodnocení dvou projektů v celkovém rozsahu 14 hodin a půlsemestrální písemky.
- Zameškaná cvičení je možné nahradit v alternativní termínu.
- Pro udělení zápočtu je nutné získat min 20b ze 40b a minimálně 1b z každého projektu.
Učební cíle
Znalost využití grafických karet pro akceleraci obecných výpočtů, orientace v oblasti akcelerovaných výpočetních systémů a knihoven.
Pochopení důsledků hardwarových omezení na efektivitu softwarových řešení.
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 NGRI , 0 ročník, zimní semestr, volitelný
specializace NADE , 0 ročník, zimní semestr, volitelný
specializace NISD , 0 ročník, zimní semestr, volitelný
specializace NMAT , 0 ročník, zimní semestr, volitelný
specializace NSEC , 0 ročník, zimní semestr, volitelný
specializace NISY do 2020/21 , 0 ročník, zimní semestr, volitelný
specializace NNET , 0 ročník, zimní semestr, volitelný
specializace NMAL , 0 ročník, zimní semestr, volitelný
specializace NCPS , 0 ročník, zimní semestr, volitelný
specializace NHPC , 0 ročník, zimní semestr, povinný
specializace NVER , 0 ročník, zimní semestr, volitelný
specializace NIDE , 0 ročník, zimní semestr, volitelný
specializace NISY , 0 ročník, zimní semestr, volitelný
specializace NEMB do 2023/24 , 0 ročník, zimní semestr, volitelný
specializace NSPE , 0 ročník, zimní semestr, volitelný
specializace NEMB , 0 ročník, zimní semestr, volitelný
specializace NBIO , 0 ročník, zimní semestr, volitelný
specializace NSEN , 0 ročník, zimní semestr, volitelný
specializace NVIZ , 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 (3. týden)
- CUDA: Práce se sdílenou pamětí (4. týden).
- CUDA: Práce s texturní a konstantní pamětí (5. týden).
- CUDA: Dynamický paralelismus, streamy (6. 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