Schița de curs

Introducere

  • Ce este programarea cu GPU?
  • De ce să folosești programarea cu GPU?
  • Care sunt provocările și trade-off-urile ale programării cu GPU?
  • Ce sunt framework-urile pentru programarea cu GPU?
  • Alegerea cel mai potrivitui framework pentru aplicația ta

OpenCL

  • Ce este OpenCL?
  • Care sunt avantajele și dezavantajele ale OpenCL?
  • Configurarea mediului de dezvoltare pentru OpenCL
  • Crearea unui program OpenCL de bază care efectuează adunarea vectorilor
  • Utilizarea API-ului OpenCL pentru a interoga informațiile dispozitivului, alocare și eliberare memorie dispozitiv, copiere de date între gazdă și dispozitiv, lansarea kernel-urilor și sincronizarea thread-urilor
  • Utilizarea limbajului C al OpenCL pentru a scrie kernel-uri care se execută pe dispozitiv și manipulează datele
  • Utilizarea funcțiilor, variabilelor și bibliotecilor predefinite ale OpenCL pentru a efectua operații comune
  • Utilizarea spațiului de memorie al OpenCL, cum ar fi global, local, constant și privat, pentru a optimiza transferul de date și accesurile la memorie
  • Utilizarea modelului de execuție ale OpenCL pentru controlul item-urilor de lucru, grupuri de lucrare și ND-ranges care definesc paralelismul
  • Depanarea și testarea programelor OpenCL folosind instrumente precum CodeXL
  • Optimizarea programelor OpenCL folosind tehnici precum coalescing, caching, prefetching și profilare

CUDA

  • Ce este CUDA?
  • Care sunt avantajele și dezavantajele ale CUDA?
  • Configurarea mediului de dezvoltare pentru CUDA
  • Crearea unui program CUDA de bază care efectuează adunarea vectorilor
  • Utilizarea API-ului CUDA pentru a interoga informațiile dispozitivului, alocare și eliberare memorie dispozitiv, copiere de date între gazdă și dispozitiv, lansarea kernel-urilor și sincronizarea thread-urilor
  • Utilizarea limbajului CUDA C/C++ pentru a scrie kernel-uri care se execută pe dispozitiv și manipulează datele
  • Utilizarea funcțiilor, variabilelor și bibliotecilor predefinite ale CUDA pentru a efectua operații comune
  • Utilizarea spațiului de memorie al CUDA, cum ar fi global, shared, constant și local, pentru a optimiza transferul de date și accesurile la memorie
  • Utilizarea modelului de execuție ale CUDA pentru controlul thread-urilor, blocuri și grile care definesc paralelismul
  • Depanarea și testarea programelor CUDA folosind instrumente precum CUDA-GDB, CUDA-MEMCHECK și NVIDIA Nsight
  • Optimizarea programelor CUDA folosind tehnici precum coalescing, caching, prefetching și profilare

ROCm

  • Ce este ROCm?
  • Care sunt avantajele și dezavantajele ale ROCm?
  • Configurarea mediului de dezvoltare pentru ROCm
  • Crearea unui program ROCm de bază care efectuează adunarea vectorilor
  • Utilizarea API-ului ROCm pentru a interoga informațiile dispozitivului, alocare și eliberare memorie dispozitiv, copiere de date între gazdă și dispozitiv, lansarea kernel-urilor și sincronizarea thread-urilor
  • Utilizarea limbajului ROCm C/C++ pentru a scrie kernel-uri care se execută pe dispozitiv și manipulează datele
  • Utilizarea funcțiilor, variabilelor și bibliotecilor predefinite ale ROCm pentru a efectua operații comune
  • Utilizarea spațiului de memorie al ROCm, cum ar fi global, local, constant și privat, pentru a optimiza transferul de date și accesurile la memorie
  • Utilizarea modelului de execuție ale ROCm pentru controlul thread-urilor, blocuri și grile care definesc paralelismul
  • Depanarea și testarea programelor ROCm folosind instrumente precum ROCm Debugger și ROCm Profiler
  • Optimizarea programelor ROCm folosind tehnici precum coalescing, caching, prefetching și profilare

Comparativ

  • Comparați funcțiile, performanța și compatibilitatea ale OpenCL, CUDA și ROCm
  • Evaluarea programelor GPU folosind benchmark-uri și metrice
  • Aprendeți cele mai bune practici și sfaturi pentru programarea cu GPU
  • Explorați tendințele actuale și viitoare, precum și provocările ale programării cu GPU

Rezumat și următoarele pași

Cerințe

  • Oțelul de cunoștințe cu limbajul C/C++ și conceptele programării paralele
  • Cunoașterea de bază a arhitecturii computerelor și a ierarhiei memoriei
  • Experiență cu instrumentele liniei de comandă și editorii de cod

Publicul-țintă

  • Dezvoltatorii care doresc să învețe cum să folosească diferite framework-uri pentru programarea GPU și să compare caracteristicile, performanța și compatibilitatea lor
  • Dezvoltatorii care doresc să scrie coduri portabile și scalabile care pot rula pe diverse platforme și dispozitive
  • Programatorii care doresc să exploreze trade-off-urile și provocările programării GPU și optimizărilor
 28 ore

Numărul de participanți


Pret per participant

Upcoming Courses

Categorii înrudite