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 (2)

Relaterte kurs

Administration of CUDA

35 timer

GPU Programming with CUDA and Python

14 timer

AMD GPU Programming

28 timer

NVIDIA GPU Programming

14 timer

GPU Programming with CUDA

28 timer

GPU Programming with OpenACC

28 timer

GPU Programming with OpenCL

28 timer

GPU Programming - OpenCL vs CUDA vs ROCm

28 timer

NVIDIA GPU Programming - Extended

21 timer

ROCm for Windows

21 timer

Hardware-Accelerated Video Analytics

14 timer

Graphic techniques (Adobe Photoshop, Adobe Illustrator)

28 timer

Inkscape

14 timer

Raster and Vector Graphics (Adobe Photoshop, CorelDraw)

28 timer

Adobe Illustrator

14 timer

Related Categories