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 ramverk finns för GPU-programmering?
- Att välja rätt ramverk för din applikation
OpenCL
- Vad är OpenCL?
- Vilka är för- och nackdelar med OpenCL?
- Att ställa in utvecklingsmiljön för OpenCL
- Att skapa ett grundläggande OpenCL-program som utför vektoraddition
- Att använda OpenCL-API för att fråga efter enhetsinformation, allokera och frigöra enhetsminne, kopiera data mellan värd och enhet, starta kärnor och synkronisera trådar
- Att använda OpenCL C-språk för att skriva kärnor som körs på enheten och hanterar data
- Att använda OpenCL-byggda funktioner, variabler och bibliotek för att utföra vanliga uppgifter och operationer
- Att använda OpenCL-minnesutrymmen, såsom globala, lokala, konstanta och privata, för att optimera dataöverföringar och minnesåtkomst
- Att använda Sentry exekveringsmodell för att kontrollera arbetselementen, arbetsgrupperna och ND-rangerna som definierar parallellismen
- Att felsöka och testa OpenCL-program med verktyg som CodeXL
- Att optimera OpenCL-program med tekniker såsom sammansättning, cachning, förhandshämtning och profilering
CUDA
- Vad är CUDA?
- Vilka är för- och nackdelar med CUDA?
- Att ställa in utvecklingsmiljön för CUDA
- Att skapa ett grundläggande CUDA-program som utför vektoraddition
- Att använda CUDA-API för att fråga efter enhetsinformation, allokera och frigöra enhetsminne, kopiera data mellan värd och enhet, starta kärnor och synkronisera trådar
- Att använda CUDA C/C++-språk för att skriva kärnor som körs på enheten och hanterar data
- Att använda CUDA-byggda funktioner, variabler och bibliotek för att utföra vanliga uppgifter och operationer
- Att använda CUDA-minnesutrymmen, såsom globala, delade, konstanta och lokala, för att optimera dataöverföringar och minnesåtkomst
- Att använda CUDA-exekveringsmodellen för att kontrollera trådarna, blocken och rutnät som definierar parallellismen
- Att felsöka och testa CUDA-program med verktyg som CUDA-GDB, CUDA-MEMCHECK och NVIDIA Nsight
- Att optimera CUDA-program med tekniker såsom sammansättning, cachning, förhandshämtning och profilering
ROCm
- Vad är ROCm?
- Vilka är för- och nackdelar med ROCm?
- Att ställa in utvecklingsmiljön för ROCm
- Att skapa ett grundläggande ROCm-program som utför vektoraddition
- Att använda ROCm-API för att fråga efter enhetsinformation, allokera och frigöra enhetsminne, kopiera data mellan värd och enhet, starta kärnor och synkronisera trådar
- Att använda ROCm C/C++-språk för att skriva kärnor som körs på enheten och hanterar data
- Att använda ROCm-byggda funktioner, variabler och bibliotek för att utföra vanliga uppgifter och operationer
- Att använda ROCm-minnesutrymmen, såsom globala, lokala, konstanta och privata, för att optimera dataöverföringar och minnesåtkomst
- Att använda ROCm-exekveringsmodellen för att kontrollera trådarna, blocken och rutnät som definierar parallellismen
- Att felsöka och testa ROCm-program med verktyg som ROCm Debugger och ROCm Profiler
- Att optimera ROCm-program med tekniker såsom sammansättning, cachning, förhandshämtning och profilering
Jämförelse
- Jämföra egenskaper, prestanda och kompatibilitet hos OpenCL, CUDA och ROCm
- Utvärdera GPU-program med benchmark och mätvärden
- Lära sig bästa praxis och tips för GPU-programmering
- Undersöka nuvarande och framtida trender och utmaningar inom GPU-programmering
Sammanfattning och nästa steg
Krav
- En förståelse för C/C++-språket och parallella programmeringskoncept
- Grundläggande kunskaper om datorarkitektur och minneshierarki
- Erfarenhet av kommando-radverktyg och kodredigerare
Målgrupp
- Utvecklare som vill lära sig hur man använder olika ramverk för GPU-programmering och jämföra deras funktioner, prestanda och kompatibilitet
- Utvecklare som vill skriva portabel och skalbar kod som kan köras på olika plattformar och enheter
- Programmerare som vill utforska de kompromisser och utmaningar som finns inom GPU-programmering och optimering
28 timmar