Obecné výpočty na GPU
Vyučující
Rozsah výuky
1 + 2
Semestr
Z
Kredity
4
Zakončení
Kz
Rozvrh
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, jakyky 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.
Přednášky
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í (Compute Unified Device Architecture).
3.CUDA - typy pamětí a jejich použití. Paralelní redukce a prefixový součet.
4.CUDA - optimalizace kódu, proudy.
5.CUDA - dynamický paralelismus, cooperative groups a další rozšíření.
6.Další jazyky pro GPGPU I - OpenCL (Open Computing Language).
7.Další jazyky pro GPGPU II - OpenGL compute shadery.
Cvičení
1.Úvod - požadavky, bodové hodnocení, projekty. Možnosti programování GPU.
2.Vícevláknové programování, řešení jednoduché úlohy.
3.CUDA - překlad programu, ladění, jednoduché příklady.
4.CUDA - řešení jednoduchých příkladů.
5.CUDA - řešení úloh I (doplňování kódu do předpřipravené kostry aplikace).
6.CUDA - řešení úloh II (doplňování kódu do předpřipravené kostry aplikace).
7.Samostatná práce na projektu - konzultace I.
8.Průběžná kontrola první části projektu.
9.OpenCL - překlad programu, ladění, jednoduché příklady.
10.OpenCL - řešení úloh III (doplňování kódu do předpřipravené kostry aplikace).
11.Samostatná práce na projektu - konzultace II.
12.Samostatná práce na projektu - konzultace II.
13.Odezvdáváni projektů + dokumentace.
14.Prezentace projektů. Zápočty.
Literatura a zdroje
- David B. Kirk, Wen-mei W. Hwu: Programming Massively Parallel Processors: A Hands-on Approach. Morgan Kaufmann, 2nd edition, 2012.
- Jason Sanders, Edward Kandrot: CUDA by Example: An Introduction to General-Purpose GPU Programming. Addison-Wesley Professional, 1st edition, 2010.
- Aaftab Munshi, Benedict Gaster, Timothy G. Mattson, James Fung, Dan Ginsburg: OpenCL Programming Guide. Addison-Wesley Professional, 1st edition, 2011.