Kursplan

Introduktion

  • Vad är CUDA?
  • CUDA vs OpenCL vs SYCL
  • Översikt över CUDA-funktioner och arkitektur
  • Att sätta upp utvecklingsmiljön

Komma igång

  • Skapa ett nytt CUDA-projekt med Visual Studio-koden
  • Utforska projektstrukturen och filerna
  • Kompilera och köra programmet
  • Visar utdata med printf och fprintf

CUDA API

  • Förstå rollen för CUDA API i värdprogrammet
  • Använder CUDA API för att fråga enhetsinformation och funktioner
  • Använder CUDA API för att allokera och avallokera enhetsminne
  • Använder CUDA API för att kopiera data mellan värd och enhet
  • Använder CUDA API för att starta kärnor och synkronisera trådar
  • Använder CUDA API för att hantera fel och undantag

CUDA C/C++

  • Förstå rollen för CUDA C/C++ i enhetsprogrammet
  • Använda CUDA C/C++ för att skriva kärnor som körs på GPU och manipulera data
  • Använder CUDA C/C++ datatyper, kvalificerare, operatorer och uttryck
  • Använda CUDA C/C++ inbyggda funktioner, såsom matematik, atomic, warp, etc.
  • Använda CUDA C/C++ inbyggda variabler, såsom threadIdx, blockIdx, blockDim, etc.
  • Använda CUDA C/C++ bibliotek, såsom cuBLAS, cuFFT, cuRAND, etc.

CUDA minnesmodell

  • Förstå skillnaden mellan värd- och enhetsminnesmodeller
  • Använda CUDA-minnesutrymmen, såsom globala, delade, konstanta och lokala
  • Använda CUDA-minnesobjekt, såsom pekare, arrayer, texturer och ytor
  • Använda CUDA-minnesåtkomstlägen, såsom skrivskyddad, skrivskyddad, läs-skriv, etc.
  • Använder CUDA minneskonsistensmodell och synkroniseringsmekanismer

CUDA Execution Model

  • Förstå skillnaden mellan värd- och enhetsexekveringsmodeller
  • Använder CUDA-trådar, block och rutnät för att definiera parallelliteten
  • Använda CUDA trådfunktioner, såsom threadIdx, blockIdx, blockDim, etc.
  • Använda CUDA-blockfunktioner, såsom __syncthreads, __threadfence_block, etc.
  • Använda CUDA-gridfunktioner, såsom gridDim, gridSync, kooperativa grupper, etc.

Felsökning

  • Förstå vanliga fel och buggar i CUDA-program
  • Användning av Visual Studio kodfelsökning för att inspektera variabler, brytpunkter, anropsstack, etc.
  • Använda CUDA-GDB för att felsöka CUDA-program på Linux
  • Använder CUDA-MEMCHECK för att upptäcka minnesfel och läckor
  • Använder NVIDIA Nsight för att felsöka och analysera CUDA-program på Windows

Optimering

  • Förstå de faktorer som påverkar prestandan för CUDA-program
  • Använder CUDA-koalesceringstekniker för att förbättra minneskapaciteten
  • Använder CUDA-caching och förhämtning för att minska minneslatens
  • Använder CUDA delat minne och lokala minnestekniker för att optimera minnesåtkomster och bandbredd
  • Använda CUDA-profilerings- och profileringsverktyg för att mäta och förbättra exekveringstiden och resursutnyttjandet

Sammanfattning och nästa steg

Krav

  • En förståelse för C/C++ språk och parallella programmeringskoncept
  • Grundläggande kunskaper om datorarkitektur och minneshierarki
  • Erfarenhet av kommandoradsverktyg och kodredigerare

Publik

  • Utvecklare som vill lära sig hur man använder CUDA för att programmera NVIDIA GPU och utnyttja deras parallellitet
  • Utvecklare som vill skriva högpresterande och skalbar kod som kan köras på olika CUDA-enheter
  • Programmerare som vill utforska lågnivåaspekterna av GPU programmering och optimera sin kodprestanda
 28 timmar

Antal deltagare


Price per participant

Vittnesmål (2)

Upcoming Courses