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í
Ú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