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

Numărul de participanți


Pret per participant

Cursuri viitoare

Categorii înrudite