Cursusaanbod

Inleiding

  • Wat is OpenCL?
  • OpenCL vs CUDA vs SYCL
  • Overzicht van de functies en architectuur van OpenCL
  • Instellen van de ontwikkelomgeving

Aan de slag

  • Het maken van een nieuw OpenCL project met behulp van Visual Studio Code
  • Onderzoeken van de projectstructuur en bestanden
  • Het compileren en uitvoeren van het programma
  • Weergeven van de uitvoer met printf en fprintf

OpenCL API

  • Het begrijpen van de rol van de OpenCL API in het gastprogramma
  • Het gebruik van de OpenCL API om apparaatinformatie en mogelijkheden op te vragen
  • Het gebruik van de OpenCL API om contexten, opdrachtrijen, buffers, kernels en gebeurtenissen te maken
  • Het gebruik van de OpenCL API om opdrachten in te wachten, zoals lezen, schrijven, kopiëren, mappen, ontmappen, uitvoeren en wachten
  • Het gebruik van de OpenCL API om fouten en uitzonderingen af te handelen

OpenCL C

  • Het begrijpen van de rol van OpenCL C in het apparaatprogramma
  • Het gebruik van OpenCL C om kernels te schrijven die op het apparaat worden uitgevoerd en gegevens manipuleren
  • Het gebruik van OpenCL C datatypen, kwalificaties, operators en uitdrukkingen
  • Het gebruik van ingebouwde functies van OpenCL C, zoals wiskundige, meetkundige, relationele enzovoort
  • Het gebruik van OpenCL C extensies en bibliotheken, zoals atomair, afbeelding, cl_khr_fp16 enzovoort

OpenCL Geheugenmodel

  • Het begrijpen van het verschil tussen gast- en apparaatgeheugenmodellen
  • Het gebruik van OpenCL geheuenvariabelen, zoals globaal, lokaal, constant en privé
  • Het gebruik van OpenCL geheugenobjecten, zoals buffers, afbeeldingen en pijpen
  • Het gebruik van OpenCL geheugentoegangsmodi, zoals alleen-lezen, alleen-schrijven, lezen-schrijven enzovoort
  • Het gebruik van het OpenCL geheugenconsistentiemodel en synchronisatiemechanismen

OpenCL Uitvoeringsmodel

  • Het begrijpen van het verschil tussen gast- en apparaatuitvoeringsmodellen
  • Het gebruik van OpenCL werk-items, werk-groepen en ND-ranges om parallelisme te definiëren
  • Het gebruik van OpenCL werk-itemfuncties, zoals get_global_id, get_local_id, get_group_id enzovoort
  • Het gebruik van OpenCL werk-groepfuncties, zoals barrière, work_group_reduce, work_group_scan enzovoort
  • Het gebruik van OpenCL apparaatfuncties, zoals get_num_groups, get_global_size, get_local_size enzovoort

Debuggen

  • Het begrijpen van de veelvoorkomende fouten en bugs in OpenCL programma's
  • Het gebruik van de Visual Studio Code debugger om variabelen, onderbrekingen, aanroepstacks enzovoort te inspecteren
  • Het gebruik van CodeXL om OpenCL programma's op AMD-apparaten te debuggen en te analyseren
  • Het gebruik van Intel VTune om OpenCL programma's op Intel-apparaten te debuggen en te analyseren
  • Het gebruik van NVIDIA Nsight om OpenCL programma's op NVIDIA-apparaten te debuggen en te analyseren

Optimaliseren

  • Het begrijpen van de factoren die de prestaties van OpenCL programma's beïnvloeden
  • Het gebruik van OpenCL vector datatypen en vectorisatietechnieken om de rekenprestaties te verbeteren
  • Het gebruik van OpenCL lusontvouwing en lusbladeringstechnieken om de stuuroverhead te verminderen en de lokaliteit te vergroten
  • Het gebruik van OpenCL lokale geheugen en lokale geheugenfuncties om geheugen-toegangen en bandbreedte te optimaliseren
  • Het gebruik van OpenCL profileren en profileringsinstrumenten om de uitvoeringstijd en brongebruik te meten en te verbeteren

Samenvatting en volgende stappen

Vereisten

  • Kennis van de C/C++ taal en parallelle programmeringsconcepten
  • Basis kennis van computerarchitectuur en geheugenhiërarchie
  • Ervaring met command-line tools en code editors

Publiek

  • Ontwikkelaars die willen leren hoe ze OpenCL kunnen gebruiken om heterogene apparaten te programmeren en hun parallelisme te benutten
  • Ontwikkelaars die willen schrijven naar portabele en schaalbare code die kan worden uitgevoerd op verschillende platformen en apparaten
  • Programmeurs die de laag niveau aspecten van heterogene programmering willen verkennen en hun codeprestaties willen optimaliseren
 28 Uren

Aantal deelnemers


Prijs Per Deelnemer

Voorlopige Aankomende Cursussen

Gerelateerde categorieën