Mulțumim pentru trimiterea solicitării! Un membru al echipei noastre vă va contacta în curând.
Mulțumim pentru trimiterea rezervării! Un membru al echipei noastre vă va contacta în curând.
Schița de curs
Introducere
- Ce este OpenACC?
- OpenACC vs OpenCL vs CUDA vs SYCL
- Prezentare generală a caracteristicilor și arhitecturii OpenACC
- Configurarea mediului de dezvoltare
Început
- Crearea unui proiect OpenACC în Visual Studio Code
- Explorarea structurii și fișierelor proiectului
- Compilarea și rularea programului
- Afișarea rezultatelor cu printf și fprintf
Directive și clauze OpenACC
- Înțelegerea directivelor și clauzelor OpenACC
- Utilizarea directivelor parallel pentru crearea de regiuni paralele
- Utilizarea directivelor kernels pentru paralelism gestionat de compilator
- Utilizarea directivelor loop pentru paralelizarea buclelor
- Gestionarea mișcării datelor cu directivele data
- Sincronizarea datelor cu directivele update
- Îmbunătățirea reutilizării datelor cu directivele cache
- Crearea funcțiilor pe dispozitiv cu directivele routine
- Sincronizarea evenimentelor cu directivele wait
API OpenACC
- Înțelegerea rolului API-ului OpenACC
- Interogarea informațiilor și capabilităților dispozitivului
- Setarea numărului și tipului de dispozitiv
- Gestionarea erorilor și excepțiilor
- Crearea și sincronizarea evenimentelor
Biblioteci și interoperabilitate OpenACC
- Înțelegerea bibliotecilor și interoperabilității OpenACC
- Utilizarea bibliotecilor matematice, de numere aleatoare și complexe
- Integrarea cu alte modele (CUDA, OpenMP, MPI)
- Integrarea cu biblioteci GPU (cuBLAS, cuFFT)
Instrumente OpenACC
- Înțelegerea instrumentelor OpenACC în dezvoltare
- Profilarea și depanarea programelor OpenACC
- Analiza performanței cu PGI Compiler, NVIDIA Nsight Systems, Allinea Forge
Optimizare
- Factorii care afectează performanța programelor OpenACC
- Optimizarea localității datelor și reducerea transferurilor
- Optimizarea paralelismului și fuziunii buclelor
- Optimizarea paralelismului și fuziunii kernel-urilor
- Optimizarea vectorizării și auto-ajustării
Rezumat și pași următori
Cerințe
- Cunoștințe de bază în limbajele C/C++ sau Fortran și concepte de programare paralelă
- Cunoștințe de bază despre arhitectura calculatoarelor și ierarhia memoriei
- Experiență cu instrumente de linie de comandă și editori de cod
Public țintă
- Dezvoltatori care doresc să învețe cum să utilizeze OpenACC pentru a programa dispozitive eterogene și să exploateze paralelismul acestora
- Dezvoltatori care doresc să scrie cod portabil și scalabil care să ruleze pe diferite platforme și dispozitive
- Programatori care doresc să exploreze aspectele de nivel înalt ale programării eterogene și să își optimizeze productivitatea codului
28 Ore