Tack för att du skickade din fråga! En av våra teammedlemmar kontaktar dig snart.
Tack för att du skickade din bokning! En av våra teammedlemmar kontaktar dig snart.
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