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
- 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