Zkuste nás kontaktovat
 Doba trvání 28 hodiny

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 programu hostitele
  • Použití CUDA API ke zjištění informací o zařízení a schopnostech
  • Použití CUDA API k alokaci a dealokaci 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í kernelů a synchronizaci vláken
  • Použití CUDA API pro zpracování chyb a výjimek

CUDA C/C++

  • Pochopení role CUDA C/C++ v programu zařízení
  • Použití CUDA C/C++ ke psaní kernelů, které se provádě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 jsou matematické, atomické, warp atd.
  • Použití vestavěných proměnných CUDA C/C++, jako jsou threadIdx, blockIdx, blockDim atd.
  • Použití knihoven CUDA C/C++, jako jsou cuBLAS, cuFFT, cuRAND atd.

Model paměti CUDA

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

Model provedení CUDA

  • Pochopení rozdílu mezi modely provedení hostitele a zařízení
  • Použití vláken, bloků a mřížek CUDA ke definici paralelnosti
  • Použití funkcí vláken CUDA, jako jsou threadIdx, blockIdx, blockDim atd.
  • Použití funkcí bloků CUDA, jako jsou __syncthreads, __threadfence_block atd.
  • Použití funkcí mřížek CUDA, jako jsou gridDim, gridSync, kooperativní skupiny atd.

Ladění

  • Pochopení běžných chyb a bugů v CUDA programech
  • Použití ladicího programu Visual Studio Code ke zkoumání proměnných, breakpointů, volacího stacku atd.
  • Použití CUDA-GDB k ladění CUDA programů na Linuxu
  • Použití CUDA-MEMCHECK k detekci chyb a úniků paměti
  • Použití NVIDIA Nsight k ladění a analýze CUDA programů na Windows

Optimalizace

  • Pochopení faktorů, které ovlivňují výkon CUDA programů
  • Použití technik koalescence CUDA ke zvýšení propustnosti paměti
  • Použití technik cachování a předčítání (prefetching) CUDA ke snížení latence paměti
  • Použití technik sdílené a lokální paměti CUDA k optimalizaci přístupu k paměti a šířky pásma
  • Použití profilování CUDA a profilovacích nástrojů k měření a zlepšování doby provedení a využití zdrojů

Požadavky

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

Cílové publikum

  • Vývojáři, kteří chtějí se naučit používat CUDA k programování GPU od NVIDIA a tapsání jejich paralelních možností
  • Vývojáři, kteří chtějí psát výkonný a škálovatelný kód, který může běžet na různých CUDA zařízeních
  • Programátoři, kteří chtějí prozkoumat nízkourovrové aspekty programování GPU a optimalizovat výkon svého kódu

Počet účastníků


Cena za účastníka

Nadcházející kurzy

Související kategorie