Schița de curs

Introducere

  • Ce este programarea GPU?
  • De ce să folosiți programarea GPU?
  • Care sunt provocările și compromisurile programării GPU?
  • Care sunt cadrele și instrumentele pentru programarea GPU?
  • Alegerea cadrului și a instrumentului potrivit pentru aplicația dvs.

OpenCL

  • Ce este OpenCL?
  • Care sunt avantajele și dezavantajele OpenCL?
  • Configurarea mediului de dezvoltare pentru OpenCL
  • Crearea unui program de bază OpenCL care efectuează adunarea vectorială
  • Utilizarea API OpenCL pentru a interoga informații despre dispozitiv, pentru a aloca și a dezaloca memoria dispozitivului, pentru a copia date între gazdă și dispozitiv, pentru a lansa nuclee și pentru a sincroniza fire de execuție.
  • Utilizarea limbajului OpenCL C pentru a scrie nuclee care se execută pe dispozitiv și manipulează date.
  • Utilizarea funcțiilor, variabilelor și bibliotecilor încorporate OpenCL pentru a efectua sarcini și operații comune.
  • utilizarea spațiilor de memorie OpenCL, cum ar fi spațiile de memorie globală, locală, constantă și privată, pentru a optimiza transferurile de date și accesările de memorie.
  • utilizarea modelului de execuție OpenCL pentru a controla elementele de lucru, grupurile de lucru și intervalele ND care definesc paralelismul.
  • Depanarea și testarea programelor OpenCL utilizând instrumente precum CodeXL.
  • Optimizarea programelor OpenCL utilizând tehnici precum coalescența, caching, prefetching și profilarea.

CUDA

  • Ce este CUDA?
  • Care sunt avantajele și dezavantajele CUDA?
  • Configurarea mediului de dezvoltare pentru CUDA
  • Crearea unui program CUDA de bază care efectuează adunarea vectorială
  • Utilizarea API CUDA pentru a interoga informații despre dispozitiv, a aloca și a anula alocarea memoriei dispozitivului, a copia date între gazdă și dispozitiv, a lansa nuclee și a sincroniza fire de execuție.
  • Utilizarea limbajului CUDA C/C++ pentru a scrie nuclee care se execută pe dispozitiv și manipulează date.
  • Utilizarea funcțiilor, variabilelor și bibliotecilor încorporate în CUDA pentru a efectua sarcini și operații comune.
  • Utilizarea spațiilor de memorie CUDA, cum ar fi spațiile de memorie globală, partajată, constantă și locală, pentru a optimiza transferurile de date și accesările de memorie.
  • Utilizarea modelului de execuție CUDA pentru a controla firele, blocurile și grilele care definesc paralelismul.
  • Depanarea și testarea programelor CUDA utilizând instrumente precum CUDA-GDB, CUDA-MEMCHECK și NVIDIA Nsight
  • Optimizarea programelor CUDA utilizând tehnici precum coalescența, caching, prefetching și profilarea.

ROCm

  • Ce este ROCm?
  • Care sunt avantajele și dezavantajele ROCm?
  • Configurarea mediului de dezvoltare pentru ROCm
  • Crearea unui program ROCm de bază care efectuează adunarea vectorială.
  • Utilizarea API-ului ROCm pentru a interoga informații despre dispozitiv, a aloca și a dezaloca memoria dispozitivului, a copia date între gazdă și dispozitiv, a lansa nuclee și a sincroniza fire de execuție.
  • Utilizarea limbajului ROCm C/C++ pentru a scrie nuclee care se execută pe dispozitiv și manipulează date.
  • Utilizarea funcțiilor, variabilelor și bibliotecilor încorporate în ROCm pentru a efectua sarcini și operații comune.
  • Utilizarea spațiilor de memorie ROCm, cum ar fi spațiile de memorie globală, locală, constantă și privată, pentru a optimiza transferurile de date și accesările de memorie.
  • Utilizarea modelului de execuție ROCm pentru a controla firele, blocurile și grilele care definesc paralelismul.
  • Depanarea și testarea programelor ROCm utilizând instrumente precum ROCm Debugger și ROCm Profiler.
  • Optimizarea programelor ROCm utilizând tehnici precum coalescența, caching, prefetching și profilarea.

HIP

  • Ce este HIP?
  • Care sunt avantajele și dezavantajele HIP?
  • Configurarea mediului de dezvoltare pentru HIP
  • Crearea unui program HIP de bază care efectuează adunarea vectorială.
  • Utilizarea limbajului HIP pentru a scrie nuclee care se execută pe dispozitiv ș i manipulează date.
  • Utilizarea funcțiilor, variabilelor și bibliotecilor încorporate HIP pentru a efectua sarcini și operații comune.
  • Utilizarea spațiilor de memorie HIP, cum ar fi spațiile de memorie globală, partajată, constantă și locală, pentru a optimiza transferurile de date și accesările de memorie.
  • utilizarea modelului de execuție HIP pentru a controla firele, blocurile și grilele care definesc paralelismul.
  • Depanarea și testarea programelor HIP utilizând instrumente precum ROCm Debugger și ROCm Profiler.
  • Optimizarea programelor HIP utilizând tehnici precum coalescența, caching, prefetching și profilarea.

Comparație

  • Compararea caracteristicilor, performanțelor și compatibilității OpenCL, CUDA, ROCm și HIP.
  • Evaluarea programelor GPU cu ajutorul unor criterii de referință și al unor măsurători
  • Învățarea celor mai bune practici și sfaturi pentru programarea GPU.
  • Explorarea tendințelor și provocărilor actuale și viitoare ale programării GPU

Rezumat și următorul pas

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 elementele de bază ale programării GPU și principalele cadre și instrumente pentru dezvoltarea de aplicații GPU.
  • Dezvoltatorii care doresc să scrie cod portabil și scalabil care poate rula pe diferite platforme și dispozitive
  • Programatori care doresc să exploreze beneficiile și provocările programării și optimizării GPU.
 21 ore

Numărul de participanți


Pret per participant

Mărturii (2)

Upcoming Courses