Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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