Schița de curs

Introducere

  • Ce este programarea GPU?
  • De ce să folosim programarea GPU?
  • Care sunt provocările și compromisurile programării GPU?
  • Care sunt framework-urile pentru programarea GPU?
  • Alegerea framework-ului potrivit pentru aplicația ta

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 de vectori
  • Utilizarea API-ului OpenCL pentru a interoga informații despre dispozitiv, aloca și dezaloca memoria dispozitivului, copia date între gazdă și dispozitiv, lanseze kernel-uri și sincronizeze firele de execuție
  • Utilizarea limbajului OpenCL C pentru a scrie kernel-uri 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 global, local, constant și privat, pentru a optimiza transferul de date și accesul la 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 folosind unelte precum CodeXL
  • Optimizarea programelor OpenCL folosind tehnici precum coalescing, caching, prefetching și profiling

CUDA

  • Ce este CUDA?
  • Care sunt avantajele și dezavantajele CUDA?
  • Configurarea mediului de dezvoltare pentru CUDA
  • Crearea unui program de bază CUDA care efectuează adunarea de vectori
  • Utilizarea API-ului CUDA pentru a interoga informații despre dispozitiv, aloca și dezaloca memoria dispozitivului, copia date între gazdă și dispozitiv, lanseze kernel-uri și sincronizeze firele de execuție
  • Utilizarea limbajului CUDA C/C++ pentru a scrie kernel-uri care se execută pe dispozitiv și manipulează date
  • Utilizarea funcțiilor, variabilelor și bibliotecilor încorporate CUDA pentru a efectua sarcini și operații comune
  • Utilizarea spațiilor de memorie CUDA, cum ar fi global, shared, constant și local, pentru a optimiza transferul de date și accesul la memorie
  • Utilizarea modelului de execuție CUDA pentru a controla firele, blocurile și grilele care definesc paralelismul
  • Depanarea și testarea programelor CUDA folosind unelte precum CUDA-GDB, CUDA-MEMCHECK și NVIDIA Nsight
  • Optimizarea programelor CUDA folosind tehnici precum coalescing, caching, prefetching și profiling

ROCm

  • Ce este ROCm?
  • Care sunt avantajele și dezavantajele ROCm?
  • Configurarea mediului de dezvoltare pentru ROCm
  • Crearea unui program de bază ROCm care efectuează adunarea de vectori
  • Utilizarea API-ului ROCm pentru a interoga informații despre dispozitiv, aloca și dezaloca memoria dispozitivului, copia date între gazdă și dispozitiv, lanseze kernel-uri și sincronizeze firele de execuție
  • Utilizarea limbajului ROCm C/C++ pentru a scrie kernel-uri care se execută pe dispozitiv și manipulează date
  • Utilizarea funcțiilor, variabilelor și bibliotecilor încorporate ROCm pentru a efectua sarcini și operații comune
  • Utilizarea spațiilor de memorie ROCm, cum ar fi global, local, constant și privat, pentru a optimiza transferul de date și accesul la memorie
  • Utilizarea modelului de execuție ROCm pentru a controla firele, blocurile și grilele care definesc paralelismul
  • Depanarea și testarea programelor ROCm folosind unelte precum ROCm Debugger și ROCm Profiler
  • Optimizarea programelor ROCm folosind tehnici precum coalescing, caching, prefetching și profiling

Comparație

  • Compararea caracteristicilor, performanței și compatibilității OpenCL, CUDA și ROCm
  • Evaluarea programelor GPU folosind benchmark-uri și metrici
  • Î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 pași următori

Cerințe

  • Înțelegerea limbajului C/C++ și a conceptelor de programare paralelă
  • Cunoștințe de bază despre arhitectura calculatoarelor și ierarhia memoriei
  • Experiență cu unelte de linie de comandă și editori de cod

Public țintă

  • Dezvoltatori care doresc să învețe cum să utilizeze diferite framework-uri pentru programarea GPU și să compare caracteristicile, performanța și compatibilitatea acestora
  • Dezvoltatori care doresc să scrie cod portabil și scalabil care poate rula pe diferite platforme și dispozitive
  • Programatori care doresc să exploreze compromisurile și provocările programării și optimizării GPU
 28 Ore

Numărul de participanți


Pret per participant

Cursuri viitoare

Categorii înrudite