Kursplan

Introduktion

  • Vad är GPU-programmering?
  • Varför använda GPU-programmering?
  • Vilka utmaningar och utbyte finns i GPU-programmering?
  • Vilka ramverk finns för GPU-programmering?
  • Välja rätt ramverk för din tillämpning

OpenCL

  • Vad är OpenCL?
  • Vilka fördelar och nackdelar har OpenCL?
  • Sätta upp utvecklingsmiljön för OpenCL
  • Skapa ett grundläggande OpenCL-program som utför vektoraddition
  • Använda OpenCL API för att fråga enhetsinformation, allokera och deallokera minne på enheten, kopiera data mellan värd och enhet, starta kärnor och synkronisera trådar
  • Använda OpenCL C-språket för att skriva kärnor som körs på enheten och manipulera data
  • Använda OpenCL:s inbyggda funktioner, variabler och bibliotek för att utföra vanliga uppgifter och operationer
  • Använda OpenCL:s minutrymmen, som globalt, lokalt, konstant och privat, för att optimera datatransferer och minnesåtkomster
  • Använda OpenCL:s körningsmodell för att styra arbetsenheter (work-items), arbetsgrupper (work-groups) och ND-intervall som definierar parallellismen
  • Felsöka och testa OpenCL-program med verktyg som CodeXL
  • Optimerar OpenCL-program med tekniker som sammanfogning, cachning, förhandsladdning och profilering

CUDA

  • Vad är CUDA?
  • Vilka fördelar och nackdelar har CUDA?
  • Sätta upp utvecklingsmiljön för CUDA
  • Skapa ett grundläggande CUDA-program som utför vektoraddition
  • Använda CUDA API för att fråga enhetsinformation, allokera och deallokera minne på enheten, kopiera data mellan värd och enhet, starta kärnor och synkronisera trådar
  • Använda CUDA C/C++-språket för att skriva kärnor som körs på enheten och manipulera data
  • Använda CUDA:s inbyggda funktioner, variabler och bibliotek för att utföra vanliga uppgifter och operationer
  • Använda CUDA:s minutrymmen, som globalt, delat (shared), konstant och lokalt, för att optimera datatransferer och minnesåtkomster
  • Använda CUDA:s körningsmodell för att styra trådar, block och rutnät som definierar parallellismen
  • Felsöka och testa CUDA-program med verktyg som CUDA-GDB, CUDA-MEMCHECK och NVIDIA Nsight
  • Optimerar CUDA-program med tekniker som sammanfogning, cachning, förhandsladdning och profilering

ROCm

  • Vad är ROCm?
  • Vilka fördelar och nackdelar har ROCm?
  • Sätta upp utvecklingsmiljön för ROCm
  • Skapa ett grundläggande ROCm-program som utför vektoraddition
  • Använda ROCm API för att fråga enhetsinformation, allokera och deallokera minne på enheten, 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 manipulera data
  • Använda ROCm:s inbyggda funktioner, variabler och bibliotek för att utföra vanliga uppgifter och operationer
  • Använda ROCm:s minutrymmen, som globalt, lokalt, konstant och privat, för att optimera datatransferer och minnesåtkomster
  • Använda ROCm:s körningsmodell för att styra trådar, block och rutnät som definierar parallellismen
  • Felsöka och testa ROCm-program med verktyg som ROCm-Debugger och ROCm-Profiler
  • Optimerar ROCm-program med tekniker som sammanfogning, cachning, förhandsladdning och profilering

Jämförelse

  • Jämföra egenskaper, prestanda och kompatibilitet för OpenCL, CUDA och ROCm
  • Utvärdera GPU-program med bänkmarker och mått
  • Lära sig bästa praxis och tips för GPU-programmering
  • Utforska aktuella 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 programmeringstekniker
  • Grundläggande kunskap om datorarkitektur och minneshierarkin
  • Erfarenhet av kommandoradsverktyg och kodeditorer

Målgrupp

  • Utvecklare som vill lära sig hur man använder olika ramverk för GPU-programmering och jämför deras egenskaper, prestanda och kompatibilitet
  • Utvecklare som vill skriva portabelt och skalbart kod som kan köras på olika plattformar och enheter
  • Programmerare som vill utforska utbyte och utmaningar i GPU-programmering och optimering
 28 timmar

Antal deltagare


Pris per deltagare

Kommande Kurser

Relaterade Kategorier