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

Noțiuni introductive

  • Crearea unui nou proiect ROCm utilizând Visual Studio Cod
  • Explorarea structurii proiectului și a fișierelor
  • Compilarea și rularea programului
  • Afișarea ieșirii utilizând printf și fprintf

API ROCm

  • Înțelegerea rolului API ROCm în programul gazdă
  • Utilizarea API ROCm pentru a interoga informații și capacități ale dispozitivului
  • Utilizarea API ROCm pentru a aloca și a dezaloca memoria dispozitivului.
  • Utilizarea API ROCm pentru a copia date între gazdă și dispozitiv.
  • Utilizarea API ROCm pentru a lansa nuclee și a sincroniza fire de execuție.
  • Utilizarea API ROCm pentru gestionarea erorilor și a excepțiilor

Limbajul HIP

  • Înțelegerea rolului limbajului HIP în programul dispozitivului
  • Utilizarea limbajului HIP pentru a scrie nuclee care se execută pe GPU și manipulează date.
  • Utilizarea tipurilor de date, a calificatorilor, a operatorilor și a expresiilor HIP
  • Utilizarea funcțiilor încorporate HIP, a variabilelor și a bibliotecilor pentru a efectua sarcini și operații comune.

ROCm și modelul de memorie HIP

  • Înțelegerea diferenței dintre modelele de memorie gazdă și dispozitiv
  • Utilizarea spațiilor de memorie ROCm și HIP, cum ar fi spațiile de memorie globală, partajată, constantă și locală.
  • Utilizarea obiectelor de memorie ROCm și HIP, cum ar fi pointeri, matrici, texturi și suprafețe.
  • Utilizarea modurilor de acces la memorie ROCm și HIP, cum ar fi read-only, write-only, read-write etc.
  • Utilizarea modelului de coerență a memoriei ROCm și HIP și a mecanismelor de sincronizare.

Modelul de execuție ROCm și HIP

  • Înțelegerea diferenței dintre modelele de execuție gazdă și dispozitiv
  • Utilizarea firelor, blocurilor și grilelor ROCm și HIP pentru a defini paralelismul
  • Utilizarea funcțiilor de fire ROCm și HIP, cum ar fi hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
  • Utilizarea funcțiilor ROCm și HIP block, cum ar fi __syncthreads, __threadfence_block, etc.
  • Utilizarea funcțiilor de grilă ROCm și HIP, cum ar fi hipGridDim_x, hipGridSync, cooperative groups etc.

Depanarea

  • Înțelegerea erorilor și a erorilor comune din programele ROCm și HIP.
  • Utilizarea depanatorului de cod Visual Studio pentru a inspecta variabilele, punctele de întrerupere, stiva de apeluri etc.
  • Utilizarea ROCm Debugger pentru depanarea programelor ROCm și HIP pe dispozitive AMD
  • Utilizarea ROCm Profiler pentru a analiza programele ROCm și HIP pe dispozitive AMD

Optimizare

  • Înțelegerea factorilor care afectează performanța programelor ROCm și HIP
  • Utilizarea tehnicilor de coalescență ROCm și HIP pentru a îmbunătăți debitul de memorie
  • Utilizarea tehnicilor de caching și prefetching ROCm și HIP pentru a reduce latența memoriei
  • Utilizarea tehnicilor ROCm și HIP de memorie partajată și de memorie locală pentru a optimiza accesele la memorie și lățimea de bandă.
  • Utilizarea instrumentelor de profilare și a instrumentelor de profilare ROCm și HIP pentru a măsura și îmbunătăți timpul de execuție și utilizarea resurselor.

Rezumat și următoarea etapă

Cerințe

  • Înțelegerea limbajului C/C++ și a conceptelor de programare paralelă
  • Cunoștințe de bază privind arhitectura calculatoarelor și ierarhia memoriei
  • experiență în utilizarea instrumentelor de linie de comandă și a editorilor de cod

Publicul

  • Dezvoltatorii care doresc să învețe cum să utilizeze ROCm și HIP pentru a programa AMD GPU și a exploata paralelismul acestora.
  • Programatori 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ă își optimizeze performanța codului lor
 28 ore

Numărul de participanți


Pret per participant

Mărturii (2)

Upcoming Courses