Neem contact met ons op
 Duur 28 uren

Cursusaanbod

Inleiding

  • Wat is OpenCL?
  • OpenCL vs CUDA vs SYCL
  • Overzicht van de functionaliteit en architectuur van OpenCL
  • De ontwikkelomgeving inrichten

Aan de slag

  • Een nieuw OpenCL-project maken in Visual Studio Code
  • De projectstructuur en bestanden verkennen
  • De programmassembleren en uitvoeren
  • De uitvoer tonen met printf en fprintf

OpenCL API

  • Het belang van de OpenCL API in het host-programma begrijpen
  • De OpenCL API gebruiken om apparaatinformatie en -capaciteiten op te vragen
  • De OpenCL API gebruiken om contexten, commando's, buffers, kernels en gebeurtenissen te maken
  • De OpenCL API gebruiken om commando's in de wachtrij te plaatsen, zoals lezen, schrijven, kopiëren, mapping, unmapping, uitvoeren en wachten
  • De OpenCL API gebruiken om fouten en uitzonderingen af te handelen

OpenCL C

  • Het belang van OpenCL C in het apparaat-programma begrijpen
  • OpenCL C gebruiken om kernels te schrijven die op het apparaat worden uitgevoerd en gegevens manipuleren
  • OpenCL C datatypes, kwalificatoren, operatoren en expressies gebruiken
  • OpenCL C ingebouwde functies gebruiken, zoals wiskunde, geometrie, relaties, etc.
  • OpenCL C extensies en bibliotheken gebruiken, zoals atomic, image, cl_khr_fp16, etc.

OpenCL Geheugenmodel

  • Het verschil tussen host- en apparaatgeheugenmodellen begrijpen
  • OpenCL geheugenruimten gebruiken, zoals global, local, constant en private
  • OpenCL geheugenobjecten gebruiken, zoals buffers, images en pipes
  • OpenCL geheugentoegangsmodi gebruiken, zoals read-only, write-only, read-write, etc.
  • Het OpenCL geheugenconsistentiemodel en synchronisatiemechanismen gebruiken

OpenCL Uitvoeringsmodel

  • Het verschil tussen host- en apparaatuitergingsmodellen begrijpen
  • OpenCL werk-items, werk-groepen en ND-reeksen gebruiken om parallelisme te definiëren
  • OpenCL werk-itemfuncties gebruiken, zoals get_global_id, get_local_id, get_group_id, etc.
  • OpenCL werk-groepfuncties gebruiken, zoals barrier, work_group_reduce, work_group_scan, etc.
  • OpenCL apparaatfuncties gebruiken, zoals get_num_groups, get_global_size, get_local_size, etc.

Debuggen

  • Veelvoorkomende fouten en bugs in OpenCL-programma's begrijpen
  • De debugger van Visual Studio Code gebruiken om variabelen, breakpoints en de call stack te inspecteren
  • CodeXL gebruiken om OpenCL-programma's te debuggen en te analyseren op AMD-apparaten
  • Intel VTune gebruiken om OpenCL-programma's te debuggen en te analyseren op Intel-apparaten
  • NVIDIA Nsight gebruiken om OpenCL-programma's te debuggen en te analyseren op NVIDIA-apparaten

Optimalisatie

  • De factoren die de prestaties van OpenCL-programma's beïnvloeden, begrijpen
  • OpenCL vector datatype en vectorisatietechnieken gebruiken om de arithmetische doorvoersnelheid te verbeteren
  • OpenCL loop-unrolling en loop tiling technieken gebruiken om besturingsoverhead te verminderen en de localiteit te vergroten
  • OpenCL lokaal geheugen en lokaal geheugenfuncties gebruiken om geheugentoegang en bandbreedte te optimaliseren
  • OpenCL profilering en profilingtools gebruiken om de uitvoeringstijd en bronbenutting te meten en te verbeteren

Vereisten

  • Kenis van de C/C++-taal en concepten voor parallelle programmering
  • Basiskenis van computerarchitectuur en geheughenhierarchie
  • Ervaring met command line tools en code-editors

Doelgroep

  • Ontwikkelaars die willen leren hoe ze OpenCL kunnen gebruiken om heterogene apparaten te programmeren en hun parallelisme te benutten
  • Ontwikkelaars die portable en schaalbare code willen schrijven die op verschillende platforms en apparaten kan draaien
  • Programmeurs die de low-level aspecten van heterogene programmering willen verkennen en de prestaties van hun code willen optimaliseren

Aantal deelnemers


Prijs per deelnemer

Voorlopige Aankomende Cursussen

Gerelateerde categorieën