Zkuste nás kontaktovat

Návrh Školení

Úvod

  • Co je to programování na GPU?
  • Proč používat programování na GPU?
  • Jaké jsou výzvy a kompromisy spojené s programováním na GPU?
  • Jaké existují frameworky a nástroje pro programování na GPU?
  • Jak vybrat ten správný framework a nástroj pro vaši aplikaci?

OpenCL

  • Co je to OpenCL?
  • Jaké jsou výhody a nevýhody OpenCL?
  • Nastavení vývojového prostředí pro OpenCL.
  • Vytvoření jednoduchého programu na OpenCL, který provede sčítání vektorů.
  • Použití rozhraní API OpenCL k zjišťování informací o zařízeních, alokaci a dealokaci paměti na GPU, přenosu dat mezi hostitelem a GPU, spouštění jader a synchronizaci vláken.
  • Psaní kernelů v jazyce OpenCL C určených k běhu na GPU s manipulací nad daty.
  • Využití vestavěných funkcí, proměnných a knihoven OpenCL pro řešení běžných úloh.
  • Používání typů pamětí – globální, lokální, konstantní či privátní – k optimalizaci přenosů dat a přístupu k paměti.
  • Řízení průběhu výpočtu pomocí modelu pracovních položek, skupin a ND-rozsahů určujících paralelismus.
  • Ladění a testování programů na OpenCL s využitím nástrojů typu CodeXL.
  • Optimalizace výkonu programů na OpenCL pomocí technik jako je shlukování přístupů k paměti, ukládání do mezipaměti, předběžné načítání dat či profilování.

CUDA

  • Co je to CUDA?
  • Jaké jsou výhody a nevýhody CUDA?
  • Nastavení vývojového prostředí pro CUDA.
  • Vytvoření jednoduchého programu na CUDA, který provede sčítání vektorů.
  • Použití rozhraní API CUDA k dotazování informací o zařízeních, alokaci a dealokaci paměti na GPU, přenosu dat mezi hostitelem a GPU, spouštění jader a synchronizaci vláken.
  • Psaní kernelů v jazyce CUDA C/C++ určených k běhu na GPU s manipulací nad daty.
  • Využití vestavěných funkcí, proměnných a knihoven CUDA pro řešení běžných úloh.
  • Používání typů pamětí – globální, sdílená, konstantní či lokální – k optimalizaci přenosů dat a přístupu k paměti.
  • Řízení průběhu výpočtu pomocí modelu vláken, bloků a mřížek určujících paralelismus.
  • Ladění a testování programů na CUDA s využitím nástrojů typu CUDA-GDB, CUDA-MEMCHECK nebo NVIDIA Nsight.
  • Optimalizace výkonu programů na CUDA pomocí technik jako je shlukování přístupů k paměti, ukládání do mezipaměti, předběžné načítání dat či profilování.

ROCm

  • Co je to ROCm?
  • Jaké jsou výhody a nevýhody ROCm?
  • Nastavení vývojového prostředí pro ROCm.
  • Vytvoření jednoduchého programu na ROCm, který provede sčítání vektorů.
  • Použití rozhraní API ROCm k dotazování informací o zařízeních, alokaci a dealokaci paměti na GPU, přenosu dat mezi hostitelem a GPU, spouštění jader a synchronizaci vláken.
  • Psaní kernelů v jazyce ROCm C/C++ určených k běhu na GPU s manipulací nad daty.
  • Využití vestavěných funkcí, proměnných a knihoven ROCm pro řešení běžných úloh.
  • Používání typů pamětí – globální, lokální, konstantní či privátní – k optimalizaci přenosů dat a přístupu k paměti.
  • Řízení průběhu výpočtu pomocí modelu vláken, bloků a mřížek určujících paralelismus.
  • Ladění a testování programů na ROCm s využitím nástrojů typu ROCm Debugger nebo ROCm Profiler.
  • Optimalizace výkonu programů na ROCm pomocí technik jako je shlukování přístupů k paměti, ukládání do mezipaměti, předběžné načítání dat či profilování.

HIP

  • Co je to HIP?
  • Jaké jsou výhody a nevýhody HIP?
  • Nastavení vývojového prostředí pro HIP.
  • Vytvoření jednoduchého programu na HIP, který provede sčítání vektorů.
  • Psaní kernelů v jazyce HIP určených k běhu na GPU s manipulací nad daty.
  • Využití vestavěných funkcí, proměnných a knihoven HIP pro řešení běžných úloh.
  • Používání typů pamětí – globální, sdílená, konstantní či lokální – k optimalizaci přenosů dat a přístupu k paměti.
  • Řízení průběhu výpočtu pomocí modelu vláken, bloků a mřížek určujících paralelismus.
  • Ladění a testování programů na HIP s využitím nástrojů typu ROCm Debugger nebo ROCm Profiler.
  • Optimalizace výkonu programů na HIP pomocí technik jako je shlukování přístupů k paměti, ukládání do mezipaměti, předběžné načítání dat či profilování.

Srovnání

  • Porovnání vlastností, výkonu a kompatibility frameworků OpenCL, CUDA, ROCm a HIP.
  • Hodnocení programů na GPU pomocí benchmarků a metrik.
  • Poznání osvědčených postupů při programování na GPU.
  • Prozkoumání současných i budoucích trendů a výzev v oblasti programování na GPU.

Shrnutí a další kroky

Požadavky

  • Znalosti programovacího jazyka C/C++ a základy konceptů paralelního programování
  • Základní povědomí o architektuře počítače a hierarchii pamětí
  • Zkušenosti s práce v příkazovém řádku a s editory kódu

Cílová skupina

  • Vývojáři, kteří se chtějí naučit základy programování na GPU a hlavní nástroje pro tvorbu takových aplikací.
  • Programátori toužící vytvářet přenositelný a škálovatelný kód, který běží na různých platformách a zařízeních.
  • Vývojáři zajímající se o výhody i úskalí optimalizace programů na GPU.
 21 Hodiny

Počet účastníků


Cena za účastníka

Nadcházející kurzy

Související kategorie