Zkuste nás kontaktovat

Návrh Školení

Úvod

  • Co je to ROCm?
  • Co je to HIP?
  • Srovnání ROCm, CUDA a OpenCL
  • Přehled funkcí a architektury platformy ROCm i jazyka HIP
  • Nastavení vývojového prostředí

První kroky

  • Vytváření nových projektů v ROCm s využitím Visual Studio Code.
  • Prozkoumání struktury a jednotlivých souborů v rámci takového projektu.
  • Kompilace a spuštění výsledného programu.
  • Zobrazení výstupu pomocí funkcí typu printf a fprintf.

API platformy ROCm

  • Pochopení role tohoto API v hostitelském programu.
  • Využívání API k zjišťování informací o zařízeních a jejich schopnostech.
  • Alokace i uvolňování paměti na GPU pomocí tohoto rozhraní.
  • Přenos dat mezi hostitelským počítačem a grafickým procesorem za pomoci API.
  • Spuštění kernelů a synchronizace vláken s využitím nabízených funkcí.
  • Řešení chyb a výjimek prostřednictvím tohoto rozhraní.

Jazyk HIP

  • Pochopení role tohoto jazyka v programech určených k běhu na grafickém procesoru.
  • Psaní kernelů pomocí HIP, jež spouštějí výpočty a manipulují s daty.
  • Používání datových typů, modifikátorů, operátorů a výrazů v rámci tohoto jazyka.
  • Využití vestavěných funkcí, proměnných i knihoven HIP k vykonávání běžných činností.

Paměťový model v ROCm a HIP

  • Rozdíly mezi modely paměti na hostitelském počítači a grafickém procesoru.
  • Využívání jednotlivých paměťových oblastí – globální, sdílené, konstantní či lokální.
  • Pracování s objekty typu ukazatelů, polí, textur či povrchů v rámci těchto pamětí.
  • Definování režimů přístupu k jednotlivým částem paměti – např. pouze ke čtení, pouze k zápisu apod.
  • Pochopení mechanismů zajišťujících konzistenci dat i jejich synchronizaci v rámci systému.

Model provádění v ROCm a HIP

  • Rozdíly mezi modely provádění na hostitelském počítači a grafickém procesoru.
  • Tvorba vláken, bloků i mřížek pomocí nástrojů zahrnutých v ROCm a HIP.
  • Používání speciálních funkcí pro manipulaci s jednotlivými vlákny (např. hipThreadIdx_x).
  • Využití blokovacích funkcí, jako je __syncthreads nebo __threadfence_block.
  • Pracování s mřížkami pomocí nástrojů typu hipGridDim_x, mechanismů synchronizace a skupin spolupracujících jednotek.

Ladění

  • Typické chyby a problémy vyskytující se při programování s použitím ROCm a HIP.
  • Ladění pomocí debugguru integrovaného v Visual Studio Code – kontrola proměnných, nastavování zarážek apod.
  • Práce s nástrojem ROCm Debugger určeným speciálně pro ladení kódu na zařízeních AMD.
  • Analýza chování programů pomocí profileru ROCm Profiler.

Optimalizace

  • Faktory ovlivňující rychlost a výkonnostní parametry programů založených na ROCm a HIP.
  • Využití technik typu sloučení přístupů k paměti za účelem lepšího využití její propustnosti.
  • Snižování latence pomocí ukládání dat do mezipaměti a předběžné načítání potřebných informací.
  • Využívání sdílené či lokální paměti v rámci ROCm a HIP k zvýšení efektivity jejich využití a optimalizaci přenosů dat.
  • Měření a zdokonalování výkonu pomocí nástrojů určených k profilování.

Závěr a další možnosti

Požadavky

  • Pochopení základů jazyka C/C++ a konceptů paralelního programování
  • Základní povědomí o architektuře počítačů a hierarchii pamětí
  • Praktické zkušenosti s používáním nástrojů příkazového řádku i editory kódu

Koho je kurz určen?

  • Vývojáři, kteří se chtějí naučit využívat platformy ROCm a HIP k programování GPU od společnosti AMD.
  • Tvůrci softwaru, kteří si přejí vytvářet vysoce výkonný kód škálovatelný i na různých zařízeních z rodiny AMD.
  • Programátoři zajímající se o hlubší aspekty programování GPU a snahu maximalizovat efektivitu vlastního kódu.
 28 Hodiny

Počet účastníků


Cena za účastníka

Nadcházející kurzy

Související kategorie