Tack för att du skickade din fråga! En av våra teammedlemmar kontaktar dig snart.
Tack för att du skickade din bokning! En av våra teammedlemmar kontaktar dig snart.
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