Takk for at du sendte din henvendelse! En av våre teammedlemmer vil kontakte deg straks.
Takk for at du sendte din bestilling! En av våre teammedlemmer vil kontakte deg straks.
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