Schița de curs

Introducere

  • Ce este programarea GPU?
  • De ce să folosiți programarea GPU?
  • Care sunt provocările și compromisiile programării GPU?
  • Care sunt cadrele de programare GPU?
  • Alegerea cadrelui potrivit pentru aplicația dumneavoastră

OpenCL

  • Ce este OpenCL?
  • Care sunt avantajele și dezavantajele OpenCL?
  • Configurarea mediului de dezvoltare pentru OpenCL
  • Crearea unei programe OpenCL de bază care efectuează adunarea vectorilor
  • Utilizarea API-ului OpenCL pentru a interoga informațiile despre dispozitiv, alocarea și dealocarea memoriei dispozitivului, copierea datelor între gazdă și dispozitiv, lansarea kernelurilor și sincronizarea firurilor
  • Utilizarea limbajului OpenCL C pentru a scrie kerneluri care se execută pe dispozitiv și manipulează datele
  • Utilizarea funcțiilor, variabilelor și bibliotecilor built-in ale 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 datelor și accesarea memoriei
  • Utilizarea modelului de execuție al OpenCL pentru a controla work-items-urile, work-groups-urile și ND-ranges-ul care definesc paralelismul
  • Depunerea și testarea programelor OpenCL folosind unelte precum CodeXL
  • Optimizarea programelor OpenCL folosind tehnici precum coalescerea, cache-ul, prefetching-ul și profilarea

CUDA

  • Ce este CUDA?
  • Care sunt avantajele și dezavantajele CUDA?
  • Configurarea mediului de dezvoltare pentru CUDA
  • Crearea unei programe CUDA de bază care efectuează adunarea vectorilor
  • Utilizarea API-ului CUDA pentru a interoga informațiile despre dispozitiv, alocarea și dealocarea memoriei dispozitivului, copierea datelor între gazdă și dispozitiv, lansarea kernelurilor și sincronizarea firurilor
  • Utilizarea limbajului CUDA C/C++ pentru a scrie kerneluri care se execută pe dispozitiv și manipulează datele
  • Utilizarea funcțiilor, variabilelor și bibliotecilor built-in ale 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 datelor și accesarea memoriei
  • Utilizarea modelului de execuție al CUDA pentru a controla firele, blocurile și grilele care definesc paralelismul
  • Depunerea și testarea programelor CUDA folosind unelte precum CUDA-GDB, CUDA-MEMCHECK și NVIDIA Nsight
  • Optimizarea programelor CUDA folosind tehnici precum coalescerea, cache-ul, prefetching-ul și profilarea

ROCm

  • Ce este ROCm?
  • Care sunt avantajele și dezavantajele ROCm?
  • Configurarea mediului de dezvoltare pentru ROCm
  • Crearea unei programe ROCm de bază care efectuează adunarea vectorilor
  • Utilizarea API-ului ROCm pentru a interoga informațiile despre dispozitiv, alocarea și dealocarea memoriei dispozitivului, copierea datelor între gazdă și dispozitiv, lansarea kernelurilor și sincronizarea firurilor
  • Utilizarea limbajului ROCm C/C++ pentru a scrie kerneluri care se execută pe dispozitiv și manipulează datele
  • Utilizarea funcțiilor, variabilelor și bibliotecilor built-in ale 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 datelor și accesarea memoriei
  • Utilizarea modelului de execuție al ROCm pentru a controla firele, blocurile și grilele care definesc paralelismul
  • Depunerea și testarea programelor ROCm folosind unelte precum ROCm Debugger și ROCm Profiler
  • Optimizarea programelor ROCm folosind tehnici precum coalescerea, cache-ul, prefetching-ul și profilarea

Comparare

  • Comparați caracteristicile, performanțele și compatibilitatea OpenCL, CUDA și ROCm
  • Evaluați programele GPU folosind banchmark-uri și metrice
  • Aflați cele mai bune practici și sfaturi pentru programarea GPU
  • Explorați tendințele actuale și viitoare și provocările programării GPU

Rezumat și următorii pași

Cerințe

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

Audiență

  • Dezvoltatori care doresc să învețe cum să folosească diferite cadre pentru programarea GPU și să compare caracteristicile, performanțele ș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 compromisiile și provocările programării GPU și optimizării acesteia
 28 ore

Numărul de participanți


Pret per participant

Cursuri viitoare

Categorii înrudite