Ta kontakt
 Varighet 28 timer

Kursplan

Introduksjon

  • Hva er OpenCL?
  • OpenCL vs. CUDA vs. SYCL
  • Overblikk over OpenCL-funksjoner og arkitektur
  • Oppsett av utviklermiljø

Kom i gang

  • Opprette et nytt OpenCL-prosjekt med Visual Studio Code
  • Utforske prosjektstrukturen og filer
  • Kompilere og kjøre programmet
  • Vise utdata ved hjelp av printf og fprintf

OpenCL API

  • Forstå rollen til OpenCL API i vertsprogrammet
  • Bruke OpenCL API til å forespørre enhetsinformasjon og evner
  • Bruke OpenCL API til å opprette kontekster, kommandokøer, buffere, kjerner og hendelser
  • Bruke OpenCL API til å sette inn kommandoer, som les, skriv, kopier, map, avmap, utfør og vent
  • Bruke OpenCL API til å håndtere feil og unntak

OpenCL C

  • Forstå rollen til OpenCL C i enhetsprogrammet
  • Bruke OpenCL C til å skrive kjerner som kjøres på enheten og manipulerer data
  • Bruke OpenCL C datatyper, kvalifiseringsord, operatorer og uttrykk
  • Bruke OpenCL C innebygde funksjoner, som matematiske, geometriske, relasjonelle osv.
  • Bruke OpenCL C utvidelser og biblioteker, som atom, bilde, cl_khr_fp16 osv.

OpenCL minnemodell

  • Forstå forskjellen mellom minnemodeller for vertsmaskin og enhet
  • Bruke OpenCL minnerom, som globalt, lokalt, konstant og privat
  • Bruke OpenCL minneobjekter, som buffere, bilder og rør
  • Bruke OpenCL minnetilgangsmønstre, som kun les, kun skriv, lese/skrive osv.
  • Bruke OpenCL minnekonsistensmodell og synkroniseringsmekanismer

OpenCL eksekueringsmodell

  • Forstå forskjellen mellom eksekueringsmodeller for vertsmaskin og enhet
  • Bruke OpenCL arbeidsenheter, arbeidsgrupper og ND-områder for å definere parallelisme
  • Bruke OpenCL arbeidsenhetfunksjoner, som get_global_id, get_local_id, get_group_id osv.
  • Bruke OpenCL arbeidsgruppefunksjoner, som barrier, work_group_reduce, work_group_scan osv.
  • Bruke OpenCL enhetsfunksjoner, som get_num_groups, get_global_size, get_local_size osv.

Feilsøking

  • Forstå vanlige feil og feil i OpenCL-programmer
  • Bruke Visual Studio Code feilsøker til å inspisere variabler, brytdepunkter, kallstack osv.
  • Bruke CodeXL til å feilsøke og analysere OpenCL-programmer på AMD-enheter
  • Bruke Intel VTune til å feilsøke og analysere OpenCL-programmer på Intel-enheter
  • Bruke NVIDIA Nsight til å feilsøke og analysere OpenCL-programmer på NVIDIA-enheter

Optimering

  • Forstå faktorene som påvirker ytelsen til OpenCL-programmer
  • Bruke OpenCL vektordatatyper og vektoriseringsteknikker for å forbedre aritmetisk gjennomstrømning
  • Bruke OpenCL looping unrolling og looping tiling-teknikker for å redusere kontrollutgifter og øke lokalitet
  • Bruke OpenCL lokalt minne og lokal minnefunksjoner for å optimalisere minnetilganger og båndbredde
  • Bruke OpenCL profileringsverktøy for å måle og forbedre eksekveringstid og ressursutnyttelse

Krav

  • Forståelse av C/C++-språket og begreper for parallell programmering
  • Grunnleggende kunnskap om datamaskinarkeitektur og minnehierarki
  • Erfaring med kommandolinjeværktøy og kodeeditører

Målgruppe

  • Utviklere som ønsker å lære å bruke OpenCL til å programmere heterogene enheter og utnytte deres parallelisme
  • Utviklere som ønsker å skrive portabel og skalerbar kode som kan kjøre på ulike plattformer og enheter
  • Programmerere som ønsker å utforske lavnivåaspektene ved heterogen programmering og optimalisere koden sin ytelse

Antall deltakere


Pris per deltaker

Kommende kurs

Relaterte kategorier