Kurzusleírás

Bevezetés

  • Mi a GPU programozás?
  • Miért használjunk GPU programozást?
  • Mik a GPU programozás kihívásai és kompromisszumai?
  • Milyen keretrendszerek és eszközök állnak rendelkezésre a GPU programozáshoz?
  • A megfelelő keretrendszer és eszköz kiválasztása az alkalmazáshoz

OpenCL

  • Mi az OpenCL?
  • Mik az OpenCL előnyei és hátrányai?
  • Fejlesztői környezet beállítása OpenCL-hez
  • Alapvető OpenCL program létrehozása, amely vektorösszeadást hajt végre
  • OpenCL API használata az eszköz információk lekérdezéséhez, eszközmemória lefoglalásához és felszabadításához, adatok másolásához a hoszt és az eszköz között, kernel indításához és szálak szinkronizálásához
  • OpenCL C nyelv használata kernel írásához, amely az eszközön fut és adatokat kezel
  • OpenCL beépített függvények, változók és könyvtárak használata gyakori feladatok és műveletek végrehajtásához
  • OpenCL memóriaterek, például globális, lokális, konstans és privát terület használata az adatátvitel és memória-hozzáférés optimalizálásához
  • OpenCL végrehajtási modell használata a párhuzamosságot meghatározó munkaegységek, munkacsoportok és ND-tartományok szabályozásához
  • Hibakeresés és tesztelés OpenCL programokon olyan eszközök használatával, mint a CodeXL
  • OpenCL programok optimalizálása olyan technikák használatával, mint az összevonás, gyorsítótárazás, előzetes betöltés és profilozás

CUDA

  • Mi a CUDA?
  • Mik a CUDA előnyei és hátrányai?
  • Fejlesztői környezet beállítása CUDA-hoz
  • Alapvető CUDA program létrehozása, amely vektorösszeadást hajt végre
  • CUDA API használata az eszköz információk lekérdezéséhez, eszközmemória lefoglalásához és felszabadításához, adatok másolásához a hoszt és az eszköz között, kernel indításához és szálak szinkronizálásához
  • CUDA C/C++ nyelv használata kernel írásához, amely az eszközön fut és adatokat kezel
  • CUDA beépített függvények, változók és könyvtárak használata gyakori feladatok és műveletek végrehajtásához
  • CUDA memóriaterek, például globális, megosztott, konstans és lokális terület használata az adatátvitel és memória-hozzáférés optimalizálásához
  • CUDA végrehajtási modell használata a párhuzamosságot meghatározó szálak, blokkok és rácsok szabályozásához
  • Hibakeresés és tesztelés CUDA programokon olyan eszközök használatával, mint a CUDA-GDB, CUDA-MEMCHECK és NVIDIA Nsight
  • CUDA programok optimalizálása olyan technikák használatával, mint az összevonás, gyorsítótárazás, előzetes betöltés és profilozás

ROCm

  • Mi a ROCm?
  • Mik a ROCm előnyei és hátrányai?
  • Fejlesztői környezet beállítása ROCm-hez
  • Alapvető ROCm program létrehozása, amely vektorösszeadást hajt végre
  • ROCm API használata az eszköz információk lekérdezéséhez, eszközmemória lefoglalásához és felszabadításához, adatok másolásához a hoszt és az eszköz között, kernel indításához és szálak szinkronizálásához
  • ROCm C/C++ nyelv használata kernel írásához, amely az eszközön fut és adatokat kezel
  • ROCm beépített függvények, változók és könyvtárak használata gyakori feladatok és műveletek végrehajtásához
  • ROCm memóriaterek, például globális, lokális, konstans és privát terület használata az adatátvitel és memória-hozzáférés optimalizálásához
  • ROCm végrehajtási modell használata a párhuzamosságot meghatározó szálak, blokkok és rácsok szabályozásához
  • Hibakeresés és tesztelés ROCm programokon olyan eszközök használatával, mint a ROCm Debugger és ROCm Profiler
  • ROCm programok optimalizálása olyan technikák használatával, mint az összevonás, gyorsítótárazás, előzetes betöltés és profilozás

HIP

  • Mi a HIP?
  • Mik a HIP előnyei és hátrányai?
  • Fejlesztői környezet beállítása HIP-hez
  • Alapvető HIP program létrehozása, amely vektorösszeadást hajt végre
  • HIP nyelv használata kernel írásához, amely az eszközön fut és adatokat kezel
  • HIP beépített függvények, változók és könyvtárak használata gyakori feladatok és műveletek végrehajtásához
  • HIP memóriaterek, például globális, megosztott, konstans és lokális terület használata az adatátvitel és memória-hozzáférés optimalizálásához
  • HIP végrehajtási modell használata a párhuzamosságot meghatározó szálak, blokkok és rácsok szabályozásához
  • Hibakeresés és tesztelés HIP programokon olyan eszközök használatával, mint a ROCm Debugger és ROCm Profiler
  • HIP programok optimalizálása olyan technikák használatával, mint az összevonás, gyorsítótárazás, előzetes betöltés és profilozás

Összehasonlítás

  • Az OpenCL, CUDA, ROCm és HIP funkcióinak, teljesítményének és kompatibilitásának összehasonlítása
  • GPU programok értékelése benchmarkok és metrikák segítségével
  • A GPU programozás legjobb gyakorlatainak és tippjeinek megismerése
  • A GPU programozás aktuális és jövőbeli trendjeinek és kihívásainak feltárása

Összefoglalás és következő lépések

Követelmények

  • A C/C++ nyelv és a párhuzamos programozás alapjainak ismerete
  • Alapvető ismeretek a számítógép architektúráról és a memóriahierarchiáról
  • Tapasztalat parancssori eszközökkel és kódszerkesztőkkel

Célközönség

  • Fejlesztők, akik meg szeretnék ismerni a GPU programozás alapjait és a GPU alkalmazások fejlesztéséhez szükséges főbb keretrendszereket és eszközöket
  • Fejlesztők, akik hordozható és skálázható kódot szeretnének írni, amely különböző platformokon és eszközökön futtatható
  • Programozók, akik szeretnék felfedezni a GPU programozás és optimalizálás előnyeit és kihívásait
 21 Órák

Résztvevők száma


Ár per résztvevő

Közelgő kurzusok

Rokon kategóriák