Kontaktirajte nas
 Trajanje 28 sati

Sadržaj kursa

Uvod

  • Šta je ROCm?
  • Šta je HIP?
  • ROCm vs CUDA vs OpenCL
  • Pregled značajki i arhitekture ROCm-a i HIP-a
  • Podešavanje razvojnog okruženja

Počinjemo

  • Kreiranje novog ROCm projekta koristeći Visual Studio Code
  • Istraživanje strukture i fajlova projekta
  • Kompajliranje i pokretanje programa
  • Prikaz izlaza koristeći printf i fprintf

ROCm API

  • Razumevanje uloge ROCm API-ja u programu domaćina (host)
  • Korišćenje ROCm API-ja za upit informacija i sposobnosti uređaja
  • Korišćenje ROCm API-ja za dodelu i oslobađanje memorije uređaja
  • Korišćenje ROCm API-ja za kopiranje podataka između domaćina i uređaja
  • Korišćenje ROCm API-ja za pokretanje jezgri i sinhronizaciju nitki
  • Korišćenje ROCm API-ja za rukovanje greškama i izuzecima

Jezičik HIP

  • Razumevanje uloge jezika HIP u programu uređaja (device)
  • Korišćenje jezika HIP za pisanje jezgri koji se izvršavaju na GPU-u i manipulišu podacima
  • Korišćenje tipova podataka, kvalifikatora, operatora i izraza u HIP-u
  • Korišćenje ugrađenih funkcija, promenljivih i biblioteka HIP-a za obavljanje zajedničkih zadataka i operacija

Model memorije ROCm-a i HIP-a

  • Razumevanje razlike između modela memorije domaćina i uređaja
  • Korišćenje ROCm i HIP prostora memorije, kao što su globalni, zajednički, konstantni i lokalni
  • Korišćenje ROCm i HIP objekata memorije, kao što su pokazivači, nizi, teksture i površine
  • Korišćenje ROCm i HIP modova pristupa memoriji, kao što su samo za čitanje, samo za pisanje, čitanje i pisanje, itd.
  • Korišćenje ROCm i HIP modela konzistentnosti memorije i mehanizama sinhronizacije

Model izvršenja ROCm-a i HIP-a

  • Razumevanje razlike između modela izvršenja domaćina i uređaja
  • Korišćenje ROCm i HIP nitki, blokova i mreža za definisanje paralelizacije
  • Korišćenje ROCm i HIP funkcija nitki, kao što su hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, itd.
  • Korišćenje ROCm i HIP funkcija blokova, kao što su __syncthreads, __threadfence_block, itd.
  • Korišćenje ROCm i HIP funkcija mreža, kao što su hipGridDim_x, hipGridSync, kooperativne grupe, itd.

Ispravljanje grešaka

  • Razumevanje zajedničkih grešaka i bagova u ROCm i HIP programima
  • Korišćenje debuggera u Visual Studio Code-u za inspekciju promenljivih, prekidnih tačaka, pozivačkog stacka, itd.
  • Korišćenje ROCm Debuggera za ispravljanje grešaka u ROCm i HIP programima na AMD uređajima
  • Korišćenje ROCm Profilera za analizu ROCm i HIP programa na AMD uređajima

Optimizacija

  • Razumevanje faktora koji utiču na performanse ROCm i HIP programa
  • Korišćenje ROCm i HIP tehnika spajanja (coalescing) za poboljšanje propusnog kapaciteta memorije
  • Korišćenje ROCm i HIP tehnika keširanja i preuzimanja unapred (prefetching) za smanjenje latencije memorije
  • Korišćenje ROCm i HIP tehnika zajedničke i lokalne memorije za optimizaciju pristupa memoriji i propusnog kapaciteta
  • Korišćenje ROCm i HIP profiliranja i alata za profiliranje za merenje i poboljšavanje vremena izvršenja i iskorišćenja resursa

Zaključak i sledeći koraci

Uslovi

  • Razumevanje C/C++ jezika i koncepata paralelnog programiranja
  • Osobno znanje o arhitekturi računara i hijerarhiji memorije
  • Ispitivanje sa alatkom za komandnu liniju i editorom koda

Ciljana publika

  • Developeri koji žele da nauče kako da koriste ROCm i HIP za programiranje AMD GPU-ova i iskorišćavanje njihove paralelizacije
  • Developeri koji žele da pišu kodove visokih performansi i skalabilne kodove koji mogu da se izvršavaju na različitim AMD uređajima
  • Programeri koji žele da istraže niske nivoe programiranja GPU-a i optimizuju performanse svog koda

Broj učesnika


Cena po učesniku

Predstojeći kursevi

Povezane kategorije