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

Antal deltagare


Price per participant

Upcoming Courses

Relaterade Kategorier