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