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ă 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