Bedankt voor uw aanvraag! Een van onze medewerkers neemt binnenkort contact met u op
Bedankt voor uw boeking! Een van onze medewerkers neemt binnenkort contact met u op.
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