Course Outline

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

Requirements

  • 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 Hours

Getuigenissen (1)

Related Courses

GPU Programming - OpenCL vs CUDA vs ROCm

28 Hours

Related Categories