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 cadrele și instrumentele pentru programarea GPU?
- Alegerea cadrului și instrumentului potrivit pentru aplicația ta
OpenCL
- Ce este OpenCL?
- Care sunt avantajele și dezavantajele OpenCL?
- Configurarea mediului de dezvoltare pentru OpenCL
- Crearea unui program OpenCL de bază care efectuează adunarea vectorială
- Folosirea API-ului OpenCL pentru a interoga informațiile despre dispozitiv, aloca și dealoca memoria dispozitivului, copia date între gazdă și dispozitiv, lansa kernel-uri și sincroniza firele de execuție
- Folosirea limbajului OpenCL C pentru a scrie kernel-uri care se execută pe dispozitiv și manipulează date
- Folosirea funcțiilor, variabilelor și bibliotecilor încorporate OpenCL pentru a efectua sarcini și operații comune
- Folosirea spațiilor de memorie OpenCL, cum ar fi global, local, constant și privat, pentru a optimiza transferul de date și accesul la memorie
- Folosirea modelului de execuție OpenCL pentru a controla work-items, work-groups ș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 profiling
CUDA
- Ce este CUDA?
- Care sunt avantajele și dezavantajele CUDA?
- Configurarea mediului de dezvoltare pentru CUDA
- Crearea unui program CUDA de bază care efectuează adunarea vectorială
- Folosirea API-ului CUDA pentru a interoga informațiile despre dispozitiv, aloca și dealoca memoria dispozitivului, copia date între gazdă și dispozitiv, lansa kernel-uri și sincroniza firele de execuție
- Folosirea limbajului CUDA C/C++ pentru a scrie kernel-uri care se execută pe dispozitiv și manipulează date
- Folosirea funcțiilor, variabilelor și bibliotecilor încorporate CUDA pentru a efectua sarcini și operații comune
- Folosirea spațiilor de memorie CUDA, cum ar fi global, shared, constant și local, pentru a optimiza transferul de date și accesul la memorie
- Folosirea modelului de execuție CUDA pentru a controla firele, blocurile și grilele 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 profiling
ROCm
- Ce este ROCm?
- Care sunt avantajele și dezavantajele ROCm?
- Configurarea mediului de dezvoltare pentru ROCm
- Crearea unui program ROCm de bază care efectuează adunarea vectorială
- Folosirea API-ului ROCm pentru a interoga informațiile despre dispozitiv, aloca și dealoca memoria dispozitivului, copia date între gazdă și dispozitiv, lansa kernel-uri și sincroniza firele de execuție
- Folosirea limbajului ROCm C/C++ pentru a scrie kernel-uri care se execută pe dispozitiv și manipulează date
- Folosirea funcțiilor, variabilelor și bibliotecilor încorporate ROCm pentru a efectua sarcini și operații comune
- Folosirea spațiilor de memorie ROCm, cum ar fi global, local, constant și privat, pentru a optimiza transferul de date și accesul la memorie
- Folosirea modelului de execuție ROCm pentru a controla firele, blocurile și grilele 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 profiling
HIP
- Ce este HIP?
- Care sunt avantajele și dezavantajele HIP?
- Configurarea mediului de dezvoltare pentru HIP
- Crearea unui program HIP de bază care efectuează adunarea vectorială
- Folosirea limbajului HIP pentru a scrie kernel-uri care se execută pe dispozitiv și manipulează date
- Folosirea funcțiilor, variabilelor și bibliotecilor încorporate HIP pentru a efectua sarcini și operații comune
- Folosirea spațiilor de memorie HIP, cum ar fi global, shared, constant și local, pentru a optimiza transferul de date și accesul la memorie
- Folosirea modelului de execuție HIP pentru a controla firele, blocurile și grilele care definesc paralelismul
- Depanarea și testarea programelor HIP folosind instrumente precum ROCm Debugger și ROCm Profiler
- Optimizarea programelor HIP folosind tehnici precum coalescing, caching, prefetching și profiling
Comparație
- Compararea caracteristicilor, performanței și compatibilității OpenCL, CUDA, ROCm și HIP
- 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
- Cunoștințe de limbaj C/C++ și concepte de programare paralelă
- Cunoștințe de bază despre arhitectura calculatoarelor și ierarhia memoriei
- Experiență cu instrumente de linie de comandă și editoare de cod
Publicul țintă
- Dezvoltatori care doresc să învețe elementele de bază ale programării GPU și principalele cadre și instrumente pentru dezvoltarea aplicațiilor GPU
- Dezvoltatori care doresc să scrie cod portabil și scalabil care să poată rula pe diferite platforme și dispozitive
- Programatori care doresc să exploreze beneficiile și provocările programării și optimizării GPU
21 Ore