Zkuste nás kontaktovat

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
 28 Hodiny

Počet účastníků


Cena za účastníka

Nadcházející kurzy

Související kategorie