Intrati in legatura

Schița de curs

Introducere

  • Ce este OpenCL?
  • OpenCL vs CUDA vs SYCL
  • Prezentare generală a caracteristicilor și arhitecturii OpenCL
  • Configurarea mediului de dezvoltare

Începuturi

  • Crearea unui nou proiect OpenCL folosind Visual Studio Code
  • Explorarea structurii și fișierelor proiectului
  • Compilarea și rularea programului
  • Afișarea rezultatelor folosind printf și fprintf

API OpenCL

  • Înțelegerea rolului API-ului OpenCL în programul gazdă
  • Utilizarea API-ului OpenCL pentru a interoga informații și capacități ale dispozitivului
  • Utilizarea API-ului OpenCL pentru a crea contexte, cozi de comenzi, buffere, nuclee și evenimente
  • Utilizarea API-ului OpenCL pentru a încărca comenzi, cum ar fi citire, scriere, copiere, mapare, demapare, execuție și așteptare
  • Utilizarea API-ului OpenCL pentru a gestiona erori și excepții

OpenCL C

  • Înțelegerea rolului OpenCL C în programul dispozitivului
  • Utilizarea OpenCL C pentru a scrie nuclee care se execută pe dispozitiv și manipulează date
  • Utilizarea tipurilor de date, calificatoarelor, operatorilor și expresiilor OpenCL C
  • Utilizarea funcțiilor încorporate OpenCL C, cum ar fi cele matematice, geometrice, relaționale etc.
  • Utilizarea extensiilor și bibliotecilor OpenCL C, cum ar fi atomic, image, cl_khr_fp16 etc.

Modelul de memorie OpenCL

  • Înțelegerea diferenței dintre modelele de memorie ale gazdei și dispozitivului
  • Utilizarea spațiilor de memorie OpenCL, cum ar fi global, local, constant și privat
  • Utilizarea obiectelor de memorie OpenCL, cum ar fi buffere, imagini și conducte
  • Utilizarea modurilor de acces la memorie OpenCL, cum ar fi read-only, write-only, read-write etc.
  • Utilizarea modelului de consistență a memoriei și a mecanismelor de sincronizare OpenCL

Modelul de execuție OpenCL

  • Înțelegerea diferenței dintre modelele de execuție ale gazdei și dispozitivului
  • Utilizarea elementelor de lucru, grupurilor de lucru și intervalelor ND OpenCL pentru a defini paralelismul
  • Utilizarea funcțiilor de lucru OpenCL, cum ar fi get_global_id, get_local_id, get_group_id etc.
  • Utilizarea funcțiilor de grup de lucru OpenCL, cum ar fi barrier, work_group_reduce, work_group_scan etc.
  • Utilizarea funcțiilor dispozitivului OpenCL, cum ar fi get_num_groups, get_global_size, get_local_size etc.

Depanare

  • Înțelegerea erorilor și bug-urilor comune în programele OpenCL
  • Utilizarea debugger-ului Visual Studio Code pentru a inspecta variabile, puncte de întrerupere, stiva de apeluri etc.
  • Utilizarea CodeXL pentru a depana și analiza programe OpenCL pe dispozitive AMD
  • Utilizarea Intel VTune pentru a depana și analiza programe OpenCL pe dispozitive Intel
  • Utilizarea NVIDIA Nsight pentru a depana și analiza programe OpenCL pe dispozitive NVIDIA

Optimizare

  • Înțelegerea factorilor care afectează performanța programelor OpenCL
  • Utilizarea tipurilor de date vectoriale și a tehnicilor de vectorizare OpenCL pentru a îmbunătăți debitul aritmetic
  • Utilizarea tehnicilor de desfășurare a buclelor și a tăierii buclelor OpenCL pentru a reduce suprapunerea de control și a crește localitatea
  • Utilizarea memoriei locale și a funcțiilor de memorie locală OpenCL pentru a optimiza accesul la memorie și lățimea de bandă
  • Utilizarea profilării și a instrumentelor de profilare OpenCL pentru a măsura și îmbunătăți timpul de execuție și utilizarea resurselor

Rezumat și pași următori

Cerințe

  • Înțelegerea limbajului C/C++ și a conceptelor 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ă OpenCL pentru a programa dispozitive eterogene și să le exploateze paralelismul
  • 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 scăzut ale programării eterogene și să-și optimizeze performanța codului
 28 Ore

Numărul de participanți


Pret per participant

Cursuri viitoare

Categorii înrudite