Přeskočit na hlavní obsah
Přeskočit hlavičku

Paralelní počítaní na GPU

Typ studia navazující magisterské
Jazyk výuky čeština
Kód 460-4181/01
Zkratka GPU
Název předmětu česky Paralelní počítaní na GPU
Název předmětu anglicky GPU Parallel Computing
Kreditů 4
Garantující katedra Katedra informatiky
Garant předmětu doc. Ing. Petr Gajdoš, Ph.D.

Osnova předmětu

Zvládnutí následujících témat bude sloužit jako vstupní bod pro cvičení. Kladou si za cíl uvést posluchače do problematiky a nastínit následnou práci na cvičeních.

Probíraná témata:

- Úvod do paralelních výpočtů na GPU, GPU historie a CUDA
- Architektura CUDA, integrace na úrovni C++ projektu
- Práce s vlákny, kernel funkce
- Typy CUDA pamětí, vzory pro jejich využití
- Řešení konfliktů paměti GPU
- Řízení běhu programu, distribuce algoritmu
- Výkon algoritmu v závislosti na jeho paralelizaci na GPU
- Základní vektorové a maticové operace
- Optimalizace na datové úrovni aplikace, efektivní datové struktury.
- Optimalizace z pohledu maximálního využití GPU
- Doplňková knihovna CUBLAS
- Případové studie

Cvičení budou korespondovat které rozšíří v praktické rovině programování.

- Vytvoření základní šablony aplikace, první spuštění, ukázková aplikace
- Ukázky transferu dat na/z GPU
- Hierarchie vláken, základní běh vlákna, limity, volání kernel funkcí, parametry a omezení
- Typy CUDA pamětí, vzory pro jejich využití
- Optimalizace přístupů do paměti, volba vhodné datové struktury
- Streamy, paralelní volání kernel funkcí, synchronizace na úrovni vláken, bloků, GPU vs. CPU
- Případová studia, experiment s více variantami řešení téže úlohy
- Základní vektorové a maticové operace, případová studie zpracování dat, paralelní redukce
- Integrace podpůrných knihoven pro lineární algebru
- Ukázka grafické úlohy a její řešení při různém nastavení, využití bufferování
- Případové studie, představení konkrétní praktické úlohy, nástin jejího řešení, demonstrace experimentů
- Ladění programu s využitím nástrojů nVidia nSight

Povinná literatura

[1] Bjarne Stroustrup. The C++ Programming Language, 4th Edition. Addison-Wesley Professional, 4th edition, 5 2013.
[2] Graham Sellers, Richard S. Wright, and Nicholas Haemel. OpenGL SuperBible: Comprehensive Tutorial and Reference (6th Edition). Addison-Wesley Professional, 6th edition, 7 2013.
[3] John Cheng, Max Grossman, and Ty McKercher. Professional CUDA C Programming. Wrox, 1st edition, 9 2014.
[4] Soyata, Tolga. GPU parallel program development using CUDA. CRC Press, 2018.

Doporučená literatura

[1] Bjarne Stroustrup. The C++ Programming Language, 4th Edition. Addison-Wesley Professional, 4th edition, 5 2013.
[2] John Cheng, Max Grossman, and Ty McKercher. Professional CUDA C Programming. Wrox, 1st edition, 9 2014.
[3] Tuomanen, Brian. Hands-On GPU Programming with Python and CUDA: Explore high-performance parallel computing with CUDA. Packt Publishing Ltd, 2018.
[4] Volodymyr Kindratenko, editor. Numerical Computations with GPUs. Springer, 2014 edition, 7 2014.
[5] Vaidya, Bhaumik. Hands-On GPU-Accelerated Computer Vision with OpenCV and CUDA: Effective techniques for processing complex image data in real time using GPUs. Packt Publishing Ltd, 2018.
[6] Jung W. Suh and Youngmin Kim. Accelerating MATLAB with GPU Computing: A Primer with Examples. Morgan Kaufmann, 1st edition, 12 2013.