Neem contact met ons op

Cursusaanbod

Inleiding

  • Wat is ROCm?
  • Wat is HIP?
  • ROCm versus CUDA versus OpenCL
  • Overzicht van de kenmerken en architectuur van ROCm en HIP
  • Het opzetten van de ontwikkelomgeving

Aan de slag

  • Een nieuw ROCm-project aanmaken met Visual Studio Code.
  • De structuur en bestanden van het project verkennen.
  • Het programma compileren en uitvoeren.
  • De output weergeven met behulp van printf en fprintf.

ROCm-API

  • De rol van de ROCm-API in het host-program begrijpen.
  • Apparaatinformatie en mogelijkheden raadplegen via de ROCm-API.
  • Geheugen op de GPU reserveren en vrijgeven met behulp van de ROCm-API.
  • Data overdragen tussen host en device door gebruik te maken van de ROCm-API.
  • Kernels starten en threads synchroniseren via de ROCm-API.
  • Fouten en uitzonderingen afhandelen met behulp van de ROCm-API.

HIP-taal

  • De rol van de HIP-taal in het device-program begrijpen.
  • Kernels schrijven die op de GPU worden uitgevoerd en data bewerken met behulp van HIP.
  • HIP-datatypen, kwalificerende termen, operators en expressies gebruiken.
  • Ingebouwde functies, variabelen en bibliotheken in HIP benutten voor veelvoorkomende operaties.

ROCm- en HIP-geheugenmodel

  • Het verschil tussen host- en device-geheugenmodellen begrijpen.
  • Gebruik maken van ROCm- en HIP-geheugentypen zoals globaal, gedeeld, constant en lokaal.
  • Geheugenobjecten als pointers, arrays, textures en surfaces inzetten via ROCm en HIP.
  • Het gebruik van verschillende toegangsmodi – zoals read-only, write-only en read-write – bij geheugenoperaties.
  • Het begrijpen van het geheugenconsistentiemodel en synchronisatiemechanismen in ROCm en HIP.

ROCm- en HIP-uitvoeringsmodel

  • Het onderscheid tussen host- en device-uitvoeringsmodellen begrijpen.
  • Parallelisme beheren met behulp van threads, blokken en grids in ROCm en HIP.
  • Functies zoals hipThreadIdx_x, hipBlockIdx_x en hipBlockDim_x gebruiken om threadbeheer te regelen.
  • Blokeigenschappen zoals __syncthreads en __threadfence_block hanteren om synchronisatie te bewerkstelligen.
  • Gridspecifieke functies zoals hipGridDim_x, hipGridSync en coöperatieve groepen inzetten voor uitgebreid threadbeheer.

Debugging

  • Vaak voorkomende fouten en bugs in ROCm- en HIP-programma’s herkennen.
  • Het debuggen van variabelen, breakpoints en de call stack met Visual Studio Code.
  • Het debuggen van programma's op AMD-apparaten door middel van ROCm Debugger.
  • De prestaties analyseren via ROCm Profiler voor verdere optimalisatie.

Optimalisatie

  • Factoren bepalen die de performantie van ROCm- en HIP-programma’s beïnvloeden.
  • Het toepassen van coëlescentietechnieken om geheugenbandbreedte te verhogen.
  • Caching- en prefetching-technieken gebruiken om geheugentraagheid terug te dringen.
  • Gedeeld en lokaal geheugen benutten om data-access en bandbreedte aanzienlijk te verbeteren.
  • Het meten en verfijnen van uitvoeringstijd en systeemgebruik door middel van profileringstechnieken.

Samenvatting en vervolgstappen

Vereisten

  • Basiskennis van de C/C++-taal en begrip van concepten rond parallel programmeren
  • Grondige kennis van computarchitectuur en het geheugenhiërarchiepatroon
  • Ervaring met command-line-tools en code-editors

Doelgroep

  • Ontwikkelaars die ROCm en HIP willen leren gebruiken om AMD-GPU’s te programmeren en hun parallelle capaciteiten optimaal in te zetten.
  • Ontwikkelaars die code met hoge prestaties en schaalbaarheid willen schrijven voor diverse AMD-apparaten.
  • Programmeurs die meer willen weten over de onderliggende aspecten van GPU-programmeren en hun codeprestaties verder willen optimaliseren.
 28 Uren

Aantal deelnemers


Prijs per deelnemer

Voorlopige Aankomende Cursussen

Gerelateerde categorieën