Kurzusleírás

Bevezetés

  • Mi az OpenACC?
  • OpenACC vs. OpenCL vs. CUDA vs. SYCL
  • Az OpenACC funkcióinak és architektúrájának áttekintése
  • A fejlesztői környezet beállítása

Első lépések

  • OpenACC projekt létrehozása a Visual Studio Code-ban
  • A projektszerkezet és fájlok áttekintése
  • A program fordítása és futtatása
  • Kimenet megjelenítése printf és fprintf segítségével

OpenACC irányelvek és zászlók

  • Az OpenACC irányelvek és zászlók megismerése
  • Párhuzamos irányelvek használata párhuzamos területek létrehozásához
  • Kernel irányelvek használata a fordítón által kezelt párhuzamosság érdekében
  • Hurok irányelvek használata a hurokok párhuzamosításához
  • Az adattér mozgatásának kezelése az adattér irányelvei segítségével
  • Az adattér szinkronizálása az update irányelvekkel
  • A gyorsítótár használatának javítása a gyorsítótár irányelvek segítségével
  • Eszközfüggvények létrehozása a routine irányelvekkel
  • Események szinkronizálása a wait irányelvekkel

OpenACC API

  • Az OpenACC API szerepének megismerése
  • Az eszköz információinak és képességeinek lekérdezése
  • Eszközsorszám és -típus beállítása
  • Hibák és kivételek kezelése
  • Események létrehozása és szinkronizálása

OpenACC könyvtárak és összeegyeztetés

  • Az OpenACC könyvtárak és az összeegyeztetés megismerése
  • Matek, véletlen számok és komplex könyvtárak használata
  • Egyéb modellekkel való integráció (CUDA, OpenMP, MPI)
  • GPU könyvtárakkal való integráció (cuBLAS, cuFFT)

OpenACC eszközök

  • A fejlesztés során használt OpenACC eszközök megismerése
  • OpenACC programok mértesek és hibakeresése
  • Teljesítményelemzés a PGI fordítóval, az NVIDIA Nsight Systems-szel és az Allinea Forgeddal

Optimalizálás

  • A tényezők, amelyek befolyásolják az OpenACC program teljesítményét
  • Az adattér helyi elhelyezésének optimalizálása és a továbbítás csökkentése
  • A hurokok párhuzamosításának és fúziójának optimalizálása
  • A kernelek párhuzamosításának és fúziójának optimalizálása
  • A vektorizáció és az automatikus hangolás optimalizálása

Összefoglalás és további lépések

Követelmények

  • Egy C/C++ vagy Fortran nyelvi ismeret és párhuzamos programozási fogalmak ismertsége
  • A számítógép architektúrájának és memóriarendszerének alapvető ismeretei
  • Komparhelyes eszközök és kód szerkesztők használatában való tapasztalatok

Célcsoport

  • Fejlesztők, akik OpenACC-vel szeretnének heterogén eszközöket programozni és kihasználni a párhuzamosításukat.
  • Fejlesztők, akik portálható és skálázható kódot szeretnének írni, amely más platformokon és eszközökön futtatható.
  • Programozók, akik a heterogén programozás magasabb szintű aspektusait szeretnének felfedezni és optimalizálni a kód termelékenységét.
 28 Órák

Résztvevők száma


Ár résztvevőnként

Közelgő kurzusok

Rokon kategóriák