Specificațiile finale OpenCL 3.0 publicate

Concernul Khronos, responsabil pentru dezvoltarea specificațiilor pentru familia OpenGL, Vulkan și OpenCL, a anunțat la publicarea caietului de sarcini definitiv OpenCL 3.0, definind API-uri și extensii ale limbajului C pentru organizarea calculului paralel multiplatform folosind procesoare multi-core, GPU-uri, FPGA, DSP-uri și alte cipuri specializate, de la cele utilizate în supercomputere și servere cloud până la cipuri care pot fi găsite în dispozitivele mobile și tehnologie încorporată. Standardul OpenCL este complet deschis și nu necesită taxe de licență.

Simultan publicat deschideți OpenCL SDK cu instrumente, exemple, documentație, fișiere antet, legături C++ și biblioteci C pentru dezvoltarea aplicațiilor compatibile cu OpenCL 3.0. De asemenea este prezentat implementarea inițială a OpenCL 3.0 bazată pe compilatorul Clang, care se află în stadiul de revizuire a patch-urilor pentru includerea în structura principală a LLVM. Companii precum IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments și Toshiba au participat la lucrul la standard.

Specificațiile finale OpenCL 3.0 publicate

Cel mai notabil caracteristici OpenCL 3.0:

  • API-ul OpenCL 3.0 acoperă acum toate versiunile OpenCL (1.2, 2.x), fără a furniza specificații separate pentru fiecare versiune. OpenCL 3.0 oferă capacitatea de a extinde funcționalitatea de bază prin integrarea unor specificații suplimentare care vor fi stratificate sub formă de opțiuni fără a bloca natura monolitică a OpenCL 1.2/2.X.
  • Doar funcționalitatea care respectă OpenCL 1.2 este declarată obligatorie, iar toate caracteristicile propuse în specificațiile OpenCL 2.x sunt clasificate ca opționale. Această abordare va facilita crearea de implementări personalizate compatibile cu OpenCL 3.0 și va extinde gama de dispozitive pe care poate fi utilizat OpenCL 3.0. De exemplu, producătorii pot implementa suportul OpenCL 3.0 fără a implementa caracteristici specifice OpenCL 2.x. Pentru a accesa funcțiile opționale ale limbajului, OpenCL 3.0 a adăugat un sistem de interogări de testare care vă permite să evaluați suportul elementelor API individuale, precum și macrocomenzi speciale.
  • Unificarea cu specificațiile lansate anterior facilitează migrarea aplicațiilor către OpenCL 3.0. Aplicațiile OpenCL 1.2 vor putea rula pe dispozitive care acceptă OpenCL 3.0 fără modificări. De asemenea, aplicațiile OpenCL 2.x nu vor necesita modificări de cod, atâta timp cât mediul OpenCL 3.0 oferă funcționalitatea necesară (pentru a asigura portabilitatea viitoare, se recomandă aplicațiilor OpenCL 2.x să adauge interogări de testare pentru a evalua suportul pentru caracteristicile OpenCL 2.x folosit). Dezvoltatorii de drivere cu implementări OpenCL își pot actualiza cu ușurință produsele la OpenCL 3.0, adăugând doar procesarea interogărilor pentru anumite apeluri API și crește treptat funcționalitatea în timp.
  • Specificația OpenCL 3.0 este aliniată cu mediul, extensiile și specificațiile reprezentării intermediare generice SPIR-V, care este, de asemenea, utilizată de API-ul Vulkan. Suportul pentru specificația SPIR-V 1.3 este inclus în nucleul OpenCL 3.0 ca o caracteristică opțională. Prin utilizarea unei reprezentări intermediare SPIR-V a fost adăugat suport pentru operațiuni cu subgrupuri pentru nucleele de calcul.
    Specificațiile finale OpenCL 3.0 publicate

  • S-a adăugat suport pentru o extensie pentru efectuarea de operațiuni DMA asincrone (Asynchronous DMA), acceptată în cipuri asemănătoare DSP cu acces direct la memorie. DMA asincron face posibilă utilizarea tranzacțiilor DMA pentru a transfera date între memoria globală și locală în mod asincron, în paralel cu calcule sau alte operațiuni de transfer de date.
  • Specificația C Parallel Programming Extensions a fost actualizată la versiunea 3.0, iar dezvoltarea extensiilor de limbaj OpenCL pentru C++ a fost întreruptă în favoarea proiectului „C++ pentru OpenCL”. C++ pentru OpenCL este un compilator bazat pe Clang/LLVM și de difuzare Nuclee C++ și OpenCL C în reprezentare intermediară SPIR-V sau cod mașină de nivel scăzut. Prin difuzare, SPIR-V organizează și asamblarea aplicațiilor C++ folosind biblioteca de șabloane SYCL, care simplifică crearea de aplicații paralele.

    Specificațiile finale OpenCL 3.0 publicate

  • A fost propus un compilator pentru difuzarea OpenCL prin API-ul Vulkan clspv, care convertește nucleele OpenCL într-o reprezentare Vulkan SPIR-V și un strat clvk pentru a permite API-ului OpenCL să funcționeze pe Vulkan.

    Specificațiile finale OpenCL 3.0 publicate

Sursa: opennet.ru

Adauga un comentariu