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
GPU-computing en CUDA-architectuur
- Verschillen tussen CPU- en GPU-architecturen
- Het model van NVIDIA’s streaming multiprocessors
- Inleiding tot het CUDA-programmeermodel
- Heterogene computing en het host-device-principe
Opzetten van de CUDA-ontwikkelomgeving
- Installatie van het CUDA Toolkit 13.x
- De NVCC-compiler en werkwijze bij bouwen
- Controleren of de omgeving correct is geïnstalleerd via device queries
- Integratie met IDE’s en ontwikkeltools
Het schrijven en starten van CUDA-kernels
- Syntaxis en specifiers voor kernel-functies
- Configuratie en uitvoering van kernels
- Vectoradditie en andere basismatige parallelle bewerkingen
- Gebruik van macros voor CUDA-foutcontrole
Thread-hiërarchie en uitvoeringsmodel in CUDA
- Aufbouw van grids, blokken en threads
- Berekenen van thread-indexen en globale ID’s
- Uitvoering binnen warps volgens het SIMT-model
- Occupancy en efficiënt gebruik van bronnen
GPU-geheugenstructuur en beheer
- Soorten geheugen: globaal, gedeeld, constant en registers
- Toewijzen en vrijgeven van device-geheugen
- Overdragen van data tussen host en device
- Gebruik van shared memory voor samenwerking binnen blokken
Unified Memory en datamigratie
- Model van unified memory en toegewezen managed geheugenblokken
- Migratie van pagina’s en on-demand paging
- Asynchrone prefetching via cudaMemPrefetchAsync
- Aanbevelingen voor geheugengebruik afhankelijk van toegangspatroon
Systematische profiling met Nsight Systems
- Tijdslijnanalyse met Nsight Systems
- Het identificeren van synchronisatiepunten tussen CPU en GPU
- Visualisering van kerneluitvoering en geheugenoverdrachten
- Interpretatie van systeemgerelateerde performance-gegevens
Optimization van kernels met Nsight Compute
- Interactief profileren van kernels via Nsight Compute
- Analyse van geheugendoorvoer en bandbreedtegebruik
- Berekeningsefficiëntie en statistieken over warp-activiteit
- Gebruiksvriendelijke richtlijnen voor analyse en optimalisatie
Geconcurrentie tussen streams en asynchrone bewerkingen
- CUDA-streams en de standaard stream configureren
- Gelijktijdige uitvoering van kernels en overdracht van data realiseren
- Synchronisatie tussen streams en gebruik van CUDA-events
- Ontwerppatronen voor multi-stream gebaseerde pipelines
Foutafhandeling en debugging-tools
- CUDA-API-foutcodes en strategieën om daarop te reageren
- Compute-sanitizer voor detectie van problemen met geheugentoegang
- cuda-gdb ter ondersteuning bij kernel-debugging
- Gebruik van asserties en synchronisatievoorzieningen om fouten te identificeren
Optimalisatiestrategie gebaseerd op profiling-data
- Het iteratief toepassen van profileringstechnieken
- Bottleneck-identificatie en prioritering van verbeteringen
- Uitvoeren van prestatietests om regressies te voorkomen
- Documenteren van gemaakte optimalisatieve beslissingen
Globaal project: ontwikkeling van een geaccelererde applicatie
- Ontwerp van een volledige GPU-versnelde oplossing van A tot Z
- Geïntegreerd gebruik van profilingtools gedurende het hele ontwikkelproces
- Prestatieanalyse en rapportage opleveren
- Overwegingen betreffende implementatie in productieomgevingen
Vereisten
- Basisvaardigheden in C/C++-programmeren, waaronder het werken met variabelen, lussen, conditionele bewerkingen, functies en arrays
- Vertrouwdheid met het compileren en uitvoeren van programma’s via de commandoregel
- Eerder ervaring met GPU- of CUDA-programmeren is niet vereist
Doelgroep
- Softwareontwikkelaars en -ingenieurs die hun C/C++-applicaties willen versnellen met behulp van GPU’s
- Wetenschappelijk onderzoekers en HPC-experts die overstappen op heterogene computing naast gebruik van alleen CPU’s
- Tech Lead-professionals die GPU-acceleratie evalueren voor productieomgevingen
8 Uren