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 OpenACC v Visual Studio Code
  • Průzkum struktury projektu a souborů
  • Kompilace a spuštění programu
  • Zobrazení výstupu pomocí printf a fprintf

Direktivy a klauzule OpenACC

  • Pochopení direktiv a klauzel OpenACC
  • Použití paralelních direktiv pro vytváření paralelních oblastí
  • Použití direktiv jádra pro správu paralelismu kompilátorem
  • Použití smyčkových direktiv pro parallelizaci smyček
  • Správa přesunu dat pomocí datových direktiv
  • Synchronizace dat pomocí aktualizačních direktiv
  • Vylepšení opakování používání dat s cachovými direktivami
  • Vytváření funkce zařízení pomocí rutinních direktiv
  • Synchronizace událostí pomocí wait direktiv

API OpenACC

  • Pochopení role API OpenACC
  • Dotazování informací a schopností zařízení
  • Nastavení čísla a typu zařízení
  • Zpracování chyb a výjimek
  • Vytváření a synchronizace událostí

Knihovny OpenACC a interoperabilita

  • Pochopení knihoven OpenACC a interoperability
  • Použití matematických, náhodných a komplexních knihoven
  • Integrování s jinými modely (CUDA, OpenMP, MPI)
  • Integrování s knihovnami GPU (cuBLAS, cuFFT)

Nástroje OpenACC

  • Pochopení nástrojů OpenACC vývoje
  • Profilování a ladění programů OpenACC
  • Výkonnostní analýza s PGI Compiler, NVIDIA Nsight Systems, Allinea Forge

Optimalizace

  • Faktory ovlivňující výkon programu OpenACC
  • Optimalizace lokality dat a snížení přenosů
  • Optimalizace paralelismu smyček a fúze
  • Optimalizace paralelismu jádra a fúze
  • Optimalizace vektorizace a automatického ladění

Souhrn a další kroky

Požadavky

  • Pochopení jazyku C/C++ nebo Fortran a konceptů paralelního programování
  • Základní znalost počítačové architektury a hierarchie paměti
  • Pracovní zkušenosti s příkazovými nástroji a kódovacími editory

Cílová skupina

  • Programátoři, kteří se chtějí naučit používat OpenACC pro programování heterogenních zařízení a využívat jejich paralelismus
  • Programátoři, kteří se chtějí učit 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ří se chtějí věnovat vysokoúrovňovým aspektům heterogenního programování a optimalizaci produktivity svého kódu
 28 hodiny

Počet účastníků


Cena za účastníka

Nadcházející kurzy

Související kategorie