Hvala što ste poslali upit! Jedan od naših članova tima će vas uskoro kontaktirati.
Hvala što ste poslali rezervaciju! Jedan od naših članova tima će vas uskoro kontaktirati.
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