Intrati in legatura

Schița de curs

Introducere în calcul accelerat cu GPU

  • Computing heterogen și arhitectura CPU-GPU
  • Echipamente și spații de memorie CUDA
  • Compilarea codului CUDA C++ cu nvcc și CMake
  • Verificarea mediului de dezvoltare GPU

Algoritmi paraleli cu Thrust și CUB

  • Sortare, reducere și transformare accelerate cu GPU
  • Refacturarea algoritmilor STL pentru execuție pe GPU
  • Vectoarele de dispozitiv Thrust și politicile de execuție
  • Primitivile la nivel de dispozitiv CUB pentru pipeline-uri personalizate

Arhitectura și gestionarea memoriei GPU

  • Tipuri de memorie globală, constantă și textură
  • Alocarea explicită a memoriei dispozitivului și transferurile
  • Memorie unificată pentru acces simplificat la date
  • Coalescerea memoriei și optimizarea pattern-urilor de acces

Execuție asincronă cu fluxuri CUDA

  • Creatrea și gestionarea fluxurilor CUDA
  • Suprapunerea execuției kernel-urilor cu transferurile de date
  • Evenimentele CUDA pentru gestionarea dependențelor
  • Priorități ale fluxurilor și optimizarea concurenței

Scrierea de kernel-uri CUDA personalizate

  • Modelul de programare SIMT și execuția warp-ului
  • Configurarea lansării kernel-ului și buclele „grid-stride”
  • Indexarea thread-urilor și grile bidimensionale
  • Gestionarea erorilor și verificările API-ului runtime CUDA

Ierarhia de thread-uri și modelul de execuție

  • Grile, blocuri și thread-uri în codul dispozitivului
  • Primitivile la nivel de warp și operații de votare (ballot)
  • Sincronizarea la nivel de bloc și bariere
  • Analiza ocupării și utilizării resurselor

Grupuri cooperative pentru paralelism flexibil

  • API-ul cooperative_groups și tipurile de grupuri
  • Tiles ale blocurilor de thread-uri și tiled_partition
  • Lansări cooperative la nivel de grilă
  • Pattern-uri de sincronizare multi-grilă

Tehnici de optimizare a memoriei partajate

  • Băncile de memorie partajată și evitarea conflictelor de bancă
  • Strategii de tiling pentru operațiile cu matricee
  • Memoria partajată ca cache gestionat de utilizator
  • cuda::shared_memory_mdspan pentru vizualizări multidimensionale

Fuziunea kernel-urilor și pattern-uri avansate de paralelism

  • Combinarea mai multor kernel-uri pentru a reduce overhead-ul de lansare
  • Scanare, reducere după cheie și algoritmi segmentați
  • Operații atomice și structuri de date fără lock-uri
  • Atomici aggregate pe warp pentru randament

Profilare și optimizare cu Nsight Systems

  • Analiza cronologiei activității CPU și GPU
  • Identificarea gâturilor de flasche la transferul de memorie
  • Profilarea performanței și ocupării kernel-ului
  • Optimizare iterativă cu Nsight Compute

Funcționalități C++ moderne în codul dispozitivului CUDA

  • Lambdas, constexpr și auto în kernel-uri
  • Algoritmi paraleli C++17 și politici de execuție
  • Concepte și range-uri C++20 pe dispozitiv
  • Suport C++23 în nvcc și CCCL 3.x

Grile CUDA și asincronie avansată

  • Definirea și lansarea grilelor CUDA
  • Capturarea grilelor din execuția fluxurilor
  • Actualizarea grilei și nodurile de execuție condițională
  • Reducerea latenței de lansare pentru sarcini iterative

Pattern-uri de integrare pentru aplicații existente

  • Încapsularea codului GPU în interfețe C++
  • Gestionarea sistemelor multi-GPU și NUMA
  • Integrarea cu sistemele de build folosind CMake și CUDA
  • Depanarea codului dispozitivului cu cuda-gdb

Sumar și bune practici

  • Alegerea dintre Thrust, CUB și kernel-uri personalizate
  • Portabilitatea performanței pe arhitecturi GPU diferite
  • Organizarea codului și RAII pentru resursele CUDA
  • Următorii pași și căi de învățare avansată în CUDA

Cerințe

  • Competențe de bază în C++, inclusiv expresii lambda, șabloane și STL
  • Familiaritate cu algoritmii standard, containerele și iteratorii
  • Confortabilitate în utilizarea buclelor, condiționalelor și funcțiilor
  • Nu este necesară nicio cunoștință anterioară de programare CUDA sau GPU

Public țintă

  • Dezvoltatori de C++ care doresc să accelereze aplicațiile intensive din punct de vedere computațional folosind GPU-uri
  • Ingineri software care trec de la programarea exclusiv pe CPU la programarea paralelă heterogenă
  • Ingineri de performanță și dezvoltatori cantitativi care lucrează cu seturi mari de date
 8 Ore

Numărul de participanți


Pret per participant

Mărturii (3)

Cursuri viitoare

Categorii înrudite