Mulțumim pentru trimiterea solicitării! Un membru al echipei noastre vă va contacta în curând.
Mulțumim pentru trimiterea rezervării! Un membru al echipei noastre vă va contacta în curând.
Schița de curs
Introducere
- Ce este ROCm?
- Ce este HIP?
- ROCm vs CUDA vs OpenCL
- Prezentare generală a caracteristicilor și arhitecturii ROCm și HIP
- Configurarea mediului de dezvoltare
Început
- Crearea unui nou proiect ROCm folosind Visual Studio Code
- Explorarea structurii și fișierelor proiectului
- Compilarea și rularea programului
- Afisarea rezultatului folosind printf și fprintf
API ROCm
- Înțelegerea rolului API-ului ROCm în programul gazdă
- Folosirea API-ului ROCm pentru a interoga informațiile și capacitățile dispozitivului
- Folosirea API-ului ROCm pentru a aloca și dealoca memoria dispozitivului
- Folosirea API-ului ROCm pentru a copia date între gazdă și dispozitiv
- Folosirea API-ului ROCm pentru a lanșa kernel-uri și a sincroniza firele de execuție
- Folosirea API-ului ROCm pentru a gestiona erorile și excepțiile
Limbajul HIP
- Înțelegerea rolului limbajului HIP în programul dispozitivului
- Folosirea limbajului HIP pentru a scrie kernel-uri care se execută pe GPU și manipulează date
- Folosirea tipurilor de date, calificatorilor, operatorilor și expresiilor HIP
- Folosirea funcțiilor, variabilelor și bibliotecilor încorporate HIP pentru a efectua sarcini și operații comune
Modelul de memorie ROCm și HIP
- Înțelegerea diferenței dintre modelele de memorie ale gazdei și dispozitivului
- Folosirea spațiilor de memorie ROCm și HIP, cum ar fi global, partajat, constant și local
- Folosirea obiectelor de memorie ROCm și HIP, cum ar fi pointeri, array-uri, texturi și suprafețe
- Folosirea modurilor de acces la memorie ROCm și HIP, cum ar fi read-only, write-only, read-write, etc.
- Folosirea modelului de consistență a memoriei și a mecanismelor de sincronizare ROCm și HIP
Modelul de execuție ROCm și HIP
- Înțelegerea diferenței dintre modelele de execuție ale gazdei și dispozitivului
- Folosirea firelor, blocurilor și grilelor ROCm și HIP pentru a defini paralelismul
- Folosirea funcțiilor de fire ROCm și HIP, cum ar fi hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
- Folosirea funcțiilor de bloc ROCm și HIP, cum ar fi __syncthreads, __threadfence_block, etc.
- Folosirea funcțiilor de grilă ROCm și HIP, cum ar fi hipGridDim_x, hipGridSync, grupuri cooperative, etc.
Depanare
- Înțelegerea erorilor și bug-urilor comune în programele ROCm și HIP
- Folosirea debugger-ului Visual Studio Code pentru a inspecta variabile, puncte de întrerupere, stivă de apeluri, etc.
- Folosirea ROCm Debugger pentru a depana programe ROCm și HIP pe dispozitive AMD
- Folosirea ROCm Profiler pentru a analiza programe ROCm și HIP pe dispozitive AMD
Optimizare
- Înțelegerea factorilor care afectează performanța programelor ROCm și HIP
- Folosirea tehnicilor de coalescing ROCm și HIP pentru a îmbunătăți debitul de memorie
- Folosirea tehnicilor de caching și prefetching ROCm și HIP pentru a reduce latența memoriei
- Folosirea tehnicilor de memorie partajată și locală ROCm și HIP pentru a optimiza accesul la memorie și lățimea de bandă
- Folosirea instrumentelor de profiling și profiling ROCm și HIP pentru a măsura și îmbunătăți timpul de execuție și utilizarea resurselor
Rezumat și Pași Următori
Cerințe
- O înțelegere a limbajului C/C++ și a conceptelor de programare paralelă
- Cunoștințe de bază despre arhitectura calculatoarelor și ierarhia memoriei
- Experiență cu instrumente de linie de comandă și editori de cod
Publicul țintă
- Dezvoltatori care doresc să învețe cum să folosească ROCm și HIP pentru a programa GPU-uri AMD și să exploateze paralelismul acestora
- Dezvoltatori care doresc să scrie cod de înaltă performanță și scalabil care poate rula pe diferite dispozitive AMD
- Programatori care doresc să exploreze aspectele de nivel scăzut ale programării GPU și să optimizeze performanța codului lor
28 Ore