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 Hours

Résztvevők száma



Ár per résztvevő

Vélemények (1)

Rokon tanfolyam

GPU Programming with CUDA

28 Hours

GPU Programming - OpenCL vs CUDA vs ROCm

28 Hours

AMD GPU Programming

28 Hours

ROCm for Windows

21 Hours

Introduction to GPU Programming

21 Hours

GPU Programming with OpenACC

28 Hours

Rokon kategóriák