Obecné výpočty na grafických procesorech
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
A4M39GPU | KZ | 4 | 1P+2C | česky |
- Garant předmětu:
- Přednášející:
- Cvičící:
- Předmět zajišťuje:
- katedra počítačové grafiky a interakce
- Anotace:
-
Cílem předmětu je seznámení studentů se základními principy obecných výpočtů na grafických procesorech (GPGPU) a získání praktických zkušeností s návrhem a implementací aplikací využívajících pro urychlení výpočtů GPU. Výklad zahrnuje seznámení s architekturou současných grafických procesorů a jejími omezeními, základní koncepty paralelního programovaní GPU, jazyky pro programování GPU, technologii CUDA a metody optimalizace kódu. Cvičení jsou zaměřena na řešení typových úloh a semestrálních projektů. Důraz je kladen na získání praktických zkušeností s konkrétní technologií - CUDA.
Výsledek studentské ankety předmětu je zde: http://www.fel.cvut.cz/anketa/aktualni/courses/A4M39GPU
- Požadavky:
-
Programování v C/C++, lineární algebra.
- Osnova přednášek:
-
1. Úvod do počítání na GPU (architektury, jazyky, GPU versus CPU).
2. Popis architektury NVIDIA CUDA a základy jejího programování.
3. CUDA - práce s vlákny a přístup do paměti, typy pamětí.
4. CUDA - implementace základních paralelních algoritmů (redukce, prefixový součet).
5. CUDA - metody optimalizace kódu.
6. CUDA - rozšíření - dynamický paralelismus, cooperative groups, unified memory, graf výpočtu.
7. Ostatní jazyky pro GPGPU I - OpenCL (Open Computing Language).
8. Ostatní jazyky pro GPGPU II - OpenGL Compute Shaders.
- Osnova cvičení:
-
1. Úvod - požadavky, bodové hodnocení.
2. CUDA - překlad programu, ladění, jednoduché příklady. Zadání projektu.
3. CUDA - řešení jednoduchých příkladů.
4. CUDA - řešení jednoduché úlohy I (doplňování kódu do předpřipravené kostry
aplikace).
5. CUDA - řešení jednoduché úlohy II (doplňování kódu do předpřipravené kostry
aplikace).
6. CUDA - řešení jednoduché úlohy III (doplňování kódu do předpřipravené kostry
aplikace).
7. Samostatná práce na projektu - konzultace I.
8. OpenCL - překlad programu, ladění, jednoduché příklady
9. OpenCL - řešení jednoduché úlohy IV (doplňování kódu do předpřipravené kostry
aplikace).
10. Samostatná práce na projektu - konzultace II.
11. Samostatná práce na projektu - konzultace II.
12. Odevzdávání projektů + dokumentace.
13. Prezentace semestrálních projektů. Zápočty.
- Cíle studia:
- Studijní materiály:
-
1. Wen-mei W. Hwu, David B. Kirk, Izzat El Hajj: Programming Massively Parallel Processors: A Hands-on Approach. 4th ed., Elsevier, 2022, https://doi.org/10.1016/C2020-0-02969-5.
2. Jason Sanders, Edward Kandrot: CUDA by Example: An Introduction to General-Purpose GPU Programming. 1st ed., Addison-Wesley Professional, 2010, ISBN 978-0131387683.
3. Aaftab Munshi, Benedict Gaster, Timothy G. Mattson, James Fung, Dan Ginsburg: OpenCL Programming Guide. Addison-Wesley Professional, 2011, ISBN 978-0321749642.
4. Gerassimos Barlas: Multicore and GPU Programming: An Integrated Approach. Morgan Kaufmann, 2014, ISBN 978-0124171374.
- Poznámka:
-
Další podrobnější informace o předmětu (včetně podmínek pro udělení klasifikovaného zápočtu) najdete na webové stránce http://cent.felk.cvut.cz/courses/GPU .
- Další informace:
- http://cent.felk.cvut.cz/courses/GPU
- Pro tento předmět se rozvrh nepřipravuje
- Předmět je součástí následujících studijních plánů: