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
Începutul
- 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 paralele pentru crearea regiunilor paralele
- Utilizarea directivelor kernels pentru paralelism gestionat de compilator
- Utilizarea directivelor loop pentru paralelizarea buclelor
- Gestionarea mișcării datelor cu directive de date
- Sincronizarea datelor cu directive de actualizare
- Îmbunătățirea reutilizării datelor cu directive de cache
- Crearea funcțiilor pe dispozitiv cu directive de rutină
- Sincronizarea evenimentelor cu directive de așteptare
API OpenACC
- Înțelegerea rolului API-ului OpenACC
- Interogarea informațiilor și capacităților dispozitivului
- Setarea numărului și tipului dispozitivului
- Gestionarea erorilor și excepțiilor
- Crearea și sincronizarea evenimentelor
Biblioteci și interoperabilitate OpenACC
- Înțelegerea bibliotecilor și interoperabilității OpenACC
- Utilizarea bibliotecilor matematice, aleatorii ș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
- Factori care afectează performanța programelor OpenACC
- Optimizarea localității datelor și reducerea transferurilor
- Optimizarea paralelismului și fuziunii buclelor
- Optimizarea paralelismului și fuziunii nucleelor
- Optimizarea vectorizării și auto-acordării
Rezumat și pași următori
Cerințe
- Cunoștințe de limbaj 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
Publicul țintă
- Dezvoltatori care doresc să învețe cum să folosească OpenACC pentru a programa dispozitive eterogene și să exploateze paralelismul acestora
- Dezvoltatori care doresc să scrie cod portabil și scalabil care poate rula 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