Zkuste nás kontaktovat

Návrh Školení

Úvod

  • Co je to programování na GPU?
  • Proč využívat programování na GPU?
  • Jaké jsou výzvy a kompromisy spojené s tímto typem programování?
  • Které frameworky lze využít k programování na GPU?
  • Jak vybrat vhodný framework podle konkrétních potřeb aplikace

OpenCL

  • Co je to OpenCL?
  • Jaké jsou přednosti a nedostatky této technologie?
  • Nastavení vývojového prostředí pro OpenCL
  • Vytvoření jednoduchého programu v OpenCL určeného k součítání vektorů
  • Použití API OpenCL k zjišťování informací o zařízení, alokaci a uvolňování paměti na GPU, přenosu dat mezi počítačem a procesorem, spouštění výpočtů i synchronizaci vláken
  • Psaní jáder určených k provádění na GPU s využitím jazyka OpenCL C
  • Využití vestavěných funkcí, proměnných a knihoven k vykonávání běžných operací
  • Volba vhodných typů paměti – globální, lokální, konstantní či soukromé – za účelem optimalizace přenosu a přístupu k datům
  • Řízení struktury paralelních výpočtů pomocí modelů pracovních položek, skupin a rozsahů definovaných v OpenCL
  • Odstraňování chyb a testování programů pomocí nástrojů jako CodeXL
  • Optimalizace výkonu programů prostřednictvím shlukování operací, využití mezipaměti, předběžného načítání a profilování

CUDA

  • Co je to CUDA?
  • Jaké jsou výhody a nevýhody této technologie?
  • Nastavení vývojového prostředí pro CUDA
  • Vytvoření jednoduchého programu v CUDA určeného k součítání vektorů
  • Použití API CUDA k zjišťování informací o zařízení, alokaci a uvolňování paměti na GPU, přenosu dat mezi počítačem a procesorem, spouštění výpočtů i synchronizaci vláken
  • Psaní jáder pro GPU s využitím jazyka CUDA C/C++
  • Využití vestavěných funkcí, proměnných a knihovny k vykonávání běžných operací
  • Volba vhodných typů paměti – globální, sdílená, konstantní či lokální – za účelem optimalizace přenosu a přístupu k datům
  • Řízení struktury paralelních výpočtů pomocí modelů vláken, bloků a mřížek definovaných v CUDA
  • Odstraňování chyb a testování programů s použitím nástrojů jako CUDA-GDB, CUDA-MEMCHECK a NVIDIA Nsight
  • Optimalizace výkonu programů prostřednictvím shlukování operací, využití mezipaměti, předběžného načítání a profilování

ROCm

  • Co je to ROCm?
  • Jaké jsou výhody a nevýhody této technologie?
  • Nastavení vývojového prostředí pro ROCm
  • Vytvoření jednoduchého programu v ROCm určeného k součítání vektorů
  • Použití API ROCm k zjišťování informací o zařízení, alokaci a uvolňování paměti na GPU, přenosu dat mezi počítačem a procesorem, spouštění výpočtů i synchronizaci vláken
  • Psaní jáder pro GPU s využitím jazyka ROCm C/C++
  • Využití vestavěných funkcí, proměnných a knihovny k vykonávání běžných operací
  • Volba vhodných typů paměti – globální, lokální, konstantní či soukromé – za účelem optimalizace přenosu a přístupu k datům
  • Řízení struktury paralelních výpočtů pomocí modelů vláken, bloků a mřížek definovaných v ROCm
  • Odstraňování chyb a testování programů s použitím nástrojů jako ROCm Debugger a ROCm Profiler
  • Optimalizace výkonu programů prostřednictvím shlukování operací, využití mezipaměti, předběžného načítání a profilování

Srovnávací analýza

  • Porovnání funkčnosti, výkonnosti a kompatibility technologií OpenCL, CUDA a ROCm
  • Hodnocení programů na GPU s využitím benchmarků a měřitelných ukazatelů
  • Základní postupy a tipy pro efektivní programování na GPU
  • Pohled na aktuální i budoucí trendy a výzvy v oblasti vývoje pro GPU

Závěr a další kroky

Požadavky

  • Znalost programovacího jazyka C/C++ a základních konceptů paralelního programování
  • Orientace v architektuře počítače a hierarchii paměti
  • Praxe s nástroji příkazového řádku a textovými editory

Pro koho je kurz určen?

  • Vývojáři, kteří chtějí ovládnout různé frameworky pro programování na GPU a porovnat jejich funkčnost, výkonnost i vzájemnou kompatibilitu
  • Programátoři s touhou psát přenositelný a škálovatelný kód schopný běžet na různých platformách i zařízeních
  • Osoby zabývající se programováním, které chtějí lépe porozumět výhodám a omezením souvisejícím s vývojem pro GPU
 28 Hodiny

Počet účastníků


Cena za účastníka

Nadcházející kurzy

Související kategorie