Course Outline

Invoering

  • Wat is OpenCL?
  • OpenCL versus CUDA versus SYCL
  • Overzicht van OpenCL functies en architectuur
  • Het opzetten van de ontwikkelomgeving

Aan de slag

  • Een nieuw OpenCL-project maken met behulp van Visual Studio-code
  • Het verkennen van de projectstructuur en bestanden
  • Het compileren en uitvoeren van het programma
  • De uitvoer weergeven met printf en fprintf

OpenCLAPI

  • Inzicht in de rol van OpenCL API in het hostprogramma
  • API OpenCL gebruiken om apparaatinformatie en mogelijkheden op te vragen
  • API OpenCL gebruiken om contexten, opdrachtwachtrijen, buffers, kernels en gebeurtenissen te creëren
  • API OpenCL gebruiken om opdrachten in de wachtrij te plaatsen, zoals lezen, schrijven, kopiëren, toewijzen, toewijzing ongedaan maken, uitvoeren en wachten
  • API OpenCL gebruiken om fouten en uitzonderingen af te handelen

OpenCL C

  • Inzicht in de rol van OpenCL C in het apparaatprogramma
  • OpenCL C gebruiken om kernels te schrijven die op het apparaat worden uitgevoerd en gegevens manipuleren
  • Gebruik maken van OpenCL C-gegevenstypen, kwalificaties, operators en expressies
  • Met behulp van OpenCL ingebouwde C-functies, zoals wiskunde, meetkunde, relationeel, enz.
  • Met behulp van OpenCL C-extensies en -bibliotheken, zoals atomic, image, cl_khr_fp16, enz.

OpenCL Geheugenmodel

  • Het verschil begrijpen tussen host- en apparaatgeheugenmodellen
  • OpenCL geheugenruimten gebruiken, zoals globaal, lokaal, constant en privé
  • OpenCL geheugenobjecten gebruiken, zoals buffers, afbeeldingen en pijpen
  • Gebruik van OpenCL geheugentoegangsmodi, zoals alleen-lezen, alleen-schrijven, lezen-schrijven, enz.
  • Met behulp van OpenCL geheugenconsistentiemodel en synchronisatiemechanismen

OpenCL Uitvoeringsmodel

  • Het verschil begrijpen tussen host- en apparaatuitvoeringsmodellen
  • Gebruik OpenCL werkitems, werkgroepen en ND-bereiken om het parallellisme te definiëren
  • Met behulp van OpenCL werkitemfuncties, zoals get_global_id, get_local_id, get_group_id, etc.
  • Gebruik van OpenCL werkgroepfuncties, zoals barrière, work_group_reduce, work_group_scan, etc.
  • Met behulp van OpenCL apparaatfuncties, zoals get_num_groups, get_global_size, get_local_size, enz.

Foutopsporing

  • Inzicht in de veelvoorkomende fouten en bugs in OpenCL programma's
  • Gebruik Visual Studio Code debugger om variabelen, breekpunten, call-stack, enz. te inspecteren.
  • CodeXL gebruiken om OpenCL programma's op AMD-apparaten te debuggen en analyseren
  • Intel VTune gebruiken om OpenCL programma's op Intel-apparaten te debuggen en te analyseren
  • NVIDIA Nsight gebruiken om OpenCL programma's op NVIDIA-apparaten te debuggen en analyseren

Optimalisatie

  • Inzicht in de factoren die de prestaties van OpenCL programma's beïnvloeden
  • Gebruik van OpenCL vectorgegevenstypen en vectorisatietechnieken om de rekenkundige doorvoer te verbeteren
  • Het gebruik van OpenCL technieken voor het afrollen van lussen en het maken van lussen om de controleoverhead te verminderen en de lokaliteit te vergroten
  • Gebruik van OpenCL lokaal geheugen en lokale geheugenfuncties om geheugentoegang en bandbreedte te optimaliseren
  • Het gebruik van OpenCL profilering en profileringstools om de uitvoeringstijd en het gebruik van middelen te meten en te verbeteren

Samenvatting en volgende stappen

Requirements

  • Een goed begrip van de C/C++-taal en parallelle programmeerconcepten
  • Basiskennis van computerarchitectuur en geheugenhiërarchie
  • Ervaring met opdrachtregelprogramma's en code-editors

Publiek

  • Ontwikkelaars die willen leren hoe ze OpenCL kunnen gebruiken om heterogene apparaten te programmeren en hun parallellisme te exploiteren
  • Ontwikkelaars die draagbare en schaalbare code willen schrijven die op verschillende platforms en apparaten kan worden uitgevoerd
  • Programmeurs die de lagere aspecten van heterogeen programmeren willen verkennen en hun codeprestaties willen optimaliseren
 28 Hours

Number of participants



Price per participant

Getuigenissen (1)

Related Courses

Administration of CUDA

35 Hours

GPU Programming with CUDA and Python

14 Hours

AMD GPU Programming

28 Hours

NVIDIA GPU Programming

14 Hours

Introduction to GPU Programming

21 Hours

GPU Programming with CUDA

28 Hours

GPU Programming with OpenACC

28 Hours

GPU Programming - OpenCL vs CUDA vs ROCm

28 Hours

NVIDIA GPU Programming - Extended

21 Hours

ROCm for Windows

21 Hours

Hardware-Accelerated Video Analytics

14 Hours

Raster and Vector Graphics (Adobe Photoshop, CorelDraw)

28 Hours

Adobe LiveCycle Designer

14 Hours

Affinity Designer

14 Hours

Adobe Illustrator

14 Hours

Related Categories