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

Antal deltagare


Price per participant

Vittnesmål (2)

Upcoming Courses