Kursplan

Introduksjon

  • Hva er GPU programmering?
  • Hvorfor bruke GPU programmering?
  • Hva er utfordringene og avveiningene ved GPU programmering?
  • Hva er rammeverket og verktøyene for GPU programmering?
  • Velge riktig rammeverk og verktøy for din applikasjon

OpenCL

  • Hva er OpenCL?
  • Hva er fordelene og ulempene med OpenCL?
  • Sette opp utviklingsmiljøet for OpenCL
  • Opprette et grunnleggende OpenCL program som utfører vektoraddisjon
  • Bruke OpenCL API til å spørre etter enhetsinformasjon, tildele og deallokere enhetsminne, kopiere data mellom vert og enhet, starte kjerner og synkronisere tråder
  • Bruke OpenCL C-språk for å skrive kjerner som kjører på enheten og manipulerer data
  • Bruke OpenCL innebygde funksjoner, variabler og biblioteker for å utføre vanlige oppgaver og operasjoner
  • Bruk av OpenCL minneplasser, for eksempel global, lokal, konstant og privat, for å optimalisere dataoverføringer og minnetilgang
  • Bruke OpenCL utførelsesmodell for å kontrollere arbeidselementene, arbeidsgruppene og ND-områdene som definerer parallelliteten
  • Feilsøking og testing av OpenCL programmer ved hjelp av verktøy som CodeXL
  • Optimalisere OpenCL programmer ved hjelp av teknikker som koalescing, caching, forhåndshenting og profilering

CUDA

  • Hva er CUDA?
  • Hva er fordelene og ulempene med CUDA?
  • Sette opp utviklingsmiljøet for CUDA
  • Opprette et grunnleggende CUDA-program som utfører vektoraddisjon
  • Bruke CUDA API til å spørre etter enhetsinformasjon, tildele og deallokere enhetsminne, kopiere data mellom vert og enhet, starte kjerner og synkronisere tråder
  • Bruker CUDA C/C++-språket til å skrive kjerner som kjører på enheten og manipulerer data
  • Bruk av CUDA innebygde funksjoner, variabler og biblioteker for å utføre vanlige oppgaver og operasjoner
  • Bruk av CUDA-minneplasser, for eksempel globale, delte, konstante og lokale, for å optimalisere dataoverføringer og minnetilgang
  • Bruk av CUDA-utførelsesmodell for å kontrollere trådene, blokkene og rutenettene som definerer parallelliteten
  • Feilsøking og testing av CUDA-programmer ved hjelp av verktøy som CUDA-GDB, CUDA-MEMCHECK og NVIDIA Nsight
  • Optimalisering av CUDA-programmer ved hjelp av teknikker som koalescing, caching, forhåndshenting og profilering

ROCm

  • Hva er ROCm?
  • Hva er fordelene og ulempene med ROCm?
  • Sette opp utviklingsmiljøet for ROCm
  • Opprette et grunnleggende ROCm-program som utfører vektoraddisjon
  • Bruke ROCm API til å spørre etter enhetsinformasjon, allokere og deallokere enhetsminne, kopiere data mellom vert og enhet, starte kjerner og synkronisere tråder
  • Bruke ROCm C/C++-språket til å skrive kjerner som kjører på enheten og manipulerer data
  • Bruke ROCm innebygde funksjoner, variabler og biblioteker for å utføre vanlige oppgaver og operasjoner
  • Bruk av ROCm-minneplasser, for eksempel globale, lokale, konstante og private, for å optimalisere dataoverføringer og minnetilgang
  • Bruke ROCm-utførelsesmodellen for å kontrollere trådene, blokkene og rutenettene som definerer parallelliteten
  • Feilsøking og testing av ROCm-programmer ved hjelp av verktøy som ROCm Debugger og ROCm Profiler
  • Optimalisering av ROCm-programmer ved hjelp av teknikker som koalescing, caching, forhåndshenting og profilering

HOFTE

  • Hva er HIP?
  • Hva er fordelene og ulempene med HIP?
  • Sette opp utviklingsmiljøet for HIP
  • Opprette et grunnleggende HIP-program som utfører vektoraddisjon
  • Bruke HIP-språk til å skrive kjerner som kjører på enheten og manipulerer data
  • Bruke HIP innebygde funksjoner, variabler og biblioteker for å utføre vanlige oppgaver og operasjoner
  • Bruke HIP-minneplasser, for eksempel globale, delte, konstante og lokale, for å optimalisere dataoverføringer og minnetilgang
  • Bruke HIP-utførelsesmodell for å kontrollere trådene, blokkene og rutenettene som definerer parallelliteten
  • Feilsøking og testing av HIP-programmer ved hjelp av verktøy som ROCm Debugger og ROCm Profiler
  • Optimalisering av HIP-programmer ved hjelp av teknikker som koalescing, caching, forhåndshenting og profilering

Sammenligning

  • Sammenligning av funksjonene, ytelsen og kompatibiliteten til OpenCL, CUDA, ROCm og HIP
  • Evaluering av GPU programmer ved hjelp av benchmarks og beregninger
  • Lær de beste fremgangsmåtene og tipsene for GPU programmering
  • Utforske nåværende og fremtidige trender og utfordringer ved GPU programmering

Sammendrag og neste trinn

Krav

  • En forståelse av C/C++ språk og parallellprogrammeringskonsepter
  • Grunnleggende kunnskap om dataarkitektur og minnehierarki
  • Erfaring med kommandolinjeverktøy og koderedigerere

Publikum

  • Utviklere som ønsker å lære det grunnleggende om GPU programmering og de viktigste rammeverkene og verktøyene for å utvikle GPU applikasjoner
  • Utviklere som ønsker å skrive bærbar og skalerbar kode som kan kjøres på forskjellige plattformer og enheter
  • Programmerere som ønsker å utforske fordelene og utfordringene ved GPU programmering og optimalisering
 21 timer

Antall deltakere



Price per participant

Testimonials (1)

Relaterte kurs

GPU Programming - OpenCL vs CUDA vs ROCm

28 timer

Related Categories