Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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
Testimonials (2)
Veldig interaktiv med ulike eksempler, med god progresjon i kompleksitet mellom start og slutt på treningen.
Jenny - Andheo
Kurs - GPU Programming with CUDA and Python
Machine Translated
Trener energi og humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Kurs - NVIDIA GPU Programming - Extended
Machine Translated