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.
Doba trvání 28 hodiny
Návrh Školení
Úvod
- Co je OpenACC?
- OpenACC vs. OpenCL vs. CUDA vs. SYCL
- Přehled funkcí a architektury OpenACC
- Nastavení vývojového prostředí
Začínáme
- Vytvoření projektu v OpenACC ve Visual Studio Code
- Prozkoumání struktury a souborů projektu
- Kompilace a spuštění programu
- Zobrazení výstupu pomocí printf a fprintf
Direktivy a klauzule OpenACC
- Pochopení direktiv a klauzulí OpenACC
- Použití paralelních direktiv pro vytvoření paralelních oblastí
- Využití direktiv typu kernels ke správě paralelismu kompilátorem
- Využití direktiv určených k paralelizaci cyklů
- Správa přenosů dat pomocí direktiv pro data
- Synchronizace dat za použití direktiv typu update
- Zlepšení opětovného využití dat díky direktivám určeným k práci s mezipamětí
- Vytváření funkcí pro zařízení pomocí direktiv typu routine
- Synchronizace událostí za využití direktiv wait
API OpenACC
- Pochopení úlohy API OpenACC
- Zjišťování informací o zařízeních a jejich schopnostech
- Nastavení počtu a typu využitých zařízení
- Řešení chyb a výjimek
- Vytváření a synchronizace událostí
Knihovny OpenACC a jejich interoperabilita
- Pochopení knihoven OpenACC a možností interoperability
- Využívání matematických, náhodných a komplexních knihoven
- Integrace s jinými modely (CUDA, OpenMP, MPI)
- Spolupráce s GPU knihovnami (cuBLAS, cuFFT)
Nástroje pro OpenACC
- Přehled nástrojů určených k práci s OpenACC během vývoje
- Profilování a ladění programů v OpenACC
- Analýza výkonu pomocí kompilátoru PGI, NVIDIA Nsight Systems či Allinea Forge
Optimalizace
- Faktory ovlivňující výkon programů v OpenACC
- Optimalizace lokality dat a snížení počtu přenosů dat
- Zlepšování paralelismu cyklů a jejich sloučení
- Optimalizace paralelnosti jáderek a jejich kombinace
- Další optimalizace – vektorizace a automatické ladění
Shrnutí a další kroky
Požadavky
- Znalost jazyka C/C++ nebo Fortran a základních konceptů paralelního programování
- Základní povědomí o architektuře počítače a hierarchii pamětí
- Zkušenosti s používáním nástrojů příkazového řádku a editorů kódu
Cílová skupina
- Vývojáři, kteří se chtějí naučit využívat OpenACC k programování heterogenních systémů a jejich paralelizaci
- Programátory, kteří touží psát přenositelný a škálovatelný kód spustitelný na různých platformách a zařízeních
- Programátoři zájemci o prozkoumání vyšší úrovně heterogenního programování a chtějící zvýšit svou produktivitu při tvorbě kódu