Kursplan

Innføring

  • Hva er OpenCL?
  • OpenCL vs CUDA vs SYCL
  • Oversikt over OpenCLs funksjoner og arkitektur
  • Oppsett av utviklingsmiljøet

Komme i Gang

  • Opprette et nytt OpenCL-prosjekt ved bruk av Visual Studio Code
  • Utrede prosjektstrukturen og filene
  • Kompilere og kjøre programmet
  • Vise utdata ved bruk av printf og fprintf

OpenCL API

  • Forstå rollen til OpenCL API i vertsprogrammet
  • Bruke OpenCL API til å spørre om enhetens informasjon og egenskaper
  • Bruke OpenCL API til å opprette kontekster, kommandokøer, buffere, kjerner, og hendelser
  • Bruke OpenCL API til å kjøre inn kommandoer, som lese, skrive, kopiere, mappere, demappere, kjøre, og vente
  • 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ører på enheten og manipulerer data
  • Bruke OpenCL C datatyper, kvalifisatorer, operatører, og uttrykk
  • Bruke OpenCL C innebygde funksjoner, som matematikk, geometri, relasjonsfunksjoner, etc.
  • Bruke OpenCL C utvidelser og biblioteker, som atomisk, bilder, cl_khr_fp16, etc.

OpenCL Minne Modell

  • Forstå forskjellen mellom verts- og enhetsminnemodeller
  • Bruke OpenCL minneområder, som global, lokal, konstant, og privat
  • Bruke OpenCL minneobjekter, som buffere, bilder, og rør
  • Bruke OpenCL minnetilgangsmoduser, som kun-lesing, kun-skriving, lese-og-skriving, etc.
  • Bruke OpenCL minnekonsistensmodell og synkroniseringsmekanismer

OpenCL Kjørings Modell

  • Forstå forskjellen mellom verts- og enhetskjøringsmodeller
  • Bruke OpenCL arbeidsenheter, arbeidsgrupper, og ND-områder til å definere parallelisme
  • Bruke OpenCL arbeidsenhetsfunksjoner, som get_global_id, get_local_id, get_group_id, etc.
  • Bruke OpenCL arbeidsgruppfunksjoner, som barrier, work_group_reduce, work_group_scan, etc.
  • Bruke OpenCL enhetsfunksjoner, som get_num_groups, get_global_size, get_local_size, etc.

Feilsøking

  • Forstå vanlige feil og feil i OpenCL-programmer
  • Bruke Visual Studio Code feilsøker til å inspisere variabler, bruddpunkt, kallstakk, etc.
  • 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

Optimalisering

  • Forstå faktorer som påvirker ytelsen til OpenCL-programmer
  • Bruke OpenCL vektordatatyper og vektoriseringsteknikker til å forbedre aritmetisk gjennomstrømning
  • Bruke OpenCL løkkedekking og løkketiling til å redusere kontrolloverhead og øke lokalitet
  • Bruke OpenCL lokalminne og lokalminnefunksjoner til å optimalisere minnetilganger og båndbredde
  • Bruke OpenCL profilering og profileringverktøy til å måle og forbedre kjøretid og ressursutnyttelse

Oppsummering og Neste Skritt

Krav

  • En forståelse av C/C++ språk og parallell programmeringskonsepter
  • Grunnleggende kunnskap om datamaskinarkitektur og minnehierarki
  • Erfaring med kommandolinjeverktøy og kodeeditorer

Målgruppe

  • Utviklere som ønsker å lære å bruke OpenCL til å programmere heterogene enheter og utnytte deres parallelisme
  • Utviklere som ønsker å skrive portabel og skalbar kode som kan kjøres på ulike plattformer og enheter
  • Programmerere som ønsker å utforske lavnivåaspektene ved heterogen programmering og optimalisere kodeytelse
 28 timer

Antall deltakere


Price per participant

Upcoming Courses

Related Categories