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 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í nového projektu OpenACC pomocí Visual Studio Code
- Prozkoumání struktury projektu a souborů
- Kompilace a spuštění programu
- Zobrazení výstupu pomocí printf a fprintf
Směrnice a doložky OpenACC
- Pochopení role direktiv a klauzulí OpenACC v kódu hostitele a zařízení
- Použití paralelní směrnice a klauzulí OpenACC k vytvoření paralelních oblastí a určení počtu gangů, pracovníků a vektorů
- Použití direktivy a klauzulí jádra OpenACC k vytvoření oblastí jader a nechat kompilátor rozhodnout o paralelismu
- Použití direktivy a klauzulí smyčky OpenACC k paralelizaci smyček a určení distribuce smyček, sbalení, zmenšení a dlaždice
- Použití datové direktivy a klauzulí OpenACC ke správě pohybu dat a datových oblastí
- Použití aktualizační direktivy a klauzulí OpenACC k synchronizaci dat mezi hostitelem a zařízením
- Použití direktivy a klauzulí mezipaměti OpenACC ke zlepšení opětovného použití dat a umístění
- Použití direktivy a klauzulí rutiny OpenACC k vytvoření funkcí zařízení a určení typu funkce a délky vektoru
- Použití čekací direktivy a klauzulí OpenACC k synchronizaci událostí a závislostí
OpenACC API
- Pochopení role OpenACC API v hostitelském programu
- Použití OpenACC API k dotazování na informace o zařízení a možnosti
- Použití OpenACC API k nastavení čísla zařízení a typu zařízení
- Použití OpenACC API ke zpracování chyb a výjimek
- Použití OpenACC API k vytváření a synchronizaci událostí
Knihovny OpenACC a interoperabilita
- Pochopení role knihoven OpenACC a funkcí interoperability v programu zařízení
- Používání knihoven OpenACC, jako jsou matematické, náhodné a komplexní, k provádění běžných úkolů a operací
- Použití funkcí interoperability OpenACC, jako je deviceptr, use_device a acc_memcpy, k integraci OpenACC s jinými programovacími modely, jako je CUDA, OpenMP a MPI
- Použití funkcí interoperability OpenACC, jako jsou host_data a deklarace, k integraci OpenACC s knihovnami GPU, jako jsou cuBLAS a cuFFT
Nástroje OpenACC
- Pochopení role nástrojů OpenACC v procesu vývoje
- Použití nástrojů OpenACC k profilování a ladění programů OpenACC a identifikaci překážek výkonu a příležitostí
- Používání nástrojů OpenACC, jako je PGI Compiler, NVIDIA Nsight Systems a Allinea Forge, k měření a zlepšování doby provádění a využití zdrojů
Optimalizace
- Pochopení faktorů, které ovlivňují výkon programů OpenACC
- Použití direktiv a klauzulí OpenACC k optimalizaci datové lokality a snížení datových přenosů
- Použití direktiv a klauzulí OpenACC k optimalizaci paralelismu a fúze smyček
- Použití direktiv a klauzulí OpenACC k optimalizaci paralelismu a fúze jádra
- Použití direktiv a klauzulí OpenACC k optimalizaci vektorizace a automatického ladění
Shrnutí a další kroky
Požadavky
- Pochopení jazyka C/C++ nebo Fortran a konceptů paralelního programování
- Základní znalosti architektury počítačů a hierarchie paměti
- Zkušenosti s nástroji příkazového řádku a editory kódu
Publikum
- Vývojáři, kteří se chtějí naučit používat OpenACC k programování heterogenních zařízení a využívat jejich paralelismus
- Vývojáři, kteří chtějí psát přenosný a škálovatelný kód, který může běžet na různých platformách a zařízeních
- Programátoři, kteří chtějí prozkoumat aspekty heterogenního programování na vysoké úrovni a optimalizovat produktivitu svého kódu
28 hodiny