Kurzusleírás

Bevezetés

  • Mi az a CUDA?
  • CUDA kontra OpenCL vs SYCL
  • A CUDA jellemzőinek és architektúrájának áttekintése
  • A Fejlesztési Környezet kialakítása

Elkezdeni

  • Új CUDA 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

CUDA API

  • A CUDA API szerepének megértése a gazdagép programban
  • CUDA API használata az eszközinformációk és képességek lekérdezésére
  • CUDA API használata az eszközmemória lefoglalására és felszabadítására
  • CUDA API használata adatok másolására a gazdagép és az eszköz között
  • CUDA API használata kernelek indításához és szálak szinkronizálásához
  • CUDA API használata a hibák és kivételek kezelésére

CUDA C/C++

  • A CUDA C/C++ szerepének megértése az eszközprogramban
  • A CUDA C/C++ használata olyan kernelek írásához, amelyek az GPU-en futnak és adatokat kezelnek
  • CUDA C/C++ adattípusok, minősítők, operátorok és kifejezések használata
  • A CUDA C/C++ beépített függvényeinek használata, például matematikai, atomi, vetemítési stb.
  • CUDA C/C++ beépített változók használata, például threadIdx, blockIdx, blockDim stb.
  • CUDA C/C++ könyvtárak használata, például cuBLAS, cuFFT, cuRAND stb.

CUDA memória modell

  • A gazdagép és az eszközmemória modellek közötti különbség megértése
  • CUDA memóriaterületek használata, például globális, megosztott, állandó és helyi
  • CUDA memóriaobjektumok, például mutatók, tömbök, textúrák és felületek használata
  • CUDA memória-elérési módok használata, például csak olvasható, csak írható, olvasási-írási stb.
  • CUDA memória konzisztencia modell és szinkronizálási mechanizmusok használata

CUDA 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
  • CUDA-szálak, blokkok és rácsok használata a párhuzamosság meghatározásához
  • CUDA szálfüggvények használata, például threadIdx, blockIdx, blockDim stb.
  • CUDA blokkfüggvények használata, például __syncthreads, __threadfence_block stb.
  • CUDA rácsfunkciók használata, például gridDim, gridSync, együttműködési csoportok stb.

Hibakeresés

  • A CUDA programok gyakori hibáinak és hibáinak megértése
  • A Visual Studio kódhibakereső használata változók, töréspontok, veremhívások stb. vizsgálatához.
  • CUDA-GDB használata a CUDA programok hibakeresésére a Linux webhelyen
  • A CUDA-MEMCHECK használata memóriahibák és szivárgások észlelésére
  • Az NVIDIA Nsight használata a CUDA programok hibakeresésére és elemzésére Windows rendszeren

Optimalizálás

  • A CUDA programok teljesítményét befolyásoló tényezők megértése
  • CUDA egyesülési technikák használata a memória átviteli sebességének javítására
  • CUDA gyorsítótárazási és előzetes letöltési technikák használata a memória késleltetésének csökkentése érdekében
  • CUDA megosztott memória és helyi memória technikák használata a memóriaelérések és a sávszélesség optimalizálására
  • CUDA profilalkotási é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 a CUDA használatát az NVIDIA GPU programozására és a párhuzamosságuk kihasználására
  • Fejlesztők, akik nagy teljesítményű és méretezhető kódot szeretnének írni, amely különböző CUDA-eszközökön futhat
  • Programozók, akik szeretnék felfedezni a GPU programozás alacsony szintű aspektusait, és optimalizálni szeretnék kódteljesítményüket
 28 Hours

Résztvevők száma



Ár per résztvevő

Vélemények (1)

Rokon tanfolyam

GPU Programming with OpenCL

28 Hours

GPU Programming - OpenCL vs CUDA vs ROCm

28 Hours

AMD GPU Programming

28 Hours

ROCm for Windows

21 Hours

Introduction to GPU Programming

21 Hours

GPU Programming with OpenACC

28 Hours

Rokon kategóriák