Kom i kontakt

Kursplan

GPU-beräkning och CUDA-arkitektur

  • Olika arkitekturella skillnader mellan CPU och GPU
  • NVIDIAs modell för streaming-multiprocessorer på GPU
  • Översikt över CUDA:s programmeringsmodell
  • Heterogen beräkning och host-device-paradigmet

Konfiguration av utvecklingsmiljön för CUDA

  • Installation av CUDA Toolkit 13.x
  • NVCC-kompilator och arbetsflöde för byggen
  • Verifiering av miljö med hjälp av enhetsförfrågningar (device queries)
  • Integration i IDE och utvecklingsverktyg

Skrivning och start av CUDA-kerneler

  • Syntax och kvalificerare för kernelfunktioner
  • Konfiguration och körning vid start
  • Matrisaddition och grundläggande mönster för dataparallellitet
  • Makron för felkontroll i CUDA

CUDA:s trådhierarki och exekveringsmodell

  • Organisation av grid, block och tråd
  • Trådadressering och beräkning av globalt ID
  • Warp-exekvering och SIMT-modellen (Single Instruction, Multiple Threads)
  • Ocuppies och resursutnyttjande

GPU-minnesarkitektur och hantering

  • Minestyper: globalt, shared, konstant samt register
  • Allokering och frigöring av minne på enheten (device)
  • Dataöverföringar mellan värd (host) och enhet (device) i båda riktningarna
  • Användning av shared memory för samarbete inom block

Unified Memory och datamigrering

  • Modellen för unified memory och hanterade allokeringar
  • Sidmigrering (page migration) och on-demand paging
  • Asynkron förhandsladdning med cudaMemPrefetchAsync
  • Minnesråd (memory advice) för tillgångsmönster

Systemprofilering med Nsight Systems

  • Tidslinjeanalys i Nsight Systems
  • Identifiering av synkroniseringspunkter mellan CPU och GPU
  • Visualisering av kernel-exekvering och dataöverföringar
  • Tolkning av systemnivåns prestandadata

Kernelloptimering med Nsight Compute

  • Interaktiv kernprofilering i Nsight Compute
  • Analys av minneshastighet och bandbredd
  • Utnyttjandegrad för beräkning och statistik över warp-status
  • Riktad analys och riktlinjer för optimering

Samtidiga streamar och asynkrona operationer

  • CUDA-streamar och standardströmmen
  • Överlappande exekvering av kerneler och dataöverföringar
  • Stream-synkronisering och händelser i CUDA
  • Mönster för flerstremningspipeliner

Felhantering och felsökningsverktyg

  • Felkoder i CUDA API och strategier för återhämtning
  • Compute-sanitizer för kontroll av minnesåtkomst
  • cuda-gdb för felsökning av kerneler
  • Assertioner och synkron detektion av fel

Profilbaserat optimeringsflöde

  • Iterativ metodik för profilering
  • Identifiering och prioritering av flaskhalsar
  • Testning av prestandaregressioner
  • Dokumentation av optimeringsbeslut

Projekt: Slutförd acceleratorlösning

  • Design av en komplett GPU-accelererad lösning
  • Integration av profilering under hela utvecklingsprocessen
  • Prestandamätningar och rapportering
  • Overväganden för driftsättning i produktion

Krav

  • Gott grundläggande kunnande i programmering med C/C++, inklusive variabler, loopar, villkorsuttryck, funktioner och hantering av arrayer
  • Vana vid att kompilera och köra program från kommandoraden
  • Ingen tidigare erfarenhet av GPU- eller CUDA-programmering krävs

Målgrupp

  • Programvaruutvecklare och ingenjörer som söker accelerera C/C++-applikationer med GPU:er
  • Vetenskapliga forskare och HPC-praktiker som övergår från enbart CPU-baserad beräkning till heterogen beräkning
  • Tekniska ledare som utvärderar GPU-accelerering för produktionsarbetsbelastningar
 8 Timmar

Antal deltagare


Pris per deltagare

Kommande Kurser

Relaterade Kategorier