Děkujeme za vaši dotaz! Jeden z našich pracovníků vás brzy kontaktuje.
Děkujeme za rezervaci! Jeden z našich pracovníků vás brzy kontaktuje.
Návrh Školení
Výpočty na GPU a architektura CUDA
- Rozdíly mezi architekturou CPU a GPU
- Model streamovacích multiprocesorů u grafických procesorů NVIDIA
- Přehled programovacího modelu CUDA
- Heterogenní výpočty a princip hostitele a zařízení
Nastavení vývojového prostředí pro CUDA
- Instalace nástroje CUDA Toolkit 13.x
- Kompilátor NVCC a postup sestavování programů
- Ověření fungování prostředí pomocí dotazů na zařízení
- Integrace do vývojových prostředí a další nástroje pro vývoj
Pisování a spouštění kernelů v CUDA
- Syntaxe a kvalifikátory funkcí typu kernel
- Konfigurace pro spuštění a samotné provádění
- Sčítání vektorů a základní vzory paralelního zpracování dat
- Makra pro kontrolu chyb v CUDA
Hierarchie vláken a model vykonávání v CUDA
- Struktura gridů, bloků a vláken
- Indexace vláken a výpočet globálního ID vlákna
- Výkon warpů a princip SIMT
- Obsazenost prostředků a jejich využití
Architektura paměti na GPU a její správa
- Typy paměti: globální, sdílená, konstantní a registry
- Přidělování a uvolňování paměti na zařízení
- Přenos dat z hostitelského počítače na GPU a opačně
- Sdílená paměť pro spolupráci vláken v rámci jednoho bloku
Jednotná paměť a migrace dat
- Model jednotné paměti a spravované přidělování prostoru
- Migrace stránek a na vyžádání načítání dat
- Asynchronní přednačítání pomocí funkce cudaMemPrefetchAsync
- Doporučení ohledně používání paměti v závislosti na vzorcích přístupu
Systemové profilování s nástrojem Nsight Systems
- Analýza časových ose v rámci Nsight Systems
- Identifikace bodů synchronizace mezi CPU a GPU
- Vizualizace provádění kernelů a přenosů dat
- Interpretace výkonnostních dat na systémové úrovni
Optimalizace kernelů s pomocí Nsight Compute
- Interaktivní profilování kernelů v nástroji Nsight Compute
- Analýza propustnosti paměti a šířky pásma
- Měření využití výpočetních prostředků a stavu vláken typu warp
- Orientační pokyny k optimalizaci a doporučené postupy
Souběžné streamy a asynchronní operace
- CUDA streamy a výchozí stream
- Překrytí výpočtů s přenosem dat pomocí více streamů
- Synchronizace mezi streamy a použití událostí v CUDA
- Návrhy architektury pipeline s využitím více streamů
Ochrana proti chybám a nástroje pro ladění
- Chybové kódy rozhraní CUDA a strategie jejich řešení
- Nástroj Compute-sanitizer na kontrolu přístupů do paměti
- Ladící nástroj cuda-gdb pro ladění kernelů
- Použití asercí a synchronizované detekce chyb
Optimalizační postupy založené na profilování
- Iterativní přístup k profilování a optimalizaci
- Identifikace a prioritizace výkonnostních úzkých míst
- Testování pro udržení výkonnosti i po provedených změnách
- Dokumentování přijatých optimalizačních rozhodnutí
Projekt na tvorbu akcelerované aplikace od začátku do konce
- Návrh komplexního řešení využívající GPU pro výpočty
- Integrace profilování během celého vývojového cyklu
- Měření a vyhodnocování výkonnosti sestavených programů
- Hlediska potřebná pro nasazení aplikace do produkčního prostředí
Požadavky
- Základní znalosti programování v C/C++ včetně práce s datovými typy, cykly, podmínkovými výrazy, funkcemi a prací s poli
- Orientace v kompilaci a spouštění programů z příkazového řádku
- Předchozí zkušenosti s programováním na GPU nebo s technologií CUDA nejsou nutné
Cílová skupina
- Softwaroví vývojáři a inženýři, kteří chtějí urychlit své C/C++ aplikace pomocí GPU.
- Vědečtí pracovníci a odborníci v oblasti výpočetně náročných úloh, kteří přecházejí z používání výhradně procesorů na hybridní výpočetní prostředí.
- Techničtí vedoucí pracovníci hodnotící možnosti využití akcelerace pomocí GPU ve svých produkčních systémech.
8 Hodiny