Kursplan

Introduksjon

  • Hva er GPU-programmering?
  • Hvorfor bruke GPU-programmering?
  • Hvilke utfordringer og avveininger er knyttet til GPU-programmering?
  • Hvilke rammeverk er det for GPU-programmering?
  • Velge riktig rammeverk for applikasjonen din

OpenCL

  • Hva er OpenCL?
  • Hvilke fordeler og ulemper er knyttet til OpenCL?
  • Oppsett av utviklingsmiljø for OpenCL
  • Opprettelse av et grunnleggende OpenCL-program som utfører vektoraddisjon
  • Bruk av OpenCL API for å spørre etter enhetens informasjon, allokere og deallokere enhetens minne, kopiere data mellom vert og enhet, kjøre kjerner og synkronisere tråder
  • Bruk av OpenCL C-spraak for å skrive kjerner som kjører på enheten og manipulerer data
  • Bruk av OpenCL innebygde funksjoner, variabler og biblioteker for å utføre vanlige oppgaver og operasjoner
  • Bruk av OpenCL minneområder, som globalt, lokalt, konstant og privat, for å optimalisere dataoverføringer og minnetilganger
  • Bruk av OpenCL utførelsessmodell for å kontrollere arbeidsenhetene, arbeidsgrupper og ND-områder som definerer parallelliteten
  • Feilsøking og testing av OpenCL-programmer ved hjelp av verktøy som CodeXL
  • Optimalisering av OpenCL-programmer ved hjelp av teknikker som samling, caching, prefetching og profiling

CUDA

  • Hva er CUDA?
  • Hvilke fordeler og ulemper er knyttet til CUDA?
  • Oppsett av utviklingsmiljø for CUDA
  • Opprettelse av et grunnleggende CUDA-program som utfører vektoraddisjon
  • Bruk av CUDA API for å spørre etter enhetens informasjon, allokere og deallokere enhetens minne, kopiere data mellom vert og enhet, kjøre kjerner og synkronisere tråder
  • Bruk av CUDA C/C++-spraak for å 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 minneområder, som globalt, delt, konstant og lokalt, for å optimalisere dataoverføringer og minnetilganger
  • Bruk av CUDA utførelsessmodell for å kontrollere tråder, blokker og rutenett 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 samling, caching, prefetching og profiling

ROCm

  • Hva er ROCm?
  • Hvilke fordeler og ulemper er knyttet til ROCm?
  • Oppsett av utviklingsmiljø for ROCm
  • Opprettelse av et grunnleggende ROCm-program som utfører vektoraddisjon
  • Bruk av ROCm API for å spørre etter enhetens informasjon, allokere og deallokere enhetens minne, kopiere data mellom vert og enhet, kjøre kjerner og synkronisere tråder
  • Bruk av ROCm C/C++-spraak for å skrive kjerner som kjører på enheten og manipulerer data
  • Bruk av ROCm innebygde funksjoner, variabler og biblioteker for å utføre vanlige oppgaver og operasjoner
  • Bruk av ROCm minneområder, som globalt, lokalt, konstant og privat, for å optimalisere dataoverføringer og minnetilganger
  • Bruk av ROCm utførelsessmodell for å kontrollere tråder, blokker og rutenett 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 samling, caching, prefetching og profiling

Sammenligning

  • Sammenligne funksjoner, ytelse og kompatibilitet til OpenCL, CUDA og ROCm
  • Vurdere GPU-programmer ved hjelp av benchmarker og målinger
  • Lære best practises og tips for GPU-programmering
  • Utforske nåværende og fremtidige trender og utfordringer knyttet til GPU-programmering

Oppsummering og neste trinn

Krav

  • En forståelse av C/C++-språket og parallellprogrammeringskonsepter
  • Grunnleggende kunnskap om datamaskinarkitektur og minnehierarki
  • Erfaring med kommando-linjeverktøy og kodeeditorer

Målgruppe

  • Utviklere som ønsker å lære å bruke ulike rammeverk for GPU-programmering og sammenligne deres egenskaper, ytelse og kompatibilitet
  • Utviklere som ønsker å skrive portabelt og skalbart kode som kan kjøres på ulike plattformer og enheter
  • Programmerere som ønsker å utforske avveiningene og utfordringene ved GPU-programmering og optimering
 28 timer

Antall deltakere


Price per participant

Upcoming Courses

Related Categories