Course Outline

Invoering

  • Wat is CUDA?
  • CUDA versus OpenCL versus SYCL
  • Overzicht van CUDA-functies en architectuur
  • Het opzetten van de ontwikkelomgeving

Aan de slag

  • Een nieuw CUDA-project maken met behulp van Visual Studio Code
  • Het verkennen van de projectstructuur en bestanden
  • Het compileren en uitvoeren van het programma
  • De uitvoer weergeven met printf en fprintf

CUDA-API

  • Inzicht in de rol van CUDA API in het hostprogramma
  • CUDA API gebruiken om apparaatinformatie en -mogelijkheden op te vragen
  • CUDA API gebruiken om apparaatgeheugen toe te wijzen en de toewijzing ongedaan te maken
  • CUDA API gebruiken om gegevens tussen host en apparaat te kopiëren
  • CUDA API gebruiken om kernels te starten en threads te synchroniseren
  • CUDA API gebruiken om fouten en uitzonderingen af te handelen

CUDA C/C++

  • Inzicht in de rol van CUDA C/C++ in het apparaatprogramma
  • CUDA C/C++ gebruiken om kernels te schrijven die op de GPU worden uitgevoerd en gegevens manipuleren
  • Gebruik van CUDA C/C++-gegevenstypen, kwalificaties, operators en expressies
  • Gebruik van ingebouwde CUDA C/C++-functies, zoals wiskunde, atomic, warp, etc.
  • Met behulp van CUDA C/C++ ingebouwde variabelen, zoals threadIdx, blockIdx, blockDim, enz.
  • Gebruik van CUDA C/C++-bibliotheken, zoals cuBLAS, cuFFT, cuRAND, enz.

CUDA-geheugenmodel

  • Het verschil begrijpen tussen host- en apparaatgeheugenmodellen
  • CUDA-geheugenruimten gebruiken, zoals globaal, gedeeld, constant en lokaal
  • CUDA-geheugenobjecten gebruiken, zoals pointers, arrays, texturen en oppervlakken
  • Gebruik van CUDA-geheugentoegangsmodi, zoals alleen-lezen, alleen-schrijven, lezen-schrijven, enz.
  • Gebruik van CUDA-geheugenconsistentiemodel en synchronisatiemechanismen

CUDA-uitvoeringsmodel

  • Het verschil begrijpen tussen host- en apparaatuitvoeringsmodellen
  • Het gebruik van CUDA-threads, blokken en rasters om het parallellisme te definiëren
  • Gebruik van CUDA-threadfuncties, zoals threadIdx, blockIdx, blockDim, enz.
  • Gebruik van CUDA-blokfuncties, zoals __syncthreads, __threadfence_block, enz.
  • Gebruik van CUDA-rasterfuncties, zoals gridDim, gridSync, coöperatieve groepen, enz.

Foutopsporing

  • Inzicht in de veelvoorkomende fouten en bugs in CUDA-programma's
  • Gebruik Visual Studio Code debugger om variabelen, breekpunten, call-stack, enz. te inspecteren.
  • CUDA-GDB gebruiken om CUDA-programma's te debuggen op Linux
  • CUDA-MEMCHECK gebruiken om geheugenfouten en lekken te detecteren
  • NVIDIA Nsight gebruiken om CUDA-programma's op Windows te debuggen en analyseren

Optimalisatie

  • Inzicht in de factoren die de prestaties van CUDA-programma's beïnvloeden
  • Het gebruik van CUDA-coalescentietechnieken om de geheugendoorvoer te verbeteren
  • Het gebruik van CUDA-caching en prefetching-technieken om de geheugenlatentie te verminderen
  • Gebruik van CUDA gedeeld geheugen en lokale geheugentechnieken om geheugentoegang en bandbreedte te optimaliseren
  • Gebruik van CUDA-profilering en profileringstools om de uitvoeringstijd en het gebruik van middelen te meten en te verbeteren

Samenvatting en volgende stappen

Requirements

  • Een goed begrip van de C/C++-taal en parallelle programmeerconcepten
  • Basiskennis van computerarchitectuur en geheugenhiërarchie
  • Ervaring met opdrachtregelprogramma's en code-editors

Publiek

  • Ontwikkelaars die willen leren hoe ze CUDA kunnen gebruiken om NVIDIA GPU's te programmeren en hun parallelliteit te exploiteren
  • Ontwikkelaars die hoogwaardige en schaalbare code willen schrijven die op verschillende CUDA-apparaten kan worden uitgevoerd
  • Programmeurs die de lagere aspecten van GPU programmeren willen verkennen en hun codeprestaties willen optimaliseren
 28 Hours

Number of participants



Price per participant

Getuigenissen (1)

Related Courses

Administration of CUDA

35 Hours

GPU Programming with CUDA and Python

14 Hours

AMD GPU Programming

28 Hours

NVIDIA GPU Programming

14 Hours

Introduction to GPU Programming

21 Hours

GPU Programming with OpenACC

28 Hours

GPU Programming with OpenCL

28 Hours

GPU Programming - OpenCL vs CUDA vs ROCm

28 Hours

NVIDIA GPU Programming - Extended

21 Hours

ROCm for Windows

21 Hours

Hardware-Accelerated Video Analytics

14 Hours

Raster and Vector Graphics (Adobe Photoshop, CorelDraw)

28 Hours

Adobe LiveCycle Designer

14 Hours

Affinity Designer

14 Hours

Adobe Illustrator

14 Hours

Related Categories