Kursplan

Introduksjon

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

Starter

  • Opprette et nytt OpenACC-prosjekt med Visual Studio-kode
  • Utforske prosjektstrukturen og filene
  • Kompilere og kjøre programmet
  • Viser utdata ved hjelp av printf og fprintf

OpenACC-direktiver og klausuler

  • Forstå rollen til OpenACC-direktiver og klausuler i verts- og enhetskoden
  • Bruk av OpenACC parallelldirektiv og klausuler for å lage parallelle regioner og spesifisere antall gjenger, arbeidere og vektorer
  • Bruke OpenACC-kjerner-direktivet og klausuler for å lage kjerneregioner og la kompilatoren bestemme parallelliteten
  • Bruk av OpenACC loop-direktiv og klausuler for å parallellisere looper og spesifisere loopdistribusjonen, kollapsen, reduksjonen og flisen
  • Bruker OpenACC-datadirektivet og klausuler for å administrere databevegelse og dataregioner
  • Bruk av OpenACC oppdateringsdirektiv og klausuler for å synkronisere data mellom verten og enheten
  • Bruker OpenACC cache-direktiv og klausuler for å forbedre gjenbruk og lokalitet av data
  • Bruk av OpenACC-rutinedirektiv og klausuler for å lage enhetsfunksjoner og spesifisere funksjonstype og vektorlengde
  • Bruk av OpenACC-vent-direktiv og klausuler for å synkronisere hendelser og avhengigheter

OpenACC API

  • Forstå rollen til OpenACC API i vertsprogrammet
  • Bruker OpenACC API for å spørre etter enhetsinformasjon og -funksjoner
  • Bruke OpenACC API for å angi enhetsnummer og enhetstype
  • Bruker OpenACC API for å håndtere feil og unntak
  • Bruke OpenACC API for å opprette og synkronisere hendelser

OpenACC-biblioteker og interoperabilitet

  • Forstå rollen til OpenACC-biblioteker og interoperabilitetsfunksjoner i enhetsprogrammet
  • Bruk av OpenACC-biblioteker, som matematikk, tilfeldig og kompleks, til å utføre vanlige oppgaver og operasjoner
  • Bruk av OpenACC interoperabilitetsfunksjoner, som deviceptr, use_device og acc_memcpy, for å integrere OpenACC med andre programmeringsmodeller, som CUDA, OpenMP og MPI
  • Bruke OpenACC interoperabilitetsfunksjoner, som host_data og declare, for å integrere OpenACC med GPU biblioteker, som cuBLAS og cuFFT

OpenACC-verktøy

  • Forstå rollen til OpenACC-verktøy i utviklingsprosessen
  • Bruk av OpenACC-verktøy til å profilere og feilsøke OpenACC-programmer og identifisere ytelsesflaskehalser og muligheter
  • Bruk av OpenACC-verktøy, som PGI Compiler, NVIDIA Nsight Systems og Allinea Forge, for å måle og forbedre utførelsestiden og ressursutnyttelsen

Optimalisering

  • Forstå faktorene som påvirker ytelsen til OpenACC-programmer
  • Bruk av OpenACC-direktiver og klausuler for å optimalisere datalokalitet og redusere dataoverføringer
  • Bruk av OpenACC-direktiver og klausuler for å optimalisere loopparallellisme og fusjon
  • Bruk av OpenACC-direktiver og klausuler for å optimalisere kjerneparallellisme og fusjon
  • Bruk av OpenACC-direktiver og klausuler for å optimalisere vektorisering og auto-tuning

Sammendrag og neste trinn

Krav

  • En forståelse av C/C++ eller Fortran-språk og parallellprogrammeringskonsepter
  • Grunnleggende kunnskap om dataarkitektur og minnehierarki
  • Erfaring med kommandolinjeverktøy og koderedigerere

Publikum

  • Utviklere som ønsker å lære å bruke OpenACC til å programmere heterogene enheter og utnytte deres parallellitet
  • Utviklere som ønsker å skrive bærbar og skalerbar kode som kan kjøres på forskjellige plattformer og enheter
  • Programmerere som ønsker å utforske høynivåaspektene ved heterogen programmering og optimalisere kodeproduktiviteten deres
 28 timer

Antall deltakere



Price per participant

Testimonials (1)

Relaterte kurs

GPU Programming - OpenCL vs CUDA vs ROCm

28 timer

Related Categories