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

Number of participants



Price per participant

Getuigenissen (1)

Related Courses

Administration of CUDA

35 Hours

GPU Programming with CUDA and Python

14 Hours

AMD GPU Programming

28 Hours

NVIDIA GPU Programming

14 Hours

Introduction to GPU Programming

21 Hours

GPU Programming with CUDA

28 Hours

GPU Programming with OpenCL

28 Hours

GPU Programming - OpenCL vs CUDA vs ROCm

28 Hours

NVIDIA GPU Programming - Extended

21 Hours

ROCm for Windows

21 Hours

Hardware-Accelerated Video Analytics

14 Hours

Raster and Vector Graphics (Adobe Photoshop, CorelDraw)

28 Hours

Adobe LiveCycle Designer

14 Hours

Affinity Designer

14 Hours

Adobe Illustrator

14 Hours

Related Categories