Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Kursplan
Införandet
- Vad är OpenACC?
- OpenACC jämfört med OpenCL jämfört med CUDA jämfört med SYCL
- Översikt över funktioner och arkitektur i OpenACC
- Konfigurera utvecklingsmiljön
Komma igång
- Skapa ett nytt OpenACC-projekt med hjälp av Visual Studio Code
- Utforska projektstrukturen och filerna
- Kompilera och köra programmet
- Visa utdata med printf och fprintf
OpenACC-direktiv och klausuler
- Förstå rollen för OpenACC-direktiv och -klausuler i värd- och enhetskoden
- Använda OpenACC:s parallella direktiv och satser för att skapa parallella regioner och ange antalet gäng, arbetare och vektorer
- Använda OpenACC-kärndirektiv och -satser för att skapa kernelregioner och låta kompilatorn bestämma parallelliteten
- Använda OpenACC-loopdirektiv och -satser för att parallellisera loopar och specificera loopdistribution, kollaps, reduktion och kakel
- Använda OpenACC-datadirektiv och -klausuler för att hantera dataflytt och dataregioner
- Använda OpenACC-uppdateringsdirektiv och -klausuler för att synkronisera data mellan värden och enheten
- Använda OpenACC-cachedirektiv och -klausuler för att förbättra återanvändning av data och lokalitet
- Använda OpenACC-rutindirektiv och -satser för att skapa enhetsfunktioner och ange funktionstyp och vektorlängd
- Använda OpenACC:s väntedirektiv och -satser för att synkronisera händelser och beroenden
OpenACC API
- Förstå OpenACC API:s roll i värdprogrammet
- Använda OpenACC API för att fråga efter enhetsinformation och funktioner
- Använda OpenACC API för att ställa in enhetsnummer och enhetstyp
- Använda OpenACC API för att hantera fel och undantag
- Använda OpenACC API för att skapa och synkronisera händelser
OpenACC-bibliotek och interoperabilitet
- Förstå rollen för OpenACC-bibliotek och interoperabilitetsfunktioner i enhetsprogrammet
- Använda OpenACC-bibliotek, t.ex. matematik, slumpmässig och komplex, för att utföra vanliga uppgifter och operationer
- Använda OpenACC-interoperabilitetsfunktioner, såsom deviceptr, use_device och acc_memcpy, för att integrera OpenACC med andra programmeringsmodeller, såsom CUDA, OpenMP och MPI
- Använda OpenACC-interoperabilitetsfunktioner, såsom host_data och declare, för att integrera OpenACC med GPU-bibliotek, såsom cuBLAS och cuFFT
OpenACC-verktyg
- Förstå OpenACC-verktygens roll i utvecklingsprocessen
- Använda OpenACC-verktyg för att profilera och felsöka OpenACC-program och identifiera flaskhalsar och möjligheter i prestanda
- Använda OpenACC-verktyg, såsom PGI Compiler, NVIDIA Nsight Systems och Allinea Forge, för att mäta och förbättra exekveringstiden och resursutnyttjandet
Optimering
- Förstå de faktorer som påverkar prestandan hos OpenACC-program
- Använda OpenACC-direktiv och -klausuler för att optimera datalokalitet och minska dataöverföringar
- Använda OpenACC-direktiv och -klausuler för att optimera loopparallellitet och fusion
- Använda OpenACC-direktiv och -satser för att optimera kärnparallellitet och fusion
- Använda OpenACC-direktiv och -klausuler för att optimera vektorisering och automatisk justering
Sammanfattning och nästa steg
Krav
- En förståelse för C/C++ eller Fortran-språk och parallella programmeringskoncept
- Grundläggande kunskaper om datorarkitektur och minneshierarki
- Erfarenhet av kommandoradsverktyg och kodredigerare
Publik
- Utvecklare som vill lära sig att använda OpenACC för att programmera heterogena enheter och utnyttja deras parallellitet
- Utvecklare som vill skriva portabel och skalbar kod som kan köras på olika plattformar och enheter
- Programmerare som vill utforska de övergripande aspekterna av heterogen programmering och optimera sin kodproduktivitet
28 timmar
Vittnesmål (2)
Väldigt interaktiv med olika exempel, med en bra progression i komplexitet mellan start och slut av träningen.
Jenny - Andheo
Kurs - GPU Programming with CUDA and Python
Machine Translated
Tränarnas energi och humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Kurs - NVIDIA GPU Programming - Extended
Machine Translated