Kurzusleírás

Bevezetés

  • Mi az a OpenCL?
  • OpenCL vs CUDA vs SYCL
  • A OpenCL szolgáltatások és architektúra áttekintése
  • A Fejlesztési Környezet kialakítása

Elkezdeni

  • Új OpenCL projekt létrehozása Visual Studio kóddal
  • A projekt szerkezetének és fájljainak feltárása
  • A program összeállítása és futtatása
  • A kimenet megjelenítése a printf és fprintf használatával

OpenCL API

  • A OpenCL API szerepének megértése a gazdagép programban
  • A OpenCL API használata az eszközinformációk és képességek lekérdezésére
  • A OpenCL API használata kontextusok, parancssorok, pufferek, kernelek és események létrehozására
  • A OpenCL API használata parancsok sorba állításához, például olvasás, írás, másolás, leképezés, leképezés megszüntetése, végrehajtás és várakozás
  • A OpenCL API használata a hibák és kivételek kezelésére

OpenCL C

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

OpenCL Memóriamodell

  • A gazdagép és az eszközmemória modellek közötti különbség megértése
  • OpenCL memóriaterületek használata, például globális, lokális, állandó és privát
  • OpenCL memóriaobjektumok, például pufferek, képek és csövek használata
  • OpenCL memória-elérési módok használata, például csak olvasható, csak írható, írás-olvasás stb.
  • OpenCL memória konzisztencia modell és szinkronizálási mechanizmusok használata

OpenCL Végrehajtási modell

  • A gazdagép és az 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á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

  • A OpenCL programok gyakori hibáinak és hibáinak megértése
  • Az Visual Studio kódhibakereső használata változók, töréspontok, veremhívás stb. vizsgálatához.
  • 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
  • Az NVIDIA Nsight használata OpenCL programok hibakeresésére és elemzésére NVIDIA eszközökön

Optimalizálás

  • A OpenCL program teljesítményét befolyásoló tényezők megértése
  • OpenCL vektoros adattípusok és vektorizálási technikák használata az aritmetikai átviteli sebesség javítására
  • OpenCL huroktekercselési és hurokcsempézési technikák használata az irányítási többlet csökkentése és a lokalitás növelése érdekében
  • A OpenCL helyi memória és a helyi memória funkciók használata a memóriaelérések és a sávszélesség optimalizálására
  • A OpenCL profilkészítő és profilkészítő eszközök használata a végrehajtási idő és az erőforrás-kihasználás mérésére és javítására

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

Követelmények

  • A C/C++ nyelv és a párhuzamos programozási fogalmak megértése
  • Számítógép-architektúra és memóriahierarchia alapismeretei
  • Parancssori eszközökben és kódszerkesztőkben szerzett tapasztalat

Közönség

  • Fejlesztők, akik szeretnék megtanulni az OpenCL használatát heterogén eszközök programozására és párhuzamosságuk kihasználására
  • Fejlesztők, akik hordozható és méretezhető kódot szeretnének írni, amely különböző platformokon és eszközökön futhat
  • Programozók, akik szeretnék felfedezni a heterogén programozás alacsony szintű aspektusait, és optimalizálni kívánják kódteljesítményüket
 28 Órák

Résztvevők száma


Ár résztvevőnként

Vélemények (2)

Közelgő kurzusok

Rokon kategóriák