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 GPU?
- De ce să folosiți programarea GPU?
- Care sunt provocările și compromisurile programării GPU?
- Care sunt cadrele și instrumentele pentru programarea GPU?
- Alegerea cadrului și a instrumentului potrivit pentru aplicația dvs.
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 vectorială
- Utilizarea API OpenCL pentru a interoga informații despre dispozitiv, pentru a aloca și a dezaloca memoria dispozitivului, pentru a copia date între gazdă și dispozitiv, pentru a lansa nuclee și pentru a sincroniza fire de execuție.
- Utilizarea limbajului OpenCL C pentru a scrie nuclee 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 spațiile de memorie globală, locală, constantă și privată, pentru a optimiza transferurile de date și accesările de 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 utilizând instrumente precum CodeXL.
- Optimizarea programelor OpenCL utilizând tehnici precum coalescența, caching, prefetching și profilarea.
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ă
- Utilizarea API CUDA pentru a interoga informații despre dispozitiv, a aloca și a anula alocarea memoriei dispozitivului, a copia date între gazdă și dispozitiv, a lansa nuclee și a sincroniza fire de execuție.
- Utilizarea limbajului CUDA C/C++ pentru a scrie nuclee care se execută pe dispozitiv și manipulează date.
- Utilizarea funcțiilor, variabilelor și bibliotecilor încorporate în CUDA pentru a efectua sarcini și operații comune.
- Utilizarea spațiilor de memorie CUDA, cum ar fi spațiile de memorie globală, partajată, constantă și locală, pentru a optimiza transferurile de date și accesările de memorie.
- Utilizarea modelului de execuție CUDA pentru a controla firele, blocurile și grilele care definesc paralelismul.
- Depanarea și testarea programelor CUDA utilizând instrumente precum CUDA-GDB, CUDA-MEMCHECK și NVIDIA Nsight
- Optimizarea programelor CUDA utilizând tehnici precum coalescența, caching, prefetching și profilarea.
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ă.
- Utilizarea API-ului ROCm pentru a interoga informații despre dispozitiv, a aloca și a dezaloca memoria dispozitivului, a copia date între gazdă și dispozitiv, a lansa nuclee și a sincroniza fire de execuție.
- Utilizarea limbajului ROCm C/C++ pentru a scrie nuclee care se execută pe dispozitiv și manipulează date.
- Utilizarea funcțiilor, variabilelor și bibliotecilor încorporate în ROCm pentru a efectua sarcini și operații comune.
- Utilizarea spațiilor de memorie ROCm, cum ar fi spațiile de memorie globală, locală, constantă și privată, pentru a optimiza transferurile de date și accesările de memorie.
- Utilizarea modelului de execuție ROCm pentru a controla firele, blocurile și grilele care definesc paralelismul.
- Depanarea și testarea programelor ROCm utilizând instrumente precum ROCm Debugger și ROCm Profiler.
- Optimizarea programelor ROCm utilizând tehnici precum coalescența, caching, prefetching și profilarea.
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ă.
- Utilizarea limbajului HIP pentru a scrie nuclee care se execută pe dispozitiv ș i manipulează date.
- Utilizarea funcțiilor, variabilelor și bibliotecilor încorporate HIP pentru a efectua sarcini și operații comune.
- Utilizarea spațiilor de memorie HIP, cum ar fi spațiile de memorie globală, partajată, constantă și locală, pentru a optimiza transferurile de date și accesările de memorie.
- utilizarea modelului de execuție HIP pentru a controla firele, blocurile și grilele care definesc paralelismul.
- Depanarea și testarea programelor HIP utilizând instrumente precum ROCm Debugger și ROCm Profiler.
- Optimizarea programelor HIP utilizând tehnici precum coalescența, caching, prefetching și profilarea.
Comparație
- Compararea caracteristicilor, performanțelor și compatibilității OpenCL, CUDA, ROCm și HIP.
- Evaluarea programelor GPU cu ajutorul unor criterii de referință și al unor măsurători
- Î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 următorul pas
Cerințe
- Înțelegerea limbajului C/C++ și a conceptelor de programare paralelă
- Cunoștințe de bază privind arhitectura calculatoarelor și ierarhia memoriei
- experiență în utilizarea instrumentelor de linie de comandă și a editorilor de cod
Publicul
- Dezvoltatorii care doresc să învețe elementele de bază ale programării GPU și principalele cadre și instrumente pentru dezvoltarea de aplicații GPU.
- Dezvoltatorii care doresc să scrie cod portabil și scalabil care poate rula pe diferite platforme și dispozitive
- Programatori care doresc să exploreze beneficiile și provocările programării și optimizării GPU.
21 ore
Mărturii (2)
Foarte interactiv, cu exemple variate, cu o bună progresie în complexitate între începutul și sfârșitul cursului.
Jenny - Andheo
Curs - GPU Programming with CUDA and Python
Tradus de catre o masina
Formatorii energie și umor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Curs - NVIDIA GPU Programming - Extended
Tradus de catre o masina