Lépjen kapcsolatba velünk
 Időtartalma 28 órák

Kurzusleírás

Bevezetés

  • Mi az OpenCL?
  • OpenCL vs. CUDA vs. SYCL
  • Áttekintés az OpenCL funkcióiról és architektúrájáról
  • Fejlesztői környezet beállítása

Előkészületek

  • Új OpenCL projekt létrehozása Visual Studio Code segítségével
  • A projekt szerkezetének és fájljainak felfedezése
  • A program fordítása és futtatása
  • A kimenet megjelenítése printf és fprintf segítségével

OpenCL API

  • Az OpenCL API szerepének megértése a host programban
  • Az OpenCL API használata az eszközinformációk és képességek lekérdezésére
  • Az OpenCL API használata kontextusok, parancskörök, puferek, kernel-függvények és események létrehozására
  • Az OpenCL API használata parancsok sorbaállítására, mint például olvasás, írás, másolás, térkép, leképezés, végrehajtás és várakozás
  • Az OpenCL API használata hibák és kivételek kezelésére

OpenCL C

  • Az OpenCL C szerepének megértése az eszközprogramban
  • Az OpenCL C használata olyan kernel-függvények írására, amelyek az eszközön futnak és adatokat manipulálnak
  • Az OpenCL C adattípusok, minősítők, operátorok és kifejezések használata
  • Az OpenCL C beépített függvények használata, például matematikai, geometriai, relációs stb.
  • Az OpenCL C kiterjesztések és könyvtárak használata, például atomi, kép, cl_khr_fp16 stb.

OpenCL memória modell

  • A host és az eszköz memória modellek közötti különbségek megértése
  • OpenCL memória területek használata, például globális, lokális, konstans és privát
  • OpenCL memóriatárgyak használata, például puferek, képek és csövek
  • OpenCL memória hozzáférési módok használata, például csak-olvasás, csak-írás, olvasás-írás stb.
  • OpenCL memória koherencia modell és szinkronizációs mechanizmusok használata

OpenCL végrehajtási modell

  • A host és az eszköz végrehajtási modellek közötti különbségek megértése
  • OpenCL munkaelemek, munkacsoportok és ND-tartományok használata a párhuzamosítás meghatározásához
  • OpenCL munkaelem-függvények használata, például get_global_id, get_local_id, get_group_id stb.
  • OpenCL munkacsoport-függvények használata, például barrier, work_group_reduce, work_group_scan stb.
  • OpenCL eszközfüggvények használata, például get_num_groups, get_global_size, get_local_size stb.

Hibakeresés

  • Az OpenCL programokban előforduló gyakori hibák és bugok megértése
  • Visual Studio Code hibakereső használata változók, tördelési pontok, hívási pila stb. vizsgálatára
  • CodeXL használata OpenCL programok hibakerésére és elemzésére AMD eszközökön
  • Intel VTune használata OpenCL programok hibakerésére és elemzésére Intel eszközökön
  • NVIDIA Nsight használata OpenCL programok hibakerésére és elemzésére NVIDIA eszközökön

Optimalizálás

  • Tényezők megértése, amelyek befolyásolják az OpenCL programok teljesítményét
  • OpenCL vektoros adattípusok és vektörizációs technikák használata az aritmetikai sávszélesség javításához
  • OpenCL ciklus bontás és ciklus csempézés technikák használata a vezérlési overhead csökkentésére és a lokalitás növelésére
  • OpenCL lokális memória és lokális memória függvények használata a memória-hozzáférések és a sávszélesség optimalizálásához
  • OpenCL profilozás és profilozási eszközök használata a futási idő és az erőforrás-kihasználás mérésére és javítására

Követelmények

  • A C/C++ nyelv és a párhuzamos programozás alapjai ismerete
  • Alapszintű tudás a számítógép-architektúráról és a memória-hirarchiáról
  • Tapasztalat parancssori eszközök és kódszerkesztők használatában

Célcsoport

  • Fejlesztők, akik meg szeretnék tanulni, hogyan használják az OpenCL-t a heterogén eszközök programozásához és párhuzamoságuk kiaknázásához
  • Fejlesztők, akik hordozható és skálázható kódot szeretnének írni, amely különböző platformokon és eszközökön fut
  • Programozók, akik felfedezni szeretnék a heterogén programozás alacsony szintű aspektusait és optimalizálni kívánják kódjuk teljesítményét

Résztvevők száma


Ár per résztvevő

Közelgő kurzusok

Rokon kategóriák