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 ä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
Vittnesmål (2)
Väldigt interaktiv med olika exempel, med en bra progression i komplexitet mellan start och slut av träningen.
Jenny - Andheo
Kurs - GPU Programming with CUDA and Python
Machine Translated
Tränarnas energi och humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Kurs - NVIDIA GPU Programming - Extended
Machine Translated