Tack för att du skickade din fråga! En av våra teammedlemmar kontaktar dig snart.
Tack för att du skickade din bokning! En av våra teammedlemmar kontaktar dig snart.
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