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.
Időtartalma 28 órák
Kurzusleírás
Bevezetés
- Mi a CUDA?
- CUDA vs OpenCL vs SYCL
- A CUDA funkciói és architektúrájának áttekintése
- A fejlesztői környezet beállítása
Első lépések
- Új CUDA projekt létrehozása Visual Studio Code használatával
- A projekt szerkezetének és fájljainak megvizsgálása
- A program fordítása és futtatása
- A kimenet megjelenítése printf és fprintf használatával
CUDA API
- A CUDA API szerepének megértése a host programban
- A CUDA API használatára az eszközinformációk és képességek lekérdezésére
- A CUDA API használatára a GPU memória fenntartására és felszabadítására
- A CUDA API használatára az adatok másolására a host és a device között
- A CUDA API használatára a kernel indítására és a szálak szinkronizálására
- A CUDA API használatára a hibák és kivételek kezelésére
CUDA C/C++
- A CUDA C/C++ szerepének megértése a device programban
- CUDA C/C++ használatára kernel írására, amelyek a GPU-n futnak és adatokat manipálnak
- CUDA C/C++ adattípusok, kvalifikátorok, operátorok és kifejezések használata
- CUDA C/C++ beépített függvények használata, mint pl. matek, atomi műveletek, warp stb.
- CUDA C/C++ beépített változók használata, mint pl. threadIdx, blockIdx, blockDim stb.
- CUDA C/C++ könyvtárak használata, mint pl. cuBLAS, cuFFT, cuRAND stb.
CUDA memóriamodell
- A host és a device memóriamodell közötti különbségek megértése
- CUDA memóriaterületek használata, mint pl. globális, megosztott, konstans, helyi
- CUDA memóriatárgyak használata, mint pl. mutatók, tömbök, textúrák és felületek
- CUDA memóriahozzáférési módok használata, mint pl. csak olvasható, csak írható, olvasni-írható stb.
- CUDA memóriakonstancia-modell és szinkronizációs mechanizmusok használata
CUDA végrehajtási modell
- A host és a device végrehajtási modell közötti különbségek megértése
- CUDA szálak, blokkok és rácsok használata a párhuzamosság definiálására
- CUDA szál-függvények használata, mint pl. threadIdx, blockIdx, blockDim stb.
- CUDA blokk-függvények használata, mint pl. __syncthreads, __threadfence_block stb.
- CUDA rács-függvények használata, mint pl. gridDim, gridSync, kooperatív csoportok stb.
Hibakeresés
- Az általános hibák és hibahelyek megértése CUDA programokban
- Visual Studio Code hibakereső használata változók vizsgálata, töréspontok, hívásstack stb.
- CUDA-GDB használata CUDA programok hibakerésére Linux-on
- CUDA-MEMCHECK használata memória-hibák és -szivárgások detektálására
- NVIDIA Nsight használata CUDA programok hibakerésére és elemzésére Windows-on
Optimalizálás
- Azok tényezők megértése, amelyek befolyásolják a CUDA programok teljesítményét
- CUDA memóriaegyesítés technikák használata a memóriakapacitás javítására
- CUDA cache-zés és előzetes betöltés technikák használata a memória-latencia csökkentésére
- CUDA megosztott memória és helyi memória technikák használata a memóriahozzáférések és sávszélesség optimalizálására
- CUDA profilozás és profilozási eszközök használata a futási idő és erőforrás-kihasználás mérése és javítása érdekében
Követelmények
- A C/C++ nyelv és a párhuzamos programozás alapfogalmainak megértése
- Alapvető ismeretek a számítógép-architektúráról és a memória-hierarchiáról
- Tapasztalat parancssori eszközök és kódszerkesztők használatában
Célcsoport
- Fejlesztők, akik szeretnének megtanulni a CUDA használatát NVIDIA GPU-k programozásához és párhuzamosságának kiakasztásához
- Fejlesztők, akik nagy teljesítményű és skálázható kódot szeretnének írni, amely különböző CUDA eszközökön futtatható
- Programozók, akik feltérképezni szeretnék a GPU programozás alacsony szintű aspektusait és optimalizálni a kódjuk teljesítményét