Zkuste nás kontaktovat

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

Počet účastníků


Cena za účastníka

Nadcházející kurzy

Související kategorie