Mulțumim pentru trimiterea solicitării! Un membru al echipei noastre vă va contacta în curând.
Mulțumim pentru trimiterea rezervării! Un membru al echipei noastre vă va contacta în curând.
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