Kursplan

Introduksjon

  • Hva er CUDA?
  • CUDA vs OpenCL vs SYCL
  • Oversikt over CUDA-funksjoner og arkitektur
  • Sette opp utviklingsmiljøet

Starter

  • Opprette et nytt CUDA-prosjekt ved å bruke Visual Studio-kode
  • Utforske prosjektstrukturen og filene
  • Kompilere og kjøre programmet
  • Viser utdata ved hjelp av printf og fprintf

CUDA API

  • Forstå rollen til CUDA API i vertsprogrammet
  • Bruker CUDA API for å spørre etter enhetsinformasjon og -funksjoner
  • Bruker CUDA API for å tildele og deallokere enhetsminne
  • Bruker CUDA API for å kopiere data mellom vert og enhet
  • Bruker CUDA API for å starte kjerner og synkronisere tråder
  • Bruker CUDA API for å håndtere feil og unntak

CUDA C/C++

  • Forstå rollen til CUDA C/C++ i enhetsprogrammet
  • Bruke CUDA C/C++ til å skrive kjerner som kjører på GPU og manipulere data
  • Bruk av CUDA C/C++ datatyper, kvalifiseringer, operatorer og uttrykk
  • Bruk av CUDA C/C++ innebygde funksjoner, som matematikk, atom, warp, etc.
  • Bruke CUDA C/C++ innebygde variabler, som threadIdx, blockIdx, blockDim, etc.
  • Bruk av CUDA C/C++-biblioteker, som cuBLAS, cuFFT, cuRAND, etc.

CUDA minnemodell

  • Forstå forskjellen mellom verts- og enhetsminnemodeller
  • Bruk av CUDA-minneplasser, for eksempel global, delt, konstant og lokal
  • Bruke CUDA-minneobjekter, for eksempel pekere, arrays, teksturer og overflater
  • Bruk av CUDA-minnetilgangsmoduser, for eksempel skrivebeskyttet, skrivebeskyttet, lese-skrive, etc.
  • Bruker CUDA minnekonsistensmodell og synkroniseringsmekanismer

CUDA utførelsesmodell

  • Forstå forskjellen mellom verts- og enhetsutførelsesmodeller
  • Bruke CUDA-tråder, blokker og rutenett for å definere parallelliteten
  • Bruke CUDA trådfunksjoner, som threadIdx, blockIdx, blockDim, etc.
  • Bruke CUDA-blokkfunksjoner, for eksempel __syncthreads, __threadfence_block, etc.
  • Bruke CUDA grid funksjoner, som gridDim, gridSync, samarbeidsgrupper, etc.

Feilsøking

  • Forstå de vanlige feilene og feilene i CUDA-programmer
  • Bruke Visual Studio Kodefeilsøker for å inspisere variabler, bruddpunkter, anropsstack, etc.
  • Bruke CUDA-GDB til å feilsøke CUDA-programmer på Linux
  • Bruker CUDA-MEMCHECK for å oppdage minnefeil og lekkasjer
  • Bruker NVIDIA Nsight til å feilsøke og analysere CUDA-programmer på Windows

Optimalisering

  • Forstå faktorene som påvirker ytelsen til CUDA-programmer
  • Bruk av CUDA-sammensmeltingsteknikker for å forbedre minnegjennomstrømningen
  • Bruk av CUDA-bufring og forhåndshentingsteknikker for å redusere minnelatens
  • Bruk av CUDA delt minne og lokale minneteknikker for å optimalisere minnetilgang og båndbredde
  • Bruk av CUDA-profilerings- og profileringsverktøy for å måle og forbedre gjennomføringstiden og ressursutnyttelsen

Sammendrag og neste trinn

Krav

  • En forståelse av C/C++ språk og parallellprogrammeringskonsepter
  • Grunnleggende kunnskap om dataarkitektur og minnehierarki
  • Erfaring med kommandolinjeverktøy og koderedigerere

Publikum

  • Utviklere som ønsker å lære å bruke CUDA til å programmere NVIDIA GPUer og utnytte parallelliteten deres
  • Utviklere som ønsker å skrive høyytelses og skalerbar kode som kan kjøres på forskjellige CUDA-enheter
  • Programmerere som ønsker å utforske lavnivåaspektene ved GPU programmering og optimalisere kodeytelsen
 28 timer

Antall deltakere



Price per participant

Testimonials (1)

Relaterte kurs

GPU Programming - OpenCL vs CUDA vs ROCm

28 timer

Related Categories