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.
Durata 8 ore
Schița de curs
Calcul pe GPU și arhitectura CUDA
- Diferențe arhitecturale între CPU și GPU
- Modelul NVIDIA GPU streaming multiprocessor
- Prezentare generală a modelului de programare CUDA
- Calcul heterogen și paradigma gazdă-dispozitiv (host-device)
Configurarea mediului de dezvoltare CUDA
- Instalarea CUDA Toolkit 13.x
- Compiler-ul NVCC și fluxul de lucru de build
- Verificarea mediului cu interogări dispozitiv (device queries)
- Integrarea IDE și instrumente de dezvoltare
Scrierea și lansarea kernel-elor CUDA
- Sintaxa și calificatorii funcțiilor kernel
- Lansarea configurației și execuția
- Adunare de vectori și modele basic de tip paraleză date (data-parallel)
- Maciouri de verificare erori CUDA
Ierarhia thread-urilor CUDA și modelul de execuție
- Organizarea Grid, block și thread
- Indexarea thread-urilor și calculul ID-ului global
- Execuția Warp și modelul SIMT (Single Instruction, Multiple Threads)
- Occupancy și utilizarea resurselor
Arhitectura și gestionarea memoriei GPU
- Tipuri de memorie: global, shared, constant, registre
- Alocarea și eliberarea memorii dispozitiv
- Transferuri gazdă-dispozitiv și dispozitiv-gazdă
- Memoria shared pentru colaborare intra-block
Memorie unificată și migrația datelor
- Modelul de memorie unificată și alocări gestionate (managed allocations)
- Migrație pagini și paging on-demand
- Prefetching asincron cu cudaMemPrefetchAsync
- Sfaturi pentru modelul de acces la memorie (memory advice hints)
Profilare sistem-wide cu Nsight Systems
- Analisă pe timeline a Nsight Systems
- Identificarea punctelor de sincronizare CPU-GPU
- Vizualizarea execuției kernel-ului și transferurilor de memorie
- Interpretarea datelor de performanță la nivel de sistem
Optimizarea kernel-elor cu Nsight Compute
- Profilare interactivă a kernel-elor Nsight Compute
- Analisă throughput și lățime de bandă (bandwidth) pentru memorie
- Utilizarea calculului și statistici stare warp
- Analisă ghidată și reguli de optimizare
Stream-uri concurente și operațiuni asincrone
- Stream-uri CUDA și stream-ul implicit (default stream)
- Suprapunerea execuției kernel-ului cu transferuri de date
- Sincronizarea stream-urilor și evenimentele CUDA
- Modele de proiectare pentru pipeline-uri multi-stream
Gestionarea erorilor și instrumente de depanare (debugging)
- Coduri de eroare API CUDA și strategii de recuperare
- Compute-sanitizer pentru verificarea accesului la memorie
- cuda-gdb pentru depanarea kernel-elor
- Aserțiuni și detectarea sincronă a erorilor
Flux de lucru de optimizare bazat pe profilare
- Metodologie iterativă de profilare
- Identificarea și priorizarea gâtului de flacără (bottleneck)
- Testarea regresiei performanței
- Documentarea deciziilor de optimizare
Proiect end-to-end pentru aplicații accelerate
- Proiectarea unei soluții complete accelerate pe GPU
- Integrarea profilării în tot timpul dezvoltării
- Benchmarking și raportare performanță
- Considerații de implementare (deployment) pentru producție
Cerințe
- Competențe de bază în programarea C/C++ inclusiv tipuri de variabile, bucle, instrucțiuni condiționate, funcții și manipularea tablourilor
- Cunoștințe de compilare și execuție a programelor din linia de comandă
- Nu este necesară nicio experiență anterioară în programarea GPU sau CUDA
Public țintă
- Dezvoltatori și ingineri software care caută să accelereze aplicațiile C/C++ cu GPU-uri
- Cercetători științifici și practicieni HPC care trec de la calcul exclusiv pe CPU la calcul heterogen
- Lideri tehnici care evaluează accelerarea GPU pentru sarcini de producție