Schița de curs

Introducere

  • Ce este OpenACC?
  • OpenACC vs OpenCL vs CUDA vs SYCL
  • Panorama funcțiilor și arhitecturii OpenACC
  • Setarea mediului de dezvoltare

Începuturi

  • Crearea unui proiect OpenACC în Visual Studio Code
  • Explorarea structurii proiectului și fișierele sale
  • Compilarea și rularea programului
  • Afișarea ieșirii cu printf și fprintf

Directive și clauze OpenACC

  • Înțelegerea directivelor și clauzelor OpenACC
  • Folosirea directivelor paralele pentru crearea regiunilor paralele
  • Folosirea directivelor kernel pentru paralelism gestionat de compilator
  • Folosirea directivelor loop pentru paralelizarea buclelor
  • Gestionarea mișcării datelor cu directivele data
  • Sincronizarea datelor cu directivele update
  • Mai buna utilizare a cache-ului cu directivele cache
  • Crearea funcțiilor de dispozitiv cu directivele routine
  • Sincronizarea evenimentelor cu directivele wait

API-ul OpenACC

  • Înțelegerea rolului API-ului OpenACC
  • Cererea informațiilor și capacităților dispozitivelor
  • Setarea numărului și tipului de dispozitiv
  • Gestionarea erorilor și excepțiilor
  • Crearea și sincronizarea evenimentelor

Bibliotecile și interoperabilitatea OpenACC

  • Înțelegerea bibliotecilor și interoperabilității OpenACC
  • Folosirea bibliotecilor matematice, aleatorii și complexe
  • Integrarea cu alte modele (CUDA, OpenMP, MPI)
  • Integrarea cu bibliotecile GPU (cuBLAS, cuFFT)

Uneltele OpenACC

  • Înțelegerea uneltelor OpenACC în dezvoltare
  • Profilarea și depistarea erorilor programelor OpenACC
  • Analiza performanței cu compilatorul PGI, NVIDIA Nsight Systems, Allinea Forge

Optimizare

  • Factorii care influențează performanța programelor OpenACC
  • Optimizarea localității datelor și reducerea transferurilor
  • Optimizarea paralelismului buclelor și fuziunii acestora
  • Optimizarea paralelismului kernel și fuziunii acestora
  • Optimizarea vectorizării și auto-tuning-ului

Scurtă rezumat și următoarele pași

Cerințe

  • Înțelegerea limbii C/C++ sau Fortran și conceptelor de programare paralelă
  • Cunoștințe de bază despre arhitectura computerului și ierarhia memoriei
  • Experiență cu unelte de linie de comandă și editoare de cod

Audiență

  • Dezvoltatori care doresc să învețe cum să folosească OpenACC pentru a programa dispozitive heterogene și a exploata 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 ridicat ale programării heterogene și a optimiza productivitatea codului lor
 28 ore

Numărul de participanți


Pret per participant

Cursuri viitoare

Categorii înrudite