Kurzusleírás

Bevezetés

  • Mi az GPU programozás?
  • Miért érdemes az GPU programozást használni?
  • Melyek a GPU programozás kihívásai és kompromisszumai?
  • Melyek a GPU programozás keretrendszerei és eszközei?
  • Az alkalmazáshoz megfelelő keret és eszköz kiválasztása

OpenCL

  • Mi az a OpenCL?
  • Melyek a OpenCL előnyei és hátrányai?
  • A OpenCL fejlesztői környezetének beállítása
  • Vektor összeadást végrehajtó alap OpenCL program készítése
  • OpenCL API használata eszközinformációk lekérdezésére, eszközmemória lefoglalására és felszabadítására, adatok másolására a gazdagép és az eszköz között, kernelek indítására és szálak szinkronizálására
  • A OpenCL C nyelv használata olyan kernelek írásához, amelyek az eszközön futnak és adatokat kezelnek
  • OpenCL beépített függvények, változók és könyvtárak használata általános feladatok és műveletek végrehajtására
  • OpenCL memóriaterületek, például globális, lokális, állandó és privát memóriaterületek használata az adatátvitel és a memóriaelérés optimalizálására
  • A OpenCL végrehajtási modell használata a párhuzamosságot meghatározó munkaelemek, munkacsoportok és ND-tartományok vezérlésére
  • Programok hibakeresése és tesztelése OpenCL olyan eszközökkel, mint a CodeXL
  • Programok optimalizálása OpenCL olyan technikák használatával, mint az összevonás, gyorsítótár, előzetes letöltés és profilalkotás

CUDA

  • Mi az a CUDA?
  • Mik a CUDA előnyei és hátrányai?
  • A CUDA fejlesztői környezetének beállítása
  • Alapvető CUDA program létrehozása, amely vektor összeadást végez
  • CUDA API használata eszközinformációk lekérdezésére, eszközmemória lefoglalására és felszabadítására, adatok másolására a gazdagép és az eszköz között, kernelek indítására és szálak szinkronizálására
  • A CUDA C/C++ nyelv használata olyan kernelek írásához, amelyek az eszközön futnak és adatokat kezelnek
  • CUDA beépített függvények, változók és könyvtárak használata általános feladatok és műveletek végrehajtására
  • CUDA memóriaterületek, például globális, megosztott, állandó és helyi memóriaterületek használata az adatátvitel és a memóriaelérés optimalizálására
  • CUDA végrehajtási modell használata a párhuzamosságot meghatározó szálak, blokkok és rácsok vezérlésére
  • CUDA programok hibakeresése és tesztelése olyan eszközökkel, mint a CUDA-GDB, CUDA-MEMCHECK és az NVIDIA Nsight
  • CUDA programok optimalizálása olyan technikák használatával, mint az összevonás, gyorsítótár, előletöltés és profilalkotás

ROCm

  • Mi az a ROCm?
  • Melyek a ROCm előnyei és hátrányai?
  • A ROCm fejlesztői környezetének beállítása
  • Alapvető ROCm program létrehozása, amely vektorösszeadást végez
  • A ROCm API használata eszközinformációk lekérdezésére, eszközmemória lefoglalására és felszabadítására, adatok másolására a gazdagép és az eszköz között, kernelek indítására és szálak szinkronizálására
  • A ROCm C/C++ nyelv használata olyan kernelek írásához, amelyek az eszközön futnak és adatokat kezelnek
  • ROCm beépített függvények, változók és könyvtárak használata általános feladatok és műveletek végrehajtására
  • ROCm memóriaterületek, például globális, lokális, állandó és privát memóriaterületek használata az adatátvitel és a memóriaelérés optimalizálására
  • ROCm végrehajtási modell használata a párhuzamosságot meghatározó szálak, blokkok és rácsok vezérlésére
  • ROCm programok hibakeresése és tesztelése olyan eszközökkel, 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ár, előletöltés és profilalkotás

CSÍPŐ

  • Mi az a HIP?
  • Mik a HIP előnyei és hátrányai?
  • A HIP fejlesztői környezetének beállítása
  • Alapvető HIP program készítése, amely vektorösszeadást végez
  • HIP nyelv használata olyan kernelek írásához, amelyek az eszközön futnak és adatokat kezelnek
  • HIP beépített függvények, változók és könyvtárak használata általános feladatok és műveletek végrehajtására
  • HIP memóriaterületek, például globális, megosztott, állandó és lokális memóriaterületek használata az adatátvitel és a memóriaelérés optimalizálására
  • HIP végrehajtási modell használata a párhuzamosságot meghatározó szálak, blokkok és rácsok vezérlésére
  • HIP programok hibakeresése és tesztelése olyan eszközökkel, 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ár, előletöltés és profilalkotás

Összehasonlítás

  • A OpenCL, a CUDA, a ROCm és a HIP funkcióinak, teljesítményének és kompatibilitásának összehasonlítása
  • GPU programok kiértékelése benchmarkok és metrikák segítségével
  • A legjobb gyakorlatok és tippek elsajátítása a GPU programozáshoz
  • A GPU programozás jelenlegi és jövőbeli trendjeinek és kihívásainak feltárása

Összegzés és a következő lépés

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 GPU programozás alapjait, valamint az GPU alkalmazások fejlesztésének fő keretrendszereit és eszközeit
  • 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 GPU programozás és optimalizálás előnyeit és kihívásait
 21 Hours

Résztvevők száma



Ár per résztvevő

Vélemények (1)

Rokon tanfolyam

GPU Programming with OpenCL

28 Hours

GPU Programming with CUDA

28 Hours

GPU Programming - OpenCL vs CUDA vs ROCm

28 Hours

AMD GPU Programming

28 Hours

ROCm for Windows

21 Hours

GPU Programming with OpenACC

28 Hours

Rokon kategóriák