Ta kontakt

Kursplan

Innføring i GPU-akselerert computing

  • Heterogen computing og CPU-GPU-arkitekturen
  • CUDA-kjøring og minneområder
  • Kompilering av CUDA C++ med nvcc og CMake
  • Verifisering av GPU-utviklingsmiljøet

Parallelle algoritmer med Thrust og CUB

  • GPU-akselerert sortering, reduksjon og transformasjon
  • Refaktorering av STL-algoritmer for GPU-kjøring
  • Thrust-enhetsvektorer og kjøringsspolicyer
  • CUB-enhetsprimitiver for tilpassede pipeline-ar

GPU-minnearkitektur og -administrasjon

  • Globalt, konstant- og teksturminnetyper
  • Eksplisitt tildeling og overføring av enhetsminne
  • Unified Memory for forenklet dataadgang
  • Minnekoaliesering og optimalisering av tilgangs mønstre

Asynkron kjøring med CUDA-strømmer

  • Oppretting og håndtering av CUDA-strømmer
  • Tilove kjernekjøring med dataoverføringer
  • CUDA-hendelser for avhengighetshåndtering
  • Strøm prioritering og tilpasning av konkurranse

Skriving av tilpassede CUDA-kjerner

  • SIMT-programmeringsmodellen og strupekjøring (warp execution)
  • Konfigurasjon for kjernelansering og grid-stride-løkker
  • Trådinndeksering og flerdimensionelle gratia
  • Feilhåndtering og sjekking av CUDA runtime API

Trådhiarki og kjøremode ll

  • Gratia, blokker og tråder i enhetskoden
  • Strupenivå-primitiver og ballot-operasjoner
  • Blokkningsnivå synkronisering og barrierer
  • Analyse av opptakelse og ressursutnyttelse

Cooperative Groups for fleksibel parallelisme

  • cooperative_groups-API-et og gruppetyper
  • Trådblokk-fliser og tiled_partition
  • Grati-nivå cooperative lanseringer
  • Multi-gratia synkroniseringsmønstre

Teknikker for optimalisering av delt minne (shared memory)

  • Delt minne-banker og unngåelse av bankkonflikter
  • Flisestrategier for matriseoperasjoner
  • Delt minne som brukeradministrert cache
  • cuda::shared_memory_mdspan for flerdimensjonale visninger

Kjernesmeltning og avanserte parallelle mønstre

  • Smelte flere kjerner sammen for å redusere lanseringsoverhead
  • Scan, reduce-by-key og segmenterte algoritmer
  • Atomare operasjoner og låsfrie datastrukturer
  • Strupe-aggregerte atomare operasjoner for ytelse

Profivering og optimalisering med Nsight Systems

  • Tidslinjeanalyse av CPU- og GPU-aktivitet
  • Identifisering av flaskehalser i dataoverføring
  • Profiling av kjernens ytelse og opptakelse
  • Itrativ optimalisering med Nsight Compute

Moderne C++-funksjoner i CUDA-enhetskoden

  • Lambda, constexpr og auto i kjerner
  • C++17 parallelle algoritmer og kjøringsspolicyer
  • C++20 begrep (concepts) og rekker på enheten
  • C++23-støtte i nvcc og CCCL 3.x

CUDA-grafer og avansert asynkronitet

  • Definere og lansere CUDA-grafer
  • Opptak av grafer fra strømkjøring
  • Oppdatering av grafer og betingede eksekveringsnodler
  • Redusering av lanseringslatens for iterative arbeidsbelastninger

Integrasjonsmønstre for eksisterende applikasjoner

  • Inneslutning av GPU-kode bak C++-grensesnitt
  • Håndtering av multi-GPU og NUMA-systemer
  • Integrasjon i bygg-systemet med CMake og CUDA
  • Fejlsøking av enhetskoden med cuda-gdb

Oppsummering og beste praksis

  • Valg mellom Thrust, CUB og tilpassede kjerner
  • Ytelsesportabilitet på tvers av GPU-arkitekturer
  • Kodeorganisering og RAII for CUDA-resurser
  • Neste steg og avanserte læringsbaner for CUDA

Krav

  • Grunnleggende C++-kompetanse inkludert lambda-uttrykk, maler (templates) og STL
  • Fortrolighet med standard algoritmer, beholdere og iteratorer
  • Behagelighet med løkker, betingelser og funksjoner
  • Ingen tidligere kunnskap om CUDA eller GPU-programmering kreves

Målgruppe

  • C++-utviklere som ønsker å akselerere beregningsintensive applikasjoner med GPU-er
  • Programvareingeniører som går over fra CPU-baserte systemer til heterogen parallel programmering
  • Ytelsesingeniører og kvantitative utviklere som arbeider med store datasett
 8 Timer

Antall deltakere


Pris per deltaker

Referanser (3)

Kommende kurs

Relaterte kategorier