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 ROCm?
- Ce este HIP?
- ROCm vs CUDA vs OpenCL
- Prezentare generală a caracteristicilor și arhitecturii ROCm și HIP
- Configurarea mediului de dezvoltare
Noțiuni introductive
- Crearea unui nou proiect ROCm utilizând Visual Studio Cod
- Explorarea structurii proiectului și a fișierelor
- Compilarea și rularea programului
- Afișarea ieșirii utilizând printf și fprintf
API ROCm
- Înțelegerea rolului API ROCm în programul gazdă
- Utilizarea API ROCm pentru a interoga informații și capacități ale dispozitivului
- Utilizarea API ROCm pentru a aloca și a dezaloca memoria dispozitivului.
- Utilizarea API ROCm pentru a copia date între gazdă și dispozitiv.
- Utilizarea API ROCm pentru a lansa nuclee și a sincroniza fire de execuție.
- Utilizarea API ROCm pentru gestionarea erorilor și a excepțiilor
Limbajul HIP
- Înțelegerea rolului limbajului HIP în programul dispozitivului
- Utilizarea limbajului HIP pentru a scrie nuclee care se execută pe GPU și manipulează date.
- Utilizarea tipurilor de date, a calificatorilor, a operatorilor și a expresiilor HIP
- Utilizarea funcțiilor încorporate HIP, a variabilelor și a bibliotecilor pentru a efectua sarcini și operații comune.
ROCm și modelul de memorie HIP
- Înțelegerea diferenței dintre modelele de memorie gazdă și dispozitiv
- Utilizarea spațiilor de memorie ROCm și HIP, cum ar fi spațiile de memorie globală, partajată, constantă și locală.
- Utilizarea obiectelor de memorie ROCm și HIP, cum ar fi pointeri, matrici, texturi și suprafețe.
- Utilizarea modurilor de acces la memorie ROCm și HIP, cum ar fi read-only, write-only, read-write etc.
- Utilizarea modelului de coerență a memoriei ROCm și HIP și a mecanismelor de sincronizare.
Modelul de execuție ROCm și HIP
- Înțelegerea diferenței dintre modelele de execuție gazdă și dispozitiv
- Utilizarea firelor, blocurilor și grilelor ROCm și HIP pentru a defini paralelismul
- Utilizarea funcțiilor de fire ROCm și HIP, cum ar fi hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
- Utilizarea funcțiilor ROCm și HIP block, cum ar fi __syncthreads, __threadfence_block, etc.
- Utilizarea funcțiilor de grilă ROCm și HIP, cum ar fi hipGridDim_x, hipGridSync, cooperative groups etc.
Depanarea
- Înțelegerea erorilor și a erorilor comune din programele ROCm și HIP.
- Utilizarea depanatorului de cod Visual Studio pentru a inspecta variabilele, punctele de întrerupere, stiva de apeluri etc.
- Utilizarea ROCm Debugger pentru depanarea programelor ROCm și HIP pe dispozitive AMD
- Utilizarea ROCm Profiler pentru a analiza programele ROCm și HIP pe dispozitive AMD
Optimizare
- Înțelegerea factorilor care afectează performanța programelor ROCm și HIP
- Utilizarea tehnicilor de coalescență ROCm și HIP pentru a îmbunătăți debitul de memorie
- Utilizarea tehnicilor de caching și prefetching ROCm și HIP pentru a reduce latența memoriei
- Utilizarea tehnicilor ROCm și HIP de memorie partajată și de memorie locală pentru a optimiza accesele la memorie și lățimea de bandă.
- Utilizarea instrumentelor de profilare și a instrumentelor de profilare ROCm și HIP pentru a măsura și îmbunătăți timpul de execuție și utilizarea resurselor.
Rezumat și următoarea etapă
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 cum să utilizeze ROCm și HIP pentru a programa AMD GPU și a exploata paralelismul acestora.
- Programatori care doresc să scrie cod de înaltă performanță și scalabil care poate rula pe diferite dispozitive AMD
- Programatori care doresc să exploreze aspectele de nivel scăzut ale programării GPU și să își optimizeze performanța codului lor
28 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