Kursplan

Introduksjon

  • Hva er OpenACC?
  • OpenACC vs. OpenCL vs. CUDA vs. SYCL
  • Oversikt over OpenACC-funksjoner og arkitektur
  • Konfigurere utviklingsmiljøet

Kom i gang

  • Opprette et OpenACC-prosjekt i Visual Studio Code
  • Utforske prosjekstrukturen og filer
  • Kompilere og kjøre programmet
  • Vise utdata med printf og fprintf

OpenACC-direktiver og -klauser

  • Få forståelse for OpenACC-direktiver og -klauser
  • Bruk parallele direktiver for å opprette parallelle regioner
  • Bruk kernels-direktiver for kompileringsstyrt parallelisme
  • Bruk loop-direktiver for å parallelisere løkker
  • Håndtere datamovement med data-direktiver
  • Synkronisere data med update-direktiver
  • Føre frem data-reuse med cache-direktiver
  • Opprette enhetsfunksjoner med routine-direktiver
  • Synkronisere hendelser med wait-direktiver

OpenACC API

  • Få forståelse for rollen av OpenACC API
  • Hente enhetsinformasjon og kapasiteter
  • Angi enhetens nummer og type
  • Håndtere feil og unntak
  • Opprette og synkronisere hendelser

OpenACC-biblioteker og interoperabilitet

  • Få forståelse for OpenACC-biblioteker og interoperabilitet
  • Bruk matte-, tilfeldige- og kompleksbiblioteker
  • Tilrettelegge for andre modeller (CUDA, OpenMP, MPI)
  • Tilrettelegge for GPU-biblioteker (cuBLAS, cuFFT)

OpenACC-verktøy

  • Få forståelse for OpenACC-verktøy i utvikling
  • Profiler og feilsøk OpenACC-programmer
  • Ytneseanalyse med PGI Compiler, NVIDIA Nsight Systems, Allinea Forge

Optimalisering

  • Faktorer som påvirker OpenACC-programmets ytenhet
  • Optimalisere data-lokalitet og reduksjon av overføringer
  • Optimalisere løkke-parallelisme og fysjonering
  • Optimalisere kernels-parallelisme og fysjonering
  • Optimalisere vektorisering og auto-stemming

Sammendrag og neste skritt

Krav

  • En forståelse for C/C++ eller Fortran-språk og parallele programmeringkonsepter
  • Grunnleggende kunnskap om datamaskinarkitektur og minnehierarki
  • Erfaring med kommandolinjeverktøy og kodeeditorer

Målgruppe

  • Utviklere som ønsker å lære hvordan man bruker OpenACC for å programmere heterogene enheter og utnytte deres parallelle kapasiteter
  • Utviklere som ønsker å skrive transportabelt og skalabelt kode som kan kjøre på ulike plattformer og enheter
  • Programmerere som ønsker å utforske de høyeste nivåene av heterogen programmering og optimere deres kodeproduktivitet
 28 timer

Antall deltakere


Pris per deltaker

Kommende kurs

Relaterte kategorier