Köszönjük, hogy elküldte érdeklődését! Csapatunk egyik tagja hamarosan felveszi Önnel a kapcsolatot.
Köszönjük, hogy elküldte foglalását! Csapatunk egyik tagja hamarosan felveszi Önnel a kapcsolatot.
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