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

Numărul de participanți


Pret per participant

Cursuri viitoare

Categorii înrudite