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

Noțiuni introductive

  • Crearea unui nou proiect OpenACC utilizând codul Visual Studio Code
  • Explorarea structurii proiectului și a fișierelor
  • Compilarea și rularea programului
  • Afișarea ieșirii utilizând printf și fprintf

Directive și clauze OpenACC

  • Înțelegerea rolului directivelor și clauzelor OpenACC în codul gazdă și în codul dispozitivului
  • Utilizarea directivelor și clauzelor paralele OpenACC pentru a crea regiuni paralele și a specifica numărul de ganguri, lucrători și vectori
  • Utilizarea directivelor și clauzelor OpenACC kernels pentru a crea regiuni kernels și a lăsa compilatorul să decidă asupra paralelismului.
  • Utilizarea directivei și a clauzelor OpenACC privind buclele și a clauzelor de paralelizare a buclelor și specificarea distribuției buclelor, a colapsului, a reducerii și a țiglei.
  • Utilizarea directivei și clauzelor OpenACC data pentru a gestiona mișcarea datelor și regiunile de date.
  • Utilizarea directivei și clauzelor de actualizare OpenACC pentru a sincroniza datele între gazdă și dispozitiv.
  • Utilizarea directivei și clauzelor OpenACC privind memoria cache pentru a îmbunătăți reutilizarea și localizarea datelor.
  • Utilizarea directivei și a clauzelor OpenACC privind rutina OpenACC pentru a crea funcții de dispozitiv și pentru a specifica tipul de funcție și lungimea vectorului.
  • Utilizarea directivei și a clauzelor OpenACC wait pentru a sincroniza evenimentele și dependențele.

API OpenACC

  • Înțelegerea rolului API OpenACC în programul gazdă.
  • Utilizarea OpenACC API pentru a interoga informații ș i capacități ale dispozitivului.
  • Utilizarea OpenACC API pentru a seta numărul și tipul dispozitivului.
  • Utilizarea API OpenACC pentru a gestiona erorile și excepțiile.
  • Utilizarea OpenACC API pentru a crea și sincroniza evenimente.

Biblioteci OpenACC ș i interoperabilitate

  • Înțelegerea rolului bibliotecilor OpenACC ș i a caracteristicilor de interoperabilitate în programul de dispozitive.
  • Utilizarea bibliotecilor OpenACC, cum ar fi bibliotecile matematice, aleatoare și complexe, pentru a efectua sarcini și operații comune.
  • Utilizarea caracteristicilor de interoperabilitate OpenACC, cum ar fi deviceptr, use_device și acc_memcpy, pentru a integra OpenACC cu alte modele de programare, cum ar fi CUDA, OpenMP și MPI.
  • Utilizarea caracteristicilor de interoperabilitate OpenACC, cum ar fi host_data și declare, pentru a integra OpenACC cu bibliotecile GPU, cum ar fi cuBLAS și cuFFT.

Instrumente OpenACC

  • Înțelegerea rolului instrumentelor OpenACC în procesul de dezvoltare
  • Utilizarea instrumentelor OpenACC pentru profilarea și depanarea programelor OpenACC și identificarea blocajelor de performanță și a oportunităților.
  • Utilizarea instrumentelor OpenACC, cum ar fi PGI Compiler, NVIDIA Nsight Systems și Allinea Forge, pentru a măsura și îmbunătăți timpul de execuție și utilizarea resurselor.

Optimizare

  • Înțelegerea factorilor care afectează performanța programelor OpenACC
  • Utilizarea directivelor și clauzelor OpenACC pentru a optimiza localitatea datelor și a reduce transferurile de date
  • Utilizarea directivelor și clauzelor OpenACC pentru a optimiza paralelismul și fuziunea buclelor
  • Utilizarea directivelor și clauzelor OpenACC pentru a optimiza paralelismul și fuziunea nucleului.
  • Utilizarea directivelor și clauzelor OpenACC pentru a optimiza vectorizarea și auto-tuningul.

Rezumat și etape următoare

Cerințe

  • Înțelegerea limbajului C/C++ sau Fortran și a conceptelor de programare paralelă
  • cunoștințe de bază despre arhitectura calculatoarelor și ierarhia de memorie
  • experiență în utilizarea instrumentelor de linie de comandă și a editorilor de cod

Publicul

  • Dezvoltatorii care doresc să învețe cum să utilizeze OpenACC pentru a programa dispozitive eterogene și a exploata paralelismul acestora.
  • Dezvoltatorii 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

Numărul de participanți



Pret per participant

Mărturii (1)

Categorii înrudite