Kurzusleírás

Bevezetés

  • Mi az OpenCL?
  • OpenCL vs CUDA vs SYCL
  • Az OpenCL jellemzőinek és architektúrájának áttekintése
  • Fejlesztői környezet beállítása

Kezdő lépések

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

OpenCL API

  • Az OpenCL API szerepének megértése a hoszt programban
  • OpenCL API használata eszköz információk és képességek lekérdezésére
  • OpenCL API használata kontextusok, parancssorok, pufferek, magok és események létrehozására
  • OpenCL API használata parancsok sorba állítására, mint olvasás, írás, másolás, leképezés, leképezés megszüntetése, végrehajtás és várakozás
  • OpenCL API használata hibák és kivételek kezelésére

OpenCL C

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

OpenCL memóriamodell

  • A hoszt és eszköz memóriamodelljei közötti különbség megértése
  • OpenCL memóriaterületek használata, mint globális, helyi, konstans és privát
  • OpenCL memóriaobjektumok használata, mint pufferek, képek és csövek
  • OpenCL memóriahozzáférési módok használata, mint csak olvasás, csak írás, olvasás-írás stb.
  • OpenCL memóriakonzisztencia modell és szinkronizációs mechanizmusok használata

OpenCL végrehajtási modell

  • A hoszt és eszköz végrehajtási modelljei közötti különbség megértése
  • OpenCL munkaelemek, munkacsoportok és ND-tartományok használata a párhuzamosság meghatározására
  • OpenCL munkaelem függvények használata, mint get_global_id, get_local_id, get_group_id stb.
  • OpenCL munkacsoport függvények használata, mint barrier, work_group_reduce, work_group_scan stb.
  • OpenCL eszköz függvények használata, mint get_num_groups, get_global_size, get_local_size stb.

Hibakeresés

  • Az OpenCL programokban előforduló gyakori hibák és hibák megértése
  • Visual Studio Code hibakereső használata változók, töréspontok, hívási verem stb. vizsgálatára
  • 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áció

  • Az OpenCL programok teljesítményét befolyásoló tényezők megértése
  • OpenCL vektor adattípusok és vektorizációs technikák használata az aritmetikai teljesítmény javítására
  • OpenCL ciklusbontás és ciklusburkoló technikák használata a vezérlési terhek csökkentésére és a lokalitás növelésére
  • OpenCL helyi memória és helyi memória függvények használata memóriahozzáférés és sávszélesség optimalizálására
  • OpenCL profilozás és profilozó eszközök használata a végrehajtási idő és erőforrás-felhasználás mérésére és javítására

Összefoglalás és következő lépések

Követelmények

  • C/C++ nyelv és párhuzamos programozási alapok ismerete
  • Alapvető ismeretek a számítógép architektúráról és memóriahierarchiáról
  • Tapasztalat parancssori eszközökkel és kódszerkesztőkkel

Célközönség

  • Fejlesztők, akik szeretnék megtanulni, hogyan használják az OpenCL-t heterogén eszközök programozására és párhuzamosságuk kihasználására
  • 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 szeretnék felfedezni a heterogén programozás alacsony szintű aspektusait és optimalizálni kódjuk teljesítményét
 28 Órák

Résztvevők száma


Ár per résztvevő

Közelgő kurzusok

Rokon kategóriák