Course Outline

Invoering

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

Aan de slag

  • Een nieuw ROCm-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

ROCm-API

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

HIP-taal

  • Inzicht in de rol van HIP-taal in het apparaatprogramma
  • HIP-taal gebruiken om kernels te schrijven die worden uitgevoerd op de GPU en gegevens manipuleren
  • HIP-gegevenstypen, kwalificaties, operators en expressies gebruiken
  • Gebruik van ingebouwde HIP-functies, variabelen en bibliotheken om algemene taken en bewerkingen uit te voeren

ROCm- en HIP-geheugenmodel

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

ROCm- en HIP-uitvoeringsmodel

  • Het verschil begrijpen tussen host- en apparaatuitvoeringsmodellen
  • ROCm- en HIP-threads, blokken en rasters gebruiken om het parallellisme te definiëren
  • ROCm- en HIP-threadfuncties gebruiken, zoals hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, enz.
  • ROCm- en HIP-blokfuncties gebruiken, zoals __syncthreads, __threadfence_block, enz.
  • Met behulp van ROCm- en HIP-rasterfuncties, zoals hipGridDim_x, hipGridSync, coöperatieve groepen, enz.

Foutopsporing

  • Inzicht in de veelvoorkomende fouten en bugs in ROCm- en HIP-programma's
  • Gebruik Visual Studio Code debugger om variabelen, breekpunten, call-stack, enz. te inspecteren.
  • ROCm Debugger gebruiken om ROCm- en HIP-programma's op AMD-apparaten te debuggen
  • ROCm Profiler gebruiken om ROCm- en HIP-programma's op AMD-apparaten te analyseren

Optimalisatie

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

Samenvatting en volgende stap

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 ROCm en HIP kunnen gebruiken om AMD GPU's te programmeren en hun parallellisme te exploiteren
  • Ontwikkelaars die hoogwaardige en schaalbare code willen schrijven die op verschillende AMD-apparaten kan draaien
  • Programmeurs die de lagere aspecten van GPU programmeren willen verkennen en hun codeprestaties willen optimaliseren
 28 Hours

Getuigenissen (1)

Related Courses

GPU Programming - OpenCL vs CUDA vs ROCm

28 Hours

Related Categories