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
Introductie
- Wat is OpenACC?
- OpenACC vs OpenCL vs CUDA vs SYCL
- Overzicht van OpenACC-functies en -architectuur
- Opzetten van de ontwikkelomgeving
Slag
- Een nieuw OpenACC-project maken met behulp van Visual Studio Code
- Verkennen van de projectstructuur en bestanden
- Samenstellen en uitvoeren van het programma
- Weergave van de uitvoer met printf en fprintf
OpenACC-richtlijnen en -clausules
- Inzicht in de rol van OpenACC-richtlijnen en -clausules in de host- en apparaatcode
- OpenACC parallelle richtlijn en clausules gebruiken om parallelle regio's te maken en het aantal bendes, workers en vectoren te specificeren
- OpenACC kernels directive en clauses gebruiken om kernels regio's te maken en de compiler het parallellisme te laten bepalen
- OpenACC-lusinstructie en -clausules gebruiken om lussen te parallelliseren en de lusverdeling, samenvouwing, reductie en tegel te specificeren
- OpenACC-gegevensrichtlijnen en -clausules gebruiken om gegevensverplaatsing en gegevensregio's te beheren
- OpenACC-updaterichtlijnen en -clausules gebruiken om gegevens tussen de host en het apparaat te synchroniseren
- OpenACC-cache-instructies en -clausules gebruiken om het hergebruik en de lokalisatie van gegevens te verbeteren
- OpenACC-routinerichtlijnen en -clausules gebruiken om apparaatfuncties te maken en het functietype en de vectorlengte te specificeren
- OpenACC-wachtinstructie en -clausules gebruiken om gebeurtenissen en afhankelijkheden te synchroniseren
OpenACC-API
- Inzicht in de rol van OpenACC API in het hostprogramma
- OpenACC API gebruiken om apparaatinformatie en -mogelijkheden op te vragen
- OpenACC API gebruiken om apparaatnummer en apparaattype in te stellen
- OpenACC API gebruiken om fouten en uitzonderingen af te handelen
- OpenACC API gebruiken om gebeurtenissen te maken en te synchroniseren
OpenACC-bibliotheken en interoperabiliteit
- Inzicht in de rol van OpenACC-bibliotheken en interoperabiliteitsfuncties in het apparaatprogramma
- OpenACC-bibliotheken gebruiken, zoals wiskundige, willekeurige en complexe, om algemene taken en bewerkingen uit te voeren
- OpenACC-interoperabiliteitsfuncties gebruiken, zoals deviceptr, use_device en acc_memcpy, om OpenACC te integreren met andere programmeermodellen, zoals CUDA, OpenMP en MPI
- OpenACC-interoperabiliteitsfuncties gebruiken, zoals host_data en declareren, om OpenACC te integreren met GPU-bibliotheken, zoals cuBLAS en cuFFT
OpenACC-hulpprogramma's
- Inzicht in de rol van OpenACC-tools in het ontwikkelingsproces
- OpenACC-tools gebruiken om OpenACC-programma's te profileren en te debuggen en prestatieknelpunten en -kansen te identificeren
- OpenACC-tools gebruiken, zoals PGI Compiler, NVIDIA Nsight Systems en Allinea Forge, om de uitvoeringstijd en het gebruik van resources te meten en te verbeteren
Optimalisering
- Inzicht in de factoren die van invloed zijn op de prestaties van OpenACC-programma's
- OpenACC-richtlijnen en -clausules gebruiken om de gegevenslokalisatie te optimaliseren en gegevensoverdrachten te verminderen
- OpenACC-richtlijnen en -clausules gebruiken om lusparallellisme en fusie te optimaliseren
- OpenACC-richtlijnen en -clausules gebruiken om kernelparallellisme en fusie te optimaliseren
- OpenACC-richtlijnen en -clausules gebruiken om vectorisatie en auto-tuning te optimaliseren
Samenvatting en volgende stappen
Vereisten
- Een goed begrip van C/C++ of Fortran taal en parallelle programmeerconcepten
- Basiskennis van computerarchitectuur en geheugenhiërarchie
- Ervaring met command-line tools en code editors
Audiëntie
- Ontwikkelaars die willen leren hoe ze OpenACC kunnen gebruiken om heterogene apparaten te programmeren en hun parallellisme te benutten
- Ontwikkelaars die draagbare en schaalbare code willen schrijven die op verschillende platforms en apparaten kan worden uitgevoerd
- Programmeurs die de high-level aspecten van heterogeen programmeren willen verkennen en hun codeproductiviteit willen optimaliseren
28 Uren