Kursplan

Första Steg

  • Vad är OpenACC?
  • OpenACC vs OpenCL vs CUDA vs SYCL
  • Översikt över OpenACC-funktioner och arkitektur
  • Ställa in utvecklingsmiljön

Komma igång

  • Skapa ett OpenACC-projekt i Visual Studio Code
  • Utforska projektstruktur och filer
  • Kompilera och köra programmet
  • Visa utdata med printf och fprintf

OpenACC-direktiv och klausuler

  • Förstå OpenACC-direktiv och klausuler
  • Använd parallella direktiv för att skapa parallella regioner
  • Använd kernel-direktiv för kompileringsstyrd parallellism
  • Använd loopdirektiv för att parallellisera loopar
  • Hantera dataöverföring med datadirektiv
  • Synkronisera data med uppdateringsdirektiv
  • Förbättra dataåteranvändning med cacheklausuler
  • Skapa enhetsfunktioner med rutindirektiv
  • Synkronisera händelser med väntedirektiv

OpenACC-API

  • Förstå rollen av OpenACC-API
  • Fråga enhetsinformation och kapaciteter
  • Ange enhetens nummer och typ
  • Hantera fel och undantag
  • Skapa och synkronisera händelser

OpenACC-bibliotek och interoperabilitet

  • Förstå OpenACC-bibliotek och interoperabilitet
  • Använda matematiska, slumpade och komplexa bibliotek
  • Tillämpa med andra modeller (CUDA, OpenMP, MPI)
  • Tillämpa med GPU-bibliotek (cuBLAS, cuFFT)

OpenACC-verktyg

  • Förstå OpenACC-verktyg i utveckling
  • Profilerar och felsöka OpenACC-program
  • Prestandaanalys med PGI-kompilator, NVIDIA Nsight Systems, Allinea Forge

Optimering

  • Faktorer som påverkar OpenACC-programs prestanda
  • Optimera datalokalitet och minskar överföringar
  • Optimera loopparallellism och fusionering
  • Optimera kärnparallellism och fusionering
  • Optimera vektorisering och automatisk justering

Sammanfattning och nästa steg

Krav

  • Ett förståelse för C/C++ eller Fortran-språk och parallella programmeringskoncept
  • Grundläggande kunskap om datorarkitektur och minneshierarkin
  • Erfarenhet av kommandoradverktyg och kodredigerare

Målgrupp

  • Utvecklare som vill lära sig hur man använder OpenACC för att programmera heterogena enheter och utnyttja deras parallellism
  • Utvecklare som vill skriva portabel och skalbar kod som kan köras på olika plattformar och enheter
  • Programmerare som vill utforska de högnivåaspekterna av heterogen programmering och optimera sin kodproduktivitet
 28 timmar

Antal deltagare


Pris per deltagare

Kommande Kurser

Relaterade Kategorier