Lépjen kapcsolatba velünk
 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

Résztvevők száma


Ár per résztvevő

Közelgő kurzusok

Rokon kategóriák