Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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