Ta kontakt
 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

Antall deltakere


Pris per deltaker

Kommende kurs

Relaterte kategorier