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

Počet účastníků



Price per participant

Reference (1)

Související kurzy

GPU Programming - OpenCL vs CUDA vs ROCm

28 hodiny

ROCm for Windows

21 hodiny

Související kategorie