Detail předmětu
Paralelní výpočty na GPU
FIT-PCGAk. rok: 2020/2021
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.
Garant předmětu
Zajišťuje ústav
Výsledky učení předmětu
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í.
Prerekvizity
Látka vyučovaná v předmětech AVS, PRL a částečně PPP.
Doporučená nebo povinná literatura
current PPT slides for lectures
Nvidia CUDA documentation: https://docs.nvidia.com/cuda/
OpenACC documentation: https://www.openacc.org/
Kirk, D., and Hwu, W.: Programming Massively Parallel Processors: A Hands-on Approach, Elsevier, 2010, s. 256, ISBN: 978-0-12-381472-2
Sanders, J., & Kandrot, E: CUDA by Example: An Introduction to General-Purpose GPU Programming. Review Literature And Arts Of The Americas. Addison-Wesley, 2010.
Storti,D., and Yurtoglu, M.: CUDA for Engineers: An Introduction to High-Performance Parallel Computing, Addison-Wesley Professional; 1 edition, 2015. ISBN 978-0134177410.
Chandrasekaran, S., and Juckeland, G.: OpenACC for Programmers: Concepts and Strategies, Addison-Wesley Professional, 2017, ISBN 978-0134694283
Způsob a kritéria hodnocení
Vyhodnocení dvou projektů v celkovém rozsahu 14 hodin, půlsemestrální písemka.
Podmínky zápočtu:
Získání 20 ze 40 bodů za projekty a půlsemestrální písemku.
Jazyk výuky
čeština
Cíl
Detailně se seznámit s architekturou a programováním grafických karet v oblasti obecných výpočtů pomocí knihoven Nvidia CUDA a standardu OpenACC. Naučit se navrhovat akcelerované programy využívající potenciál grafických karet. Seznámit se dostupnými knihovnami pro akceleraci výpočtu na grafických kartách.
Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky
- Zameškaná cvičení je možné nahradit v alternativní termín.
- V poslední týdnu semestru budou probíhat náhradní cvičení.
Zařazení předmětu ve studijních plánech
- Program MITAI magisterský navazující
specializace NBIO , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NISD , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NISY , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NIDE , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NCPS , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NSEC , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NMAT , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NGRI , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NNET , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NVIZ , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NSEN , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NMAL , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NHPC , libovolný ročník, zimní semestr, 5 kreditů, povinný
specializace NVER , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NEMB , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NADE , libovolný ročník, zimní semestr, 5 kreditů, volitelný
specializace NSPE , libovolný ročník, zimní semestr, 5 kreditů, volitelný
Typ (způsob) výuky
Přednáška
26 hod., nepovinná
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
12 hod., povinná
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
14 hod., povinná
Vyučující / Lektor
Osnova
- Vývoj aplikace v prostředí Nvidia CUDA
- Vývoj aplikace v prostředí OpenACC