Mulțumim pentru trimiterea solicitării! Un membru al echipei noastre vă va contacta în curând.
Mulțumim pentru trimiterea rezervării! Un membru al echipei noastre vă va contacta în curând.
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