Kom i kontakt

Kursplan

Introduktion till GPU-accelererad beräkning

  • Heterogen beräkning och CPU-GPU-arkitektur.
  • CUDA-exekvering och minnesrum.
  • Kompilering av CUDA C++ med nvcc och CMake.
  • Verifiering av GPU-utvecklingsmiljön.

Parallella algoritmer med Thrust och CUB

  • GPU-accelererad sortering, reduktion och transformation.
  • Omfaktorisering av STL-algoritmer för GPU-exekvering.
  • Thrust-enhetsvektorer (device vectors) och exekveringspolicys.
  • CUB-enhetsbredda primitive operationer för anpassade pipeliner.

GPU-minnesarkitektur och hantering

  • Globalt, konstant och texturminne.
  • Explicit allokering av enhetsminne och datatransfer.
  • Unified Memory för förenklad dataåtkomst.
  • Minneskoalisering och optimering av åtkomstmönster.

Asynkron exekvering med CUDA-strömmar

  • Skapande och hantering av CUDA-strömmar.
  • Överlappning av kärnexekvering med datatransfer.
  • CUDA-händelser för beroendehantering.
  • Strömprioritering och optimering av konkurrens.

Skrivning av anpassade CUDA-kärnor

  • SIMT-programmeringsmodellen och warplexekvering.
  • Konfiguration av kärnstart och grid-strideloopar.
  • Trådinindexering och flerdimensionella nätverk (grids).
  • Felhantering och kontroll av CUDA Runtime API.

Trådstruktur och exekveringsmodell

  • Nätverk (grids), block och trådar i enhetskod.
  • Warpspecifika primitive operationer och röstningsoperationer (ballot operations).
  • Blocknivåsynchronisering och barriärer.
  • Analys av upptagning och resursutnyttjande (occupancy).

Kooperativa grupper för flexibel parallelism

  • cooperative_groups-API:t och gruppetyper.
  • Tråd-block-plattor och tiled_partition.
  • Kooperativa starter på nätverksnivå.
  • Mönster för multi-gridsynkronisering.

Optimeringstekniker med delat minne

  • Delningsminnesbanker och undvikande av bankkonflikter.
  • Plattostrategier för matrisoperationer.
  • Delt minne som användarhanterad cache.
  • cuda::shared_memory_mdspan för flerdimensionella visningar.

Kärnfusion och avancerade parallella mönster

  • Fusion av flera kärnor för att minska startöverhead.
  • Scan, reduce-by-key och segmenterade algoritmer.
  • Atomoperationer och låsdatstrukturer (lock-free data structures).
  • Warp-aggregerade atomoperationer för genomströmning.

Profilering och optimering med Nsight Systems

  • Tidslinjeanalys av CPU- och GPU-aktivitet.
  • Identifiering av flaskhalsar vid minnesöverföring.
  • Kärnprestanda och upptagningsprofiler.
  • Iterativ optimering med Nsight Compute.

Moderna C++-funktioner i CUDA-enhetskod

  • Lambda, constexpr och auto i kärnor.
  • C++17 parallella algoritmer och exekveringspolicys.
  • C++20-koncept och ranges på enheten (device).
  • C++23-stöd i nvcc och CCCL 3.x.

CUDA-grafer och avancerad asynkroni

  • Definition och start av CUDA-grafer.
  • Infångning av grafer från strömuxekvering.
  • Uppdatering av grafer och villkorliga exekveringsnoder.
  • Minskning av startlatens för iterativa arbetsbelastningar.

Integrationsmönster för befintliga applikationer

  • Inpacka GPU-kod bakom C++-gränssnitt.
  • Hantera flera GPU:er och NUMA-system.
  • Integrering i byggsystem med CMake och CUDA.
  • Felsökning av enhetskod med cuda-gdb.

Sammanfattning och bästa praxis

  • Val mellan Thrust, CUB och anpassade kärnor.
  • Prestationsportabilitet över olika GPU-arkitekturer.
  • Kodorganisation och RAII för CUDA-resurser.
  • Nästa steg och avancerade inlärningsvägar för CUDA.

Krav

  • Grundläggande C++-kompetens inklusive lambdauttryck, mallar (templates) och STL.
  • Kunskap om standardalgoritmer, containrar och iteratorer.
  • Bekantskap med loopar, villkorssatser och funktioner.
  • Ingen tidigare kunskap inom CUDA eller GPU-programmering krävs.

Målgrupp

  • C++-utvecklare som söker accelerera beräkningsintensiva applikationer med GPUs.
  • Mjukvaruingenjörer som övergår från enbart CPU-baserad programmering till heterogen parallellprogrammering.
  • Prestandaingenjörer och kvantitativa utvecklare som arbetar med stora dataset.
 8 Timmar

Antal deltagare


Pris per deltagare

Vittnesmål (3)

Kommande Kurser

Relaterade Kategorier