Takk for at du sendte din henvendelse! En av våre teammedlemmer vil kontakte deg straks.
Takk for at du sendte din bestilling! En av våre teammedlemmer vil kontakte deg straks.
Varighet 28 timer
Kursplan
Innføring
- Hva er CUDA?
- CUDA vs OpenCL vs SYCL
- Generelt om CUDA-funksjoner og -arkitektur
- Oppsett av utviklingsmiljøet
Start på riktig måte
- Opretting av et nytt CUDA-prosjekt ved hjelp av Visual Studio Code
- Utforsking av prosjektstrukturen og filer
- Kompilering og kjøring av programmet
- Vising av output ved hjelp av printf og fprintf
CUDA API
- Forståelsen av rollen til CUDA API i vertsprogrammet
- Bruk av CUDA API til å hente informasjon og evner fra enheten
- Bruk av CUDA API til å allokere og deallokere enhetsminne
- Bruk av CUDA API til å kopiere data mellom vert og enhet
- Bruk av CUDA API til å starte kjerner og synkronisere tråder
- Bruk av CUDA API til å håndtere feil og unntak
CUDA C/C++
- Forståelsen av rollen til CUDA C/C++ i enhetsprogrammet
- Bruk av CUDA C/C++ til å skrive kjerner som kjøres på GPU-en og manipulerer data
- Bruk av CUDA C/C++ datatyper, kvalifiseringsord, operatører og uttrykk
- Bruk av CUDA C/C++ innebygde funksjoner, som matematiske, atomare, warp, osv.
- Bruk av CUDA C/C++ innebygde variabler, som threadIdx, blockIdx, blockDim, osv.
- Bruk av CUDA C/C++ biblioteker, som cuBLAS, cuFFT, cuRAND, osv.
CUDA minnemodell
- Forståelsen av forskjellen mellom minnemodeller for vert og enhet
- Bruk av CUDA minnerom, som globalt, delt, konstant og lokalt
- Bruk av CUDA minneobjekter, som pekere, arrayer, teksturområder og overflater
- Bruk av CUDA minnetilgangsmoduser, som skrivebeskyttet, skrivespesifikk, les/skriv, osv.
- Bruk av CUDA minnekonsistensmodell og synkroniseringsmekanismer
CUDA eksekveringsmodell
- Forståelsen av forskjellen mellom eksekveringsmodeller for vert og enhet
- Bruk av CUDA tråder, blokker og rutenett for å definere parallelismen
- Bruk av CUDA trådfunksjoner, som threadIdx, blockIdx, blockDim, osv.
- Bruk av CUDA blokkfunksjoner, som __syncthreads, __threadfence_block, osv.
- Bruk av CUDA rutenettfunksjoner, som gridDim, gridSync, kooperative grupper, osv.
Feilsøking
- Forståelsen av vanlige feil og bugs i CUDA-programmer
- Bruk av Visual Studio Code feilsøker for å undersøke variabler, bruddpunkter, kallestack, osv.
- Bruk av CUDA-GDB for å feilsøke CUDA-programmer på Linux
- Bruk av CUDA-MEMCHECK for å avdekke minnefeil og lekkasjer
- Bruk av NVIDIA Nsight for å feilsøke og analysere CUDA-programmer på Windows
Optimalisering
- Forståelsen av faktorer som påvirker ytelsen til CUDA-programmer
- Bruk av CUDA samlingsteknikker for å forbedre minnegjennomstrømning
- Bruk av CUDA caching og forhåndshentingsteknikker for å redusere minnelatens
- Bruk av CUDA delt minne og lokalt minne teknikker for å optimalisere minnetilgang og båndbredde
- Bruk av CUDA profilering og profileringsverktøy for å måle og forbedre eksekveringstid og ressursutnyttelse
Krav
- Forståelse av C/C++-språket og konseptene for parallel programmering
- Grunnkunnskaper i datamaskinarkitektur og minnhierarki
- Opplevelse med kommandolinjeværktøy og kodeeditorer
Målgruppe
- Utviklere som ønsker å lære hvordan man bruker CUDA til å programmere NVIDIA-GPUs og utnytte deres parallelisme
- Utviklere som ønsker å skrive kode med høy ytelse og stor skalerbarhet som kan kjøres på forskjellige CUDA-enheter
- Programmerere som ønsker å utforske lavtnivå-aspekter av GPU-programmering og optimalisere kodytelsen