Neem contact met ons op

Cursusaanbod

Inleiding tot versnelde computatie met GPU’s

  • Heterogene computatie en de architectuur van CPU-GPU-systemen.
  • CUDA-uitvoering en de verschillende geheugenruimtes.
  • CUDA C++ compileren met nvcc en CMake.
  • Het controleren van de GPU-ontwikkelomgeving.

Parallelle algoritmen met Thrust en CUB

  • GPU-versnelde sorteer-, reduceer- en transformatiealgoritmen.
  • Het herschrijven van STL-algoritmen zodat deze op GPU’s draaien.
  • Device vectors en uitvoeringsmethoden in Thrust.
  • CUB-primitieven voor geavanceerde dataverwerking.

GPU-geheugenarchitectuur en beheer

  • Soorten geheugen: globaal, constant en texture geheugen.
  • Handmatige allocatie en overdracht van apparaatgeheugen.
  • Gebruik van Unified Memory voor eenvoudigere datatoegang.
  • Optimalisatie door coësiever geheugengebruik en juiste toegangsmodellen.

Asynchrone uitvoering via CUDA streams

  • Het creëren en beheren van CUDA streams.
  • Kernel-uitvoering combineren met datatransferoperaties.
  • Gebruik van CUDA events voor het regelen van afhankelijkheden.
  • Tuning van streamprioriteiten en parallellisme.

Eigen CUDA-kernels schrijven

  • Het SIMT-programmeermodel en uitvoering binnen warps.
  • Kernlanceringsconfiguratie en grid-stride lussen.
  • Thread-indexering en meerdimensionale grids.
  • Foutdetectie en controle via de CUDA runtime-API.

Hierarchie van threads en uitvoeringsmodel

  • Structuur van grids, blokken en threads in apparaatcode.
  • Operaties op warpniveau en ballot-mechanismen.
  • Synchronisatie binnen blokken en barrier-functies.
  • Analyse van resourcegebruik en processorbezettingsgraad.

Cooperative Groups voor flexibel parallelle programmeren

  • Het cooperative_groups-API en de verschillende groepstypen.
  • Toepassing van thread-blok tiles via tiled_partition.
  • Gelijktijdige kernellanceringen op grid-niveau.
  • Synchronisatiemethoden voor meerdere grids.

Optimalisatietechnieken voor shared memory

  • Ontwijking van bankconflicten bij shared memory-gebruik.
  • Toepassing van tilingstrategieën in matrixoperaties.
  • Shared memory als eigen beheerde cache.
  • Gebruik van cuda::shared_memory_mdspan voor multidimensionale representatie.

Kernel-fusie en geavanceerde parallelle patronen

  • Het combineren van meerdere kernels om overhead te verminderen.
  • Algoritmen zoals scan, reduce-by-key en gesegmenteerde verwerking.
  • Toepassing van atomaire operaties en foutloze datastructuren.
  • Gebruik van warp-aggregated atomics voor hogere doorvoer.

Profielen maken en optimaliseren met Nsight Systems

  • Tijdlijnanalyse van CPU- en GPU-activiteiten.
  • Het opsporen van belemmeringen bij datatransfer.
  • Analyse van kernelprestaties en processorbezetting.
  • Stapsgewijze optimalisatie met behulp van Nsight Compute.

Moderne C++-functies in CUDA-apparaatcode

  • Lambda-expressies, constexpr en auto binnen kernels.
  • C++17-parallele algoritmen en uitvoeringsmodellen.
  • Concepten en ranges volgens C++20 op het apparaatniveau.
  • Ondersteuning voor C++23 binnen nvcc en CCCL 3.x.

CUDA Graphs en geavanceerde asynchrone technieken

  • Het definiëren en uitvoeren van CUDA-graphs.
  • Grafiekregistratie op basis van stream-uitvoering.
  • Grafiekupdates en conditionele node-executie.
  • Vermindering van lanceringsvertraging bij iteratieve workloads.

Integratie met bestaande toepassingen

  • Het insluiten van GPU-code achter C++-interfaces.
  • Beheer van multi-GPU- en NUMA-systemen.
  • Integratie van CUDA in buildsystemen met CMake.
  • Debuggen van apparaatcode via cuda-gdb.

Samenvatting en beste praktijken

  • Keuzes maken tussen Thrust, CUB en zelfgeschreven kernels.
  • Prestatieoptimalisatie ongeacht GPU-architectuur.
  • Codeorganisatie met behulp van RAII voor CUDA-resources.
  • Volgende stappen en vervolgcursussen binnen het CUDA-domein.

Vereisten

  • Basisvaardigheden in C++, waaronder lambda-expressies, templates en het gebruik van de STL
  • Kennis van standaardalgoritmen, containers en iterators
  • Gebruik van lussen, conditionals en functies zonder problemen
  • Erfarenheid met CUDA of GPU-programmeren is niet vereist

Doelgroep

  • C++-ontwikkelaars die rekenintensieve toepassingen willen versnellen met behulp van GPU’s.
  • Software-engineers die van puur CPU-gebaseerde naar heterogene parallelle programmeermethoden overstappen.
  • Prestatie-engineers en datawetenschappers die werken met grote datasets.
 8 Uren

Aantal deelnemers


Prijs per deelnemer

Getuigenissen (3)

Voorlopige Aankomende Cursussen

Gerelateerde categorieën