Děkujeme za vaši dotaz! Jeden z našich pracovníků vás brzy kontaktuje.
Děkujeme za rezervaci! Jeden z našich pracovníků vás brzy kontaktuje.
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