Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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
Testimonials (2)
Veldig interaktiv med ulike eksempler, med god progresjon i kompleksitet mellom start og slutt på treningen.
Jenny - Andheo
Kurs - GPU Programming with CUDA and Python
Machine Translated
Trener energi og humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Kurs - NVIDIA GPU Programming - Extended
Machine Translated