Zkuste nás kontaktovat

Návrh Školení

Úvod

  • Co je technologie CUDA?
  • Srovnání mezi technologiemi CUDA, OpenCL a SYCL.
  • Přehled vlastností a architektury technologie CUDA.
  • Nastavení vývojového prostředí.

Začátky práce

  • Vytvoření nového projektu v rámci technologie CUDA pomocí programu Visual Studio Code.
  • Seznámení se s strukturou a soubory daného projektu.
  • Kompilace a spuštění napsaného programu.
  • Zobrazení výstupů pomocí funkcí printf a fprintf.

Rozhraní API technologie CUDA

  • Pochopení role rozhraní API v rámci hostitelského programu.
  • Dotazování informací o hardware zařízení a jeho schopnostech pomocí API.
  • Alokace a uvolňování paměti na grafickém procesoru prostřednictvím rozhraní API.
  • Přenos dat mezi hostitelem a GPU pomocí mechanismů definovaných v API.
  • Spouštění kernelů a synchronizace vláken s využitím funkcí rozhraní API.
  • Ovládání chyb a výjimek prostřednictvím metod určených k tomuto účelu.

Jazyk CUDA C/C++

  • Pochopení role jazyka CUDA C/C++ v kontextu běžících programů na grafickém procesoru.
  • Psaní kernelů a manipulace s daty za pomoci syntaxe CUDA C/C++.
  • Používání datových typů, kvalifikátorů, operátorů a výrazů tohoto jazyka.
  • Využití matematických, atomárních či vláknových funkcí v rámci standardní knihovny CUDA C/C++.
  • Pracování s vestavěnými proměnnými jako threadIdx, blockIdx či blockDim.
  • Využívání specializovaných knihoven typu cuBLAS, cuFFT nebo cuRAND při programování.

Model paměti technologie CUDA

  • Rozdíly mezi hostitelskou a grafickou pamětí v rámci modelu technologie CUDA.
  • Přizpůsobení pracovních postupů jednotlivým typům paměti – globální, sdílené, konstantní či lokální.
  • Práce s ukazateli, položkami pole a texturami jako reprezentacemi dat v rámci paměti GPU.
  • Ovládání režimů přístupu k jednotlivým typům paměti – pouze ke čtení, zápisu nebo obojímu.
  • Pochopení konzistence a mechanismů synchronizace v rámci paměťového modelu technologie CUDA.

Model provádění programů v technologii CUDA

  • Rozdíly mezi způsobem vykonávání kódu na hostiteli a grafickém procesoru.
  • Definování paralelního výkonu pomocí vláken, bloků a mřížek v rámci mechanismů rozhraní CUDA.
  • Pracovní postupy spojené s jednotlivými vlákny – threadIdx, blockIdx či blockDim.
  • Spravování chování bloků pomocí funkcí typu __syncthreads nebo __threadfence_block.
  • Využívání funkcí specifikovaných pro celé mřížky – např. gridDim, gridSync či konceptu kooperativních skupin.

Ladění programů

  • Poznávání běžných chyb a nekonzistencí v programech na bázi technologie CUDA.
  • Využívání ladicího nástroje Visual Studio Code k prohlížení proměnných, nastavování breakpointů a zkoumání volacích cest.
  • Ladění programů na systému Linux pomocí nástroje CUDA-GDB.
  • Detekce chybných operací s pamětí i úniků paměti pomocí nástroje CUDA-MEMCHECK.
  • Analýza výkonu a ladění programů na platformě Windows díky nástroji NVIDIA Nsight.

Optimalizace programů

  • Rozpoznání hlavních faktorů ovlivňujících rychlost provádění a efektivitu programů využívajících technologii CUDA.
  • Seskupování přístupů k jednotlivým segmentům paměti za účelem zvýšení její propustnosti.
  • Ukládání dat do mezipaměti či přednačítání informací za cílem snížení latence přístupu k paměti.
  • Přizpůsobení využití sdílené i lokální paměti s cílem zlepšit výkonnostní charakteristiky programů a efektivitu jejich využívání zdrojů GPU.
  • Využívání specializovaných nástrojů na profilování pro měření času provedení kódu a optimální využití dostupných prostředků systému.

Závěr a další směry rozvoje

Požadavky

  • Základní znalosti jazyka C/C++ a konceptů paralelního programování
  • Obecné povědomí o architektuře počítačů a hierarchii pamětí
  • Praktická zkušenost s nástroji příkazového řádku a editory kódu

Na koho kurz je určen

  • Vývojáři, kteří se chtějí naučit využívat technologii CUDA k programování grafických procesorů NVIDIA a využít jejich paralelní sílu.
  • Programátoři s cílem vyvíjet výkonný a škálovatelný kód schopný běžet na různých zařízeních podporujících technologii CUDA.
  • Osoby se zájmem o hlubší pochopení aspektů programování na GPU a chtějící optimalizovat výkon svých programů.
 28 Hodiny

Počet účastníků


Cena za účastníka

Nadcházející kurzy

Související kategorie