Tack för att du skickade din fråga! En av våra teammedlemmar kontaktar dig snart.
Tack för att du skickade din bokning! En av våra teammedlemmar kontaktar dig snart.
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