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
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
Vittnesmål (2)
Väldigt interaktiv med olika exempel, med en bra progression i komplexitet mellan start och slut av träningen.
Jenny - Andheo
Kurs - GPU Programming with CUDA and Python
Machine Translated
Tränarnas energi och humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Kurs - NVIDIA GPU Programming - Extended
Machine Translated