Návrh Školení

Úvod

  • Co je CUDA?
  • CUDA vs OpenCL vs SYCL
  • Přehled funkcí a architektury CUDA
  • Nastavení vývojového prostředí

Začínáme

  • Vytvoření nového projektu CUDA pomocí Visual Studio Code
  • Prozkoumání struktury projektu a souborů
  • Kompilace a spuštění programu
  • Zobrazení výstupu pomocí printf a fprintf

CUDA API

  • Pochopení role CUDA API v hostitelském programu
  • Použití CUDA API k dotazování informací o zařízení a jeho funkcí
  • Použití CUDA API k alokaci a uvolnění paměti zařízení
  • Použití CUDA API ke kopírování dat mezi hostitelem a zařízením
  • Použití CUDA API ke spouštění jader a synchronizaci vláken
  • Použití CUDA API ke zpracování chyb a výjimek

CUDA C/C++

  • Pochopení role CUDA C/C++ v programu zařízení
  • Použití CUDA C/C++ k zápisu jader, která se spouštějí na GPU a manipulují s daty
  • Použití datových typů, kvalifikátorů, operátorů a výrazů CUDA C/C++
  • Použití vestavěných funkcí CUDA C/C++, jako je matematický, atomický, warp atd.
  • Použití vestavěných proměnných CUDA C/C++, jako je threadIdx, blockIdx, blockDim atd.
  • Používání knihoven CUDA C/C++, jako jsou cuBLAS, cuFFT, cuRAND atd.

Paměťový model CUDA

  • Pochopení rozdílu mezi modely paměti hostitele a zařízení
  • Použití paměťových prostorů CUDA, jako jsou globální, sdílené, konstantní a místní
  • Použití paměťových objektů CUDA, jako jsou ukazatele, pole, textury a povrchy
  • Použití režimů přístupu k paměti CUDA, jako je pouze čtení, pouze zápis, čtení-zápis atd.
  • Použití modelu konzistence paměti CUDA a mechanismů synchronizace

Model provedení CUDA

  • Pochopení rozdílu mezi modely provádění hostitele a zařízení
  • Použití CUDA vláken, bloků a mřížek k definování rovnoběžnosti
  • Použití funkcí vláken CUDA, jako je threadIdx, blockIdx, blockDim atd.
  • Použití blokových funkcí CUDA, jako jsou __syncthreads, __threadfence_block atd.
  • Používání funkcí mřížky CUDA, jako je gridDim, gridSync, kooperativní skupiny atd.

Ladění

  • Pochopení běžných chyb a chyb v programech CUDA
  • Použití Visual Studio Code debugger ke kontrole proměnných, zarážek, zásobníku volání atd.
  • Použití CUDA-GDB k ladění programů CUDA na Linux
  • Použití CUDA-MEMCHECK k detekci chyb a úniků paměti
  • Použití NVIDIA Nsight k ladění a analýze programů CUDA ve Windows

Optimalizace

  • Pochopení faktorů, které ovlivňují výkon programů CUDA
  • Použití slučovacích technik CUDA ke zlepšení propustnosti paměti
  • Použití mezipaměti a technik předběžného načítání CUDA ke snížení latence paměti
  • Použití sdílené paměti a technik místní paměti CUDA k optimalizaci přístupu k paměti a šířky pásma
  • Použití profilovacích a profilovacích nástrojů CUDA k měření a zlepšování doby provádění a využití zdrojů

Shrnutí a další kroky

Požadavky

  • Pochopení jazyka C/C++ a konceptů paralelního programování
  • Základní znalosti architektury počítačů a hierarchie paměti
  • Zkušenosti s nástroji příkazového řádku a editory kódu

Publikum

  • Vývojáři, kteří se chtějí naučit používat CUDA k programování NVIDIA GPU a využívat jejich paralelismus
  • Vývojáři, kteří chtějí psát vysoce výkonný a škálovatelný kód, který lze spustit na různých zařízeních CUDA
  • Programátoři, kteří chtějí prozkoumat nízkoúrovňové aspekty GPU programování a optimalizovat výkon svého kódu
 28 hodiny

Počet účastníků



Price per participant

Reference (1)

Související kurzy

GPU Programming - OpenCL vs CUDA vs ROCm

28 hodiny

ROCm for Windows

21 hodiny

Související kategorie