Kursplan

Introduktion

  • Vad är ROCm?
  • Vad är HIP?
  • ROCm vs CUDA vs OpenCL
  • Översikt över ROCm och HIP funktioner och arkitektur
  • Att sätta upp utvecklingsmiljön

Komma igång

  • Skapa ett nytt ROCm-projekt med Visual Studio-koden
  • Utforska projektstrukturen och filerna
  • Kompilera och köra programmet
  • Visar utdata med printf och fprintf

ROCm API

  • Förstå rollen för ROCm API i värdprogrammet
  • Använder ROCm API för att fråga enhetsinformation och funktioner
  • Använder ROCm API för att allokera och avallokera enhetsminne
  • Använder ROCm API för att kopiera data mellan värd och enhet
  • Använder ROCm API för att starta kärnor och synkronisera trådar
  • Använder ROCm API för att hantera fel och undantag

HIP-språk

  • Förstå HIP-språkets roll i enhetsprogrammet
  • Använder HIP-språk för att skriva kärnor som körs på GPU och manipulerar data
  • Använda HIP-datatyper, kvalificerare, operatorer och uttryck
  • Använda HIP inbyggda funktioner, variabler och bibliotek för att utföra vanliga uppgifter och operationer

ROCm och HIP minnesmodell

  • Förstå skillnaden mellan värd- och enhetsminnesmodeller
  • Använda ROCm och HIP minnesutrymmen, såsom globala, delade, konstanta och lokala
  • Använda ROCm och HIP minnesobjekt, såsom pekare, arrayer, texturer och ytor
  • Använda ROCm och HIP minnesåtkomstlägen, såsom skrivskyddad, skrivskyddad, läs-skriv, etc.
  • Använder ROCm och HIP minne konsistensmodell och synkroniseringsmekanismer

ROCm och HIP Execution Model

  • Förstå skillnaden mellan värd- och enhetsexekveringsmodeller
  • Användning av ROCm- och HIP-trådar, block och rutnät för att definiera parallelliteten
  • Använda ROCm och HIP trådfunktioner, såsom hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
  • Använda ROCm- och HIP-blockfunktioner, såsom __syncthreads, __threadfence_block, etc.
  • Använda ROCm- och HIP-rutnätsfunktioner, såsom hipGridDim_x, hipGridSync, kooperativa grupper, etc.

Felsökning

  • Förstå vanliga fel och buggar i ROCm- och HIP-program
  • Användning av Visual Studio kodfelsökning för att inspektera variabler, brytpunkter, anropsstack, etc.
  • Använda ROCm Debugger för att felsöka ROCm- och HIP-program på AMD-enheter
  • Använda ROCm Profiler för att analysera ROCm- och HIP-program på AMD-enheter

Optimering

  • Förstå de faktorer som påverkar prestandan för ROCm- och HIP-program
  • Använder ROCm och HIP koalescerande tekniker för att förbättra minneskapaciteten
  • Användning av ROCm- och HIP-cache- och förhämtningstekniker för att minska minneslatens
  • Användning av ROCm och HIP delat minne och lokala minnestekniker för att optimera minnesåtkomst och bandbredd
  • Använda ROCm och HIP 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 ROCm och HIP för att programmera AMD GPU och utnyttja deras parallellitet
  • Utvecklare som vill skriva högpresterande och skalbar kod som kan köras på olika AMD-enheter
  • Programmerare som vill utforska lågnivåaspekterna av GPU programmering och optimera sin kodprestanda
 28 timmar

Antal deltagare



Price per participant

Vittnesmål (1)

Relaterade Kurser

GPU Programming - OpenCL vs CUDA vs ROCm

28 timmar

Relaterade Kategorier