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
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
Vereisten
- 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 Uren
Testimonials (2)
Zeer interactief met diverse voorbeelden, met een goede progressie in complexiteit tussen start en einde van de training.
Jenny - Andheo
Cursus - GPU Programming with CUDA and Python
Automatisch vertaald
Trainers, energie en humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Cursus - NVIDIA GPU Programming - Extended
Automatisch vertaald