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)

Cursuri înrudite

GPU Programming with OpenCL

28 ore

GPU Programming with CUDA

28 ore

GPU Programming - OpenCL vs CUDA vs ROCm

28 ore

AMD GPU Programming

28 ore

ROCm for Windows

21 ore

Introduction to GPU Programming

21 ore

Categorii înrudite