Intrati in legatura

Schița de curs

Introducere

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

Începutul

  • Crearea unui nou proiect CUDA folosind Visual Studio Code
  • Explorarea structurii și fișierelor proiectului
  • Compilarea și rularea programului
  • Afișarea rezultatului folosind printf și fprintf

API CUDA

  • Înțelegerea rolului API-ului CUDA în programul gazdă
  • Folosirea API-ului CUDA pentru a interoga informațiile și capacitățile dispozitivului
  • Folosirea API-ului CUDA pentru alocarea și eliberarea memoriei dispozitivului
  • Folosirea API-ului CUDA pentru copierea datelor între gazdă și dispozitiv
  • Folosirea API-ului CUDA pentru lansarea kernel-urilor și sincronizarea firelor de execuție
  • Folosirea API-ului CUDA pentru gestionarea erorilor și excepțiilor

CUDA C/C++

  • Înțelegerea rolului CUDA C/C++ în programul dispozitivului
  • Folosirea CUDA C/C++ pentru a scrie kernel-uri care se execută pe GPU și manipulează date
  • Folosirea tipurilor de date, calificatoarelor, operatorilor și expresiilor CUDA C/C++
  • Folosirea funcțiilor încorporate CUDA C/C++, cum ar fi math, atomic, warp, etc.
  • Folosirea variabilelor încorporate CUDA C/C++, cum ar fi threadIdx, blockIdx, blockDim, etc.
  • Folosirea bibliotecilor CUDA C/C++, cum ar fi cuBLAS, cuFFT, cuRAND, etc.

Modelul de memorie CUDA

  • Înțelegerea diferenței dintre modelele de memorie ale gazdei și dispozitivului
  • Folosirea spațiilor de memorie CUDA, cum ar fi global, shared, constant și local
  • Folosirea obiectelor de memorie CUDA, cum ar fi pointeri, array-uri, texturi și suprafețe
  • Folosirea modurilor de acces la memorie CUDA, cum ar fi read-only, write-only, read-write, etc.
  • Folosirea modelului de consistență a memoriei și a mecanismelor de sincronizare CUDA

Modelul de execuție CUDA

  • Înțelegerea diferenței dintre modelele de execuție ale gazdei și dispozitivului
  • Folosirea firelor, blocurilor și gridelor CUDA pentru a defini paralelismul
  • Folosirea funcțiilor de fire CUDA, cum ar fi threadIdx, blockIdx, blockDim, etc.
  • Folosirea funcțiilor de bloc CUDA, cum ar fi __syncthreads, __threadfence_block, etc.
  • Folosirea funcțiilor de grilă CUDA, cum ar fi gridDim, gridSync, grupuri cooperative, etc.

Depanare

  • Înțelegerea erorilor și bug-urilor comune în programele CUDA
  • Folosirea debugger-ului Visual Studio Code pentru a inspecta variabile, puncte de întrerupere, stivă de apeluri, etc.
  • Folosirea CUDA-GDB pentru a depana programe CUDA pe Linux
  • Folosirea CUDA-MEMCHECK pentru a detecta erori și scurgeri de memorie
  • Folosirea NVIDIA Nsight pentru a depana și analiza programe CUDA pe Windows

Optimizare

  • Înțelegerea factorilor care afectează performanța programelor CUDA
  • Folosirea tehnicilor de coalescing CUDA pentru a îmbunătăți debitul memoriei
  • Folosirea tehnicilor de caching și prefetching CUDA pentru a reduce latența memoriei
  • Folosirea tehnicilor de memorie shared și local CUDA pentru a optimiza accesul și lățimea de bandă a memoriei
  • Folosirea instrumentelor de profiling și profiling CUDA pentru a măsura și îmbunătăți timpul de execuție și utilizarea resurselor

Rezumat și pași următori

Cerințe

  • Înțelegerea limbajului C/C++ și a conceptelor 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 cum să folosească CUDA pentru a programa GPU-uri NVIDIA și să exploateze paralelismul acestora
  • Dezvoltatori care doresc să scrie cod de înaltă performanță și scalabil care să ruleze 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
 28 Ore

Numărul de participanți


Pret per participant

Cursuri viitoare

Categorii înrudite