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 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