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 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
Vélemények (2)
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
Gépi fordítás
Edzők energia és humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Kurzus - NVIDIA GPU Programming - Extended
Gépi fordítás