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