Schița de curs

Introducere

  • Ce este CUDA?
  • CUDA vs OpenCL vs SYCL
  • Prezentare generală a caracteristicilor și arhitecturii CUDA
  • Configurarea mediului de dezvoltare

Noțiuni introductive

  • Crearea unui nou proiect CUDA utilizând codul Visual Studio Code
  • Explorarea structurii proiectului și a fișierelor
  • Compilarea și rularea programului
  • Afișarea ieșirii utilizând printf și fprintf

API CUDA

  • Înțelegerea rolului API-ului CUDA în programul gazdă
  • Utilizarea CUDA API pentru interogarea informațiilor și capacităților dispozitivului
  • Utilizarea CUDA API pentru alocarea și dezalocarea memoriei dispozitivului.
  • Utilizarea CUDA API pentru a copia date între gazdă și dispozitiv
  • Utilizarea CUDA API pentru a lansa nuclee și a sincroniza fire de execuție
  • Utilizarea CUDA API pentru gestionarea erorilor și a excepțiilor

CUDA C/C++

  • Înțelegerea rolului CUDA C/C++ în programul dispozitivului.
  • Utilizarea CUDA C/C++ pentru a scrie nuclee care se execută pe GPU și manipulează date.
  • Utilizarea tipurilor de date, a calificatorilor, a operatorilor și a expresiilor CUDA C/C++.
  • Utilizarea funcțiilor încorporate CUDA C/C++, cum ar fi funcțiile matematice, atomice, warp etc.
  • Utilizarea variabilelor încorporate CUDA C/C++, cum ar fi threadIdx, blockIdx, blockDim etc.
  • Utilizarea bibliotecilor CUDA C/C++, cum ar fi cuBLAS, cuFFT, cuRAND etc.

Modelul de memorie CUDA

  • Înțelegerea diferenței dintre modelele de memorie gazdă și dispozitiv
  • Utilizarea spațiilor de memorie CUDA, cum ar fi spațiile de memorie globală, partajată, constantă și locală.
  • Utilizarea obiectelor de memorie CUDA, cum ar fi pointeri, matrici, texturi și suprafețe.
  • Utilizarea modurilor de acces la memoria CUDA, cum ar fi read-only, write-only, read-write etc.
  • Utilizarea modelului de coerență a memoriei CUDA și a mecanismelor de sincronizare.

Modelul de execuție CUDA

  • Înțelegerea diferenței dintre modelele de execuție gazdă și dispozitiv
  • Utilizarea firelor, blocurilor și grilelor CUDA pentru a defini paralelismul
  • Utilizarea funcțiilor CUDA thread, cum ar fi threadIdx, blockIdx, blockDim etc.
  • Utilizarea funcțiilor de bloc CUDA, cum ar fi __syncthreads, __threadfence_block etc.
  • Utilizarea funcțiilor de grilă CUDA, cum ar fi gridDim, gridSync, grupuri cooperative etc.

Depanarea

  • Înțelegerea erorilor și erorilor comune din programele CUDA.
  • Utilizarea depanatorului de cod Visual Studio pentru a inspecta variabilele, punctele de întrerupere, stiva de apeluri etc.
  • Utilizarea CUDA-GDB pentru depanarea programelor CUDA pe Linux
  • Utilizarea CUDA-MEMCHECK pentru a detecta erorile și scurgerile de memorie
  • Utilizarea NVIDIA Nsight pentru depanarea și analiza programelor CUDA pe Windows

Optimizare

  • Înțelegerea factorilor care afectează performanța programelor CUDA
  • Utilizarea tehnicilor de coalescență CUDA pentru a îmbunătăți debitul de memorie
  • Utilizarea tehnicilor de cache și prefetching CUDA pentru a reduce latența memoriei
  • Utilizarea tehnicilor de memorie partajată și de memorie locală CUDA pentru a optimiza accesările de memorie și lățimea de bandă
  • Utilizarea instrumentelor de profilare și a instrumentelor de profilare CUDA pentru a măsura și îmbunătăți timpul de execuție și utilizarea resurselor

Rezumat și etape următoare

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 CUDA pentru a programa NVIDIA GPUs și a exploata paralelismul acestora.
  • Dezvoltatorii care doresc să scrie cod de înaltă performanță și scalabil care poate rula pe diferite dispozitive CUDA
  • Programatori care doresc să exploreze aspectele de nivel scăzut ale programării GPU și să își optimizeze performanța codului lor
 28 ore

Numărul de participanți



Pret per participant

Mărturii (1)

Cursuri înrudite

GPU Programming with OpenCL

28 ore

GPU Programming - OpenCL vs CUDA vs ROCm

28 ore

AMD GPU Programming

28 ore

ROCm for Windows

21 ore

Introduction to GPU Programming

21 ore

Categorii înrudite