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 GPU programmering?
- Varför använda GPU programmering?
- Vilka är utmaningarna och kompromisserna med GPU programmering?
- Vilka är ramarna och verktygen för GPU programmering?
- Att välja rätt ramverk och verktyg för din applikation
OpenCL
- Vad är OpenCL?
- Vilka är fördelarna och nackdelarna med OpenCL?
- Konfigurera utvecklingsmiljön för OpenCL
- Skapa ett grundläggande OpenCL program som utför vektortillägg
- Använda OpenCL API för att fråga enhetsinformation, allokera och avallokera enhetsminne, kopiera data mellan värd och enhet, starta kärnor och synkronisera trådar
- Använder OpenCL C-språk för att skriva kärnor som körs på enheten och manipulerar data
- Använda OpenCL inbyggda funktioner, variabler och bibliotek för att utföra vanliga uppgifter och operationer
- Använda OpenCL minnesutrymmen, såsom globala, lokala, konstanta och privata, för att optimera dataöverföringar och minnesåtkomster
- Använder OpenCL exekveringsmodell för att styra arbetsobjekt, arbetsgrupper och ND-intervall som definierar parallelliteten
- Felsökning och testning av OpenCL program med hjälp av verktyg som CodeXL
- Optimera OpenCL program med tekniker som koalescering, cachning, förhämtning och profilering
CUDA
- Vad är CUDA?
- Vilka är fördelarna och nackdelarna med CUDA?
- Att sätta upp utvecklingsmiljön för CUDA
- Skapa ett grundläggande CUDA-program som utför vektortillägg
- Använda CUDA API för att fråga enhetsinformation, allokera och avallokera enhetsminne, kopiera data mellan värd och enhet, starta kärnor och synkronisera trådar
- Använder språket CUDA C/C++ för att skriva kärnor som körs på enheten och manipulerar data
- Använda CUDA inbyggda funktioner, variabler och bibliotek för att utföra vanliga uppgifter och operationer
- Använda CUDA-minnesutrymmen, såsom globala, delade, konstanta och lokala, för att optimera dataöverföringar och minnesåtkomster
- Använder CUDA exekveringsmodell för att styra trådar, block och rutnät som definierar parallelliteten
- Felsökning och testning av CUDA-program med hjälp av verktyg som CUDA-GDB, CUDA-MEMCHECK och NVIDIA Nsight
- Optimera CUDA-program med hjälp av tekniker som koalescering, cachning, förhämtning och profilering
ROCm
- Vad är ROCm?
- Vilka är fördelarna och nackdelarna med ROCm?
- Sätta upp utvecklingsmiljön för ROCm
- Skapa ett grundläggande ROCm-program som utför vektortillägg
- Använda ROCm API för att fråga enhetsinformation, allokera och avallokera enhetsminne, kopiera data mellan värd och enhet, starta kärnor och synkronisera trådar
- Använda ROCm C/C++-språket för att skriva kärnor som körs på enheten och manipulerar data
- Använda ROCm inbyggda funktioner, variabler och bibliotek för att utföra vanliga uppgifter och operationer
- Använda ROCm-minnesutrymmen, såsom globala, lokala, konstanta och privata, för att optimera dataöverföringar och minnesåtkomster
- Använder ROCm exekveringsmodell för att styra trådar, block och rutnät som definierar parallelliteten
- Felsökning och testning av ROCm-program med hjälp av verktyg som ROCm Debugger och ROCm Profiler
- Optimera ROCm-program med hjälp av tekniker som koalescing, caching, förhämtning och profilering
HÖFT
- Vad är HIP?
- Vilka är fördelarna och nackdelarna med HIP?
- Sätta upp utvecklingsmiljön för HIP
- Skapa ett grundläggande HIP-program som utför vektortillägg
- Använder HIP-språk för att skriva kärnor som körs på enheten och manipulerar data
- Använda HIP inbyggda funktioner, variabler och bibliotek för att utföra vanliga uppgifter och operationer
- Använda HIP-minnesutrymmen, såsom globala, delade, konstanta och lokala, för att optimera dataöverföringar och minnesåtkomster
- Använder HIP-exekveringsmodell för att styra trådar, block och rutnät som definierar parallelliteten
- Felsökning och testning av HIP-program med hjälp av verktyg som ROCm Debugger och ROCm Profiler
- Optimera HIP-program med tekniker som koalescing, caching, förhämtning och profilering
Jämförelse
- Jämför funktioner, prestanda och kompatibilitet för OpenCL, CUDA, ROCm och HIP
- Utvärdera GPU program med hjälp av benchmarks och mått
- Lär dig de bästa metoderna och tipsen för GPU programmering
- Utforska nuvarande och framtida trender och utmaningar inom GPU programmering
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 grunderna i GPU programmering och de viktigaste ramverken och verktygen för att utveckla GPU applikationer
- Utvecklare som vill skriva bärbar och skalbar kod som kan köras på olika plattformar och enheter
- Programmerare som vill utforska fördelarna och utmaningarna med GPU programmering och optimering
21 timmar