Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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