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 houdt GPU-programmeren in?
- Waarom kiezen voor GPU-programmeren?
- Wat zijn de uitdagingen en afwegingen bij GPU-programmeren?
- Welke frameworks bieden ondersteuning voor GPU-programmeren?
- Hoe kiest u het juiste framework voor uw toepassing?
OpenCL
- Wat is OpenCL precies?
- Welke voordelen en nadelen heeft het gebruik van OpenCL?
- Hoe zet u een ontwikkelomgeving voor OpenCL op?
- Een eenvoudig OpenCL-programma schrijven dat vectoradditie bewerkt.
- Met OpenCL-API apparaatinformatie opvragen, geheugen toewijzen en vrijgeven, data overdragen tussen host en device, kernels starten en threads synchroniseren.
- Kernels schrijven in OpenCL C die op het device worden uitgevoerd en data bewerken.
- Gebruikmaken van ingebouwde functies, variabelen en bibliotheken om veelvoorkomende bewerkingen te doen.
- Verschillende geheugengebieden zoals globaal, lokaal, constant of privaat inzetten voor efficiënte databeheer.
- Het OpenCL-uitvoeringsmodel gebruiken om work-items, work-groups en ND-ranges te regelen die de parallelle verwerking bepalen.
- OpenCL-programma’s testen en debuggen via hulpmiddelen zoals CodeXL.
- Optimaal presteren: technieken als coalescing, caching, prefetching en profilering toepassen om code te verbeteren.
CUDA
- Wat is CUDA en waar dient het voor?
- Wat zijn de sterke punten en tekortkomingen van CUDA?
- Installeren van een ontwikkelomgeving specifiek voor CUDA.
- Een eenvoudig CUDA-programma maken dat vectoradditie bewerkt.
- Via CUDA-API apparaatinformatie verkrijgen, geheugen beheren, data overdragen tussen host en device, kernels activeren en threads synchroniseren.
- Kernels ontwikkelen in de programmeertaal CUDA C/C++ zodat ze op het GPU draaien.
- Gebruik van ingebouwde functies, variabelen en bibliotheken om typische bewerkingen te implementeren.
- Effectieve toepassing van geheugenlocaties zoals globaal, gedeeld, constant of lokaal om prestaties te vergroten.
- Het CUDA-uitvoeringsmodel hanteren om threads, blokken en grids te bepalen die parallelle berekeningen regelen.
- Debuggen en testen van CUDA-programma’s met hulpmiddelen als CUDA-GDB, CUDA-MEMCHECK en NVIDIA Nsight.
- Code verbeteren door optimalisatiestrategieën zoals coalescing, caching, prefetching en profilering toe te passen.
ROCm
- Wat is ROCm en welk doel vervult het?
- Wat zijn de voordelen en beperkingen van ROCm?
- Installeren van een ontwikkelomgeving voor ROCm.
- Een eenvoudig ROCm-programma schrijven dat vectoradditie bewerkt.
- Met ROCm-API apparaatinformatie opvragen, geheugen toewijzen of vrijgeven, data overdragen en kernels starten.
- Kernels ontwerpen met ROCm C/C++-taal zodat deze op het device kunnen draaien.
- Ingebouwde functies, variabelen en bibliotheken gebruiken om routinebewerkingen te automatiseren.
- Verschillende geheugenruimtes toepassen zoals globaal, lokaal, constant of privaat voor optimale datastromen.
- Het ROCm-uitvoeringsmodel benutten om threads, blokken en grids te sturen die de parallelle berekeningen bepalen.
- Programma’s debuggen en testen met hulpmiddelen zoals ROCm Debugger en ROCm Profiler.
- Verbeter de codekwaliteit door coalescing, caching, prefetching en profilering te gebruiken als optimalisatiestrategieën.
Vergelijking
- OpenCL, CUDA en ROCm met elkaar vergelijken: functies, prestaties en ondersteuning.
- GPU-programma's beoordelen op basis van benchmarks en meetgegevens.
- Richtlijnen en tips voor effectief GPU-programmeren leren kennen.
- Actuele ontwikkelingen en uitdagingen binnen het vakgebied verkennen.
Samenvatting en vervolgstappen
Vereisten
- Kennis van de C/C++-programmeertaal en begrip van parallelle programmeerconcepten
- Basiskennis van computerarchitectuur en geheugenhiërarchie
- ervaring met commandoregeltools en code-editors
Doelgroep
- Ontwikkelaars die meer willen leren over het gebruik van diverse frameworks voor GPU-programmeren en hun verschillen in functies, prestaties en compatibiliteit begrijpen
- Programmeurs die code wensen te schrijven die zowel draagbaar als schaalbaar is voor gebruik op verschillende platforms en apparaten
- IT-professionals die de voordelen, beperkingen en uitdagingen van GPU-programmeren willen verkennen
28 Uren