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
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
8 Ore