Kom i kontakt
 Varaktighet 28 timmar

Kursplan

Introduktion

  • Vad är CUDA?
  • CUDA jämfört med OpenCL och SYCL
  • Överblick över CUDAs funktioner och arkitektur
  • Inställning av utvecklingsmiljön

Kom igång

  • Skapa ett nytt CUDA-projekt med Visual Studio Code
  • Utforska projektstrukturen och filerna
  • Kompilera och exekvera programmet
  • Visa utdata med printf och fprintf

CUDA API

  • Förstå rollen av CUDA API:t i värddatortprogrammet
  • Använda CUDA API:t för att fråga efter enhetsinformation och egenskaper
  • Använda CUDA API:t för att allokera och frigöra enhetsminne
  • Använda CUDA API:t för att kopiera data mellan värddator och enhet
  • Använda CUDA API:t för att starta kärnor och synkronisera trådar
  • Använda CUDA API:t för att hantera fel och undantag

CUDA C/C++

  • Förstå rollen av CUDA C/C++ i enhetsprogrammet
  • Använda CUDA C/C++ för att skriva kärnor som exekveras på GPU: n och manipulerar data
  • Använda CUDA C/C++ datatyper, kvalificerare, operatörer och uttryck
  • Använda CUDA C/C++ inbyggda funktioner, såsom matematik, atomära operationer, 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.

CUDAs minnesmodell

  • Förstå skillnaden mellan värddatortens och enhetens minnesmodeller
  • Använda CUDAs minnesutrymmen, såsom globalt, delat, konstant och lokalt
  • Använda CUDAs minnesobjekt, såsom pekar, arrayer, texturer och ytor
  • Använda CUDAs minnesåtkomstlägen, såsom läsläge, skrivläge, läs/skriv, etc.
  • Använda CUDAs minneskonsistensmodell och synkroniseringsmekanismer

CUDAs exekveringsmodell

  • Förstå skillnaden mellan värddatortens och enhetens exekveringsmodeller
  • Använda CUDA trådar, block och rutenet (grids) för att definiera parallelismen
  • Använda CUDA trådfunktioner, såsom threadIdx, blockIdx, blockDim, etc.
  • Använda CUDA blockfunktioner, såsom __syncthreads, __threadfence_block, etc.
  • Använda CUDA rutefunktioner, såsom gridDim, gridSync, cooperative groups, etc.

Felsökning

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

Optimering

  • Förstå faktorer som påverkar prestandan hos CUDA-program
  • Använda CUDAs teknik för sammanfogning (coalescing) för att förbättra minnesgenomströmningen
  • Använda CUDAs cachning- och förhämtningstekniker för att minska minneslatens
  • Använda CUDAs delat minne- och lokalt minnesstekniker för att optimera minnesåtkomster och bandbredd
  • Använda CUDAs profilering och profileringstverktyg för att mäta och förbättra exekveringstiden och resursutnyttjandet

Krav

  • Förståelse för C/C++-språket och koncept inom parallell programmering
  • Grundläggande kunskap om datorarkitektur och minneshierarki
  • Erfarenhet av kommandotolsverktyg och kodeditorer

Målgrupp

  • Utvecklare som vill lära sig att använda CUDA för att programmera NVIDIA GPUs och utnyttja deras parallelism
  • Utvecklare som vill skriva högpresterande och skalbar kod som kan köras på olika CUDA-enheter
  • Programmerare som vill utforska lågnivåaspekter av GPU-programmering och optimera kodens prestanda

Antal deltagare


Pris per deltagare

Kommande Kurser

Relaterade Kategorier