Kursplan

Introduksjon

  • Hva er OpenCL?
  • OpenCL vs CUDA vs SYCL
  • Oversikt over OpenCL funksjoner og arkitektur
  • Sette opp utviklingsmiljøet

Starter

  • Opprette et nytt OpenCL-prosjekt ved å bruke Visual Studio-kode
  • Utforske prosjektstrukturen og filene
  • Kompilere og kjøre programmet
  • Viser utdata ved hjelp av printf og fprintf

OpenCL API

  • Forstå rollen til OpenCL API i vertsprogrammet
  • Bruker OpenCL API for å spørre etter enhetsinformasjon og -funksjoner
  • Bruk av OpenCL API for å lage kontekster, kommandokøer, buffere, kjerner og hendelser
  • Bruk av OpenCL API for å sette kommandoer i kø, for eksempel lese, skrive, kopiere, kartlegge, fjerne kartlegging, utføre og vente
  • Bruker OpenCL API for å 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 manipulere data
  • Ved å bruke OpenCL C-datatyper, kvalifiseringer, operatorer og uttrykk
  • Bruk av OpenCL C innebygde funksjoner, som matematikk, geometrisk, relasjonell, etc.
  • Bruk av OpenCL C-utvidelser og biblioteker, for eksempel atomic, image, cl_khr_fp16, etc.

OpenCL Minnemodell

  • Forstå forskjellen mellom verts- og enhetsminnemodeller
  • Bruk av OpenCL minneplasser, for eksempel global, lokal, konstant og privat
  • Bruke OpenCL minneobjekter, for eksempel buffere, bilder og rør
  • Bruk av OpenCL minnetilgangsmoduser, for eksempel skrivebeskyttet, skrivebeskyttet, lese-skrive osv.
  • Bruker OpenCL minnekonsistensmodell og synkroniseringsmekanismer

OpenCL Utførelsesmodell

  • Forstå forskjellen mellom verts- og enhetsutførelsesmodeller
  • Bruk av OpenCL arbeidselementer, arbeidsgrupper og ND-områder for å definere parallelliteten
  • Bruk av OpenCL arbeidselementfunksjoner, for eksempel get_global_id, get_local_id, get_group_id, etc.
  • Bruk av OpenCL arbeidsgruppefunksjoner, for eksempel barriere, work_group_reduce, work_group_scan, etc.
  • Bruk av OpenCL enhetsfunksjoner, for eksempel get_num_groups, get_global_size, get_local_size, etc.

Feilsøking

  • Forstå de vanlige feilene og feilene i OpenCL-programmer
  • Bruk av Visual Studio kodefeilsøker for å inspisere variabler, bruddpunkter, anropsstack, 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å faktorene som påvirker ytelsen til OpenCL programmer
  • Bruk av OpenCL vektordatatyper og vektoriseringsteknikker for å forbedre aritmetisk gjennomstrømning
  • Bruk av OpenCL løkkeutrulling og løkkeflisleggingsteknikker for å redusere kontrolloverhead og øke lokaliteten
  • Bruk av OpenCL lokalt minne og lokale minnefunksjoner for å optimalisere minnetilgang og båndbredde
  • Bruk av OpenCL profilerings- og profileringsverktøy for å måle og forbedre utførelsestiden og ressursutnyttelsen

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 å bruke OpenCL til å programmere heterogene enheter og utnytte deres parallellitet
  • Utviklere som ønsker å skrive bærbar og skalerbar kode som kan kjøres på forskjellige plattformer og enheter
  • Programmerere som ønsker å utforske lavnivåaspektene ved heterogen programmering og optimalisere kodeytelsen deres
 28 timer

Antall deltakere



Price per participant

Testimonials (1)

Relaterte kurs

GPU Programming - OpenCL vs CUDA vs ROCm

28 timer

Related Categories