Návrh Školení

Úvod

  • Co je GPU programování?
  • Proč používat programování GPU?
  • Jaké jsou výzvy a kompromisy GPU programování?
  • Jaké jsou rámce a nástroje pro GPU programování?
  • Výběr správného rámce a nástroje pro vaši aplikaci

OpenCL

  • Co je OpenCL?
  • Jaké jsou výhody a nevýhody OpenCL?
  • Nastavení vývojového prostředí pro OpenCL
  • Vytvoření základního OpenCL programu, který provádí sčítání vektorů
  • Použití OpenCL API k dotazování na informace o zařízení, alokaci a uvolnění paměti zařízení, kopírování dat mezi hostitelem a zařízením, spouštění jader a synchronizaci vláken
  • Použití OpenCL jazyka C k zápisu jader, která se spouštějí na zařízení a manipulují s daty
  • Použití OpenCL vestavěných funkcí, proměnných a knihoven k provádění běžných úloh a operací
  • Použití OpenCL paměťových prostorů, jako je globální, místní, konstantní a soukromý, k optimalizaci přenosů dat a přístupů k paměti
  • Použití prováděcího modelu OpenCL k řízení pracovních položek, pracovních skupin a rozsahů ND, které definují paralelismus
  • Ladění a testování OpenCL programů pomocí nástrojů, jako je CodeXL
  • Optimalizace OpenCL programů pomocí technik, jako je slučování, ukládání do mezipaměti, předběžné načítání a profilování

CUDA

  • Co je CUDA?
  • Jaké jsou výhody a nevýhody CUDA?
  • Nastavení vývojového prostředí pro CUDA
  • Vytvoření základního programu CUDA, který provádí sčítání vektorů
  • Použití CUDA API k dotazování na informace o zařízení, alokaci a uvolnění paměti zařízení, kopírování dat mezi hostitelem a zařízením, spouštění jader a synchronizaci vláken
  • Použití jazyka CUDA C/C++ k zápisu jader, která se spouštějí na zařízení a manipulují s daty
  • Použití vestavěných funkcí, proměnných a knihoven CUDA k provádění běžných úkolů a operací
  • Použití paměťových prostorů CUDA, jako jsou globální, sdílené, konstantní a místní, k optimalizaci přenosů dat a přístupů k paměti
  • Použití modelu provádění CUDA k řízení vláken, bloků a mřížek, které definují rovnoběžnost
  • Ladění a testování programů CUDA pomocí nástrojů jako CUDA-GDB, CUDA-MEMCHECK a NVIDIA Nsight
  • Optimalizace programů CUDA pomocí technik, jako je slučování, ukládání do mezipaměti, předběžné načítání a profilování

ROCm

  • Co je ROCm?
  • Jaké jsou výhody a nevýhody ROCm?
  • Nastavení vývojového prostředí pro ROCm
  • Vytvoření základního programu ROCm, který provádí sčítání vektorů
  • Použití ROCm API k dotazování na informace o zařízení, alokaci a uvolnění paměti zařízení, kopírování dat mezi hostitelem a zařízením, spouštění jader a synchronizaci vláken
  • Použití jazyka ROCm C/C++ k zápisu jader, která se spouštějí na zařízení a manipulují s daty
  • Použití vestavěných funkcí, proměnných a knihoven ROCm k provádění běžných úloh a operací
  • Použití paměťových prostorů ROCm, jako jsou globální, místní, konstantní a soukromé, k optimalizaci přenosů dat a přístupů k paměti
  • Použití modelu provádění ROCm k řízení vláken, bloků a mřížek, které definují rovnoběžnost
  • Ladění a testování programů ROCm pomocí nástrojů jako ROCm Debugger a ROCm Profiler
  • Optimalizace programů ROCm pomocí technik, jako je slučování, ukládání do mezipaměti, předběžné načítání a profilování

BOKY

  • Co je HIP?
  • Jaké jsou výhody a nevýhody HIP?
  • Nastavení vývojového prostředí pro HIP
  • Vytvoření základního programu HIP, který provádí sčítání vektorů
  • Použití jazyka HIP k zápisu jader, která se spouštějí na zařízení a manipulují s daty
  • Použití vestavěných funkcí, proměnných a knihoven HIP k provádění běžných úloh a operací
  • Použití paměťových prostorů HIP, jako jsou globální, sdílené, konstantní a místní, k optimalizaci datových přenosů a přístupů k paměti
  • Použití modelu provádění HIP k řízení vláken, bloků a mřížek, které definují paralelismus
  • Ladění a testování programů HIP pomocí nástrojů jako ROCm Debugger a ROCm Profiler
  • Optimalizace programů HIP pomocí technik, jako je slučování, ukládání do mezipaměti, předběžné načítání a profilování

Srovnání

  • Porovnání funkcí, výkonu a kompatibility OpenCL, CUDA, ROCm a HIP
  • Hodnocení GPU programů pomocí benchmarků a metrik
  • Naučte se osvědčené postupy a tipy pro GPU programování
  • Zkoumání současných a budoucích trendů a výzev GPU programování

Shrnutí a další krok

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 základy GPU programování a hlavní rámce a nástroje pro vývoj GPU aplikací
  • Vývojáři, kteří chtějí psát přenosný a škálovatelný kód, který může běžet na různých platformách a zařízeních
  • Programátoři, kteří chtějí prozkoumat výhody a výzvy GPU programování a optimalizace
 21 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