Intrati in legatura

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

Numărul de participanți


Pret per participant

Cursuri viitoare

Categorii înrudite