Kurzusleírás

Bevezetés

  • Mi az OpenCL?
  • OpenCL vs CUDA vs SYCL
  • OpenCL funkciók és architektúra áttekintése
  • Fejlesztőkörnyezet beállítása

Kezdés

  • Új OpenCL projekt létrehozása Visual Studio Code használatával
  • Projekt szerkezetének és fájljainak felfedezése
  • Program fordítása és futtatása
  • Kimenet megjelenítése printf és fprintf használatával

OpenCL API

  • OpenCL API szerepe a host programban
  • Eszköz információk és képességek lekérdezése OpenCL API segítségével
  • OpenCL API használata kontextusok, parancssorok, pufferek, kernel-ek és események létrehozására
  • Parancsok sorrendbe állítása OpenCL API segítségével, például olvasás, írás, másolás, leképezés, visszaállítás, végrehajtás és várakozás
  • Hibák és kivételek kezelése OpenCL API segítségével

OpenCL C

  • OpenCL C szerepe az eszköz programokban
  • Kernel-ek írása OpenCL C segítségével, amelyek az eszközön futnak és adatokkal manipulálnak
  • OpenCL C adattípusok, kvalifikátorok, operátorok és kifejezések használata
  • OpenCL C beépített függvények használata, például matematikai, geometriai, relatív függvények stb.
  • OpenCL C bővítmények és könyvtárak használata, például atomos, kép, cl_khr_fp16 stb.

OpenCL Memóriamodell

  • Host és eszköz memóriamodellek különbsége
  • OpenCL memóriaterületek használata, például globális, helyi, állandó és privát memóriaterületek
  • OpenCL memóriatárgyak használata, például pufferek, képek és csövek
  • OpenCL memóriahozzáférési módok használata, például csak olvasás, csak írás, olvasás-írás
  • OpenCL memóriakonszisztencia modell és szinkronizációs mechanizmusok használata

OpenCL Végrehajtási modell

  • Host és eszköz végrehajtási modell különbsége
  • OpenCL munkaelők, munkacsoportok és ND-tartományok használata a párhuzamosítás meghatározásához
  • OpenCL munkaelő 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

  • Gyakori hibák és hibák OpenCL programokban
  • Visual Studio Code hibakereső használata változók, töréspontok, hívási stack vizsgálatához stb.
  • CodeXL használata OpenCL programok hibakeresésére és elemzésére AMD eszközökön
  • Intel VTune használata OpenCL programok hibakeresésére és elemzésére Intel eszközökön
  • NVIDIA Nsight használata OpenCL programok hibakeresésére és elemzésére NVIDIA eszközökön

Optimalizálás

  • A OpenCL programok teljesítményét befolyásoló tényezők megértése
  • OpenCL vektor adattípusok és vektorosítási technikák használata az aritmetikai átszámítás sebességének növeléséhez
  • OpenCL ciklusfejlesztés és ciklusburkolódás technikák használata a vezérlési feladatok csökkentéséhez és a lokalitás növeléséhez
  • OpenCL helyi memóriatárgyak és helyi memóriafüggvények használata a memóriahozzáférések és a sávszélesség optimalizálására
  • OpenCL profilozás és profilozási eszközök használata a futási idő és erőforráshasználat mérésére és javítására

Összegzés és következő lépések

Követelmények

  • A C/C++ nyelv és a párhuzamos programozás alapelveinek megértése
  • Az alapvető ismeretek számítógép-architektúrával és memóriahierarchiával kapcsolatban
  • Tapasztalat parancssori eszközökkel és kódszerkesztőkkel

Audience

  • Fejlesztők, akik meg szeretnék tanulni, hogyan lehet használni a OpenCL-t a különböző eszközök programozására és a párhuzamosítás kihasználására
  • Fejlesztők, akik portáblis és skalálható kódot szeretnének írni, amely különböző platformokon és eszközökön futtatható
  • Programozók, akik meg szeretnék tanulni a heterogén programozás alacsony szintű aspektusait és optimalizálni a kód teljesítményét
 28 Órák

Résztvevők száma


Ár résztvevőnként

Közelgő kurzusok

Rokon kategóriák