Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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
Vélemények (1)
Nagyon interaktív különféle példákkal, a képzés kezdete és vége között jó összetettséggel.
Jenny - Andheo
Kurzus - GPU Programming with CUDA and Python
Machine Translated