Predstavljena specifikacija OpenCL 3.0

Koncern Khronos, odgovoran za razvoj specifikacija obitelji OpenGL, Vulkan i OpenCL, najavio o dovršetku razvoja specifikacija OpenCL 3.0 koje definiraju API-je i proširenja jezika C za organiziranje višeplatformskog paralelnog računalstva korištenjem višejezgrenih CPU-a, GPU-a, FPGA-a, DSP-a i drugih specijaliziranih čipova, od onih koji se koriste u superračunalima i poslužiteljima u oblaku do čipova koji se mogu pronaći u mobilnim uređajima i ugrađenoj tehnologiji. OpenCL standard je potpuno otvoren i ne zahtijeva naknade za licencu. U radu na standardu sudjelovale su tvrtke kao što su IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments i Toshiba.

U trenutnoj fazi specifikaciji je dodijeljen privremeni status, što podrazumijeva mogućnost dorade na temelju povratnih informacija poslanih putem GitHub. Nakon što se komentari uzmu u obzir, specifikacija će biti finalizirana i konačni paket testova bit će objavljen za testiranje kompatibilnosti postojećih implementacija.

Predstavljena specifikacija OpenCL 3.0

Najistaknutiji značajke OpenCL 3.0:

  • OpenCL 3.0 API sada pokriva sve verzije OpenCL-a (1.2, 2.x), bez davanja posebnih specifikacija za svaku verziju. OpenCL 3.0 pruža mogućnost proširenja osnovne funkcionalnosti kroz integraciju dodatnih specifikacija koje će biti slojevito u obliku opcija bez blokiranja monolitne prirode OpenCL 1.2/2.X.
  • Samo funkcionalnost koja je u skladu s OpenCL 1.2 proglašena je obveznom, a sve značajke predložene u specifikacijama OpenCL 2.x klasificirane su kao neobavezne. Ovaj će pristup olakšati stvaranje prilagođenih implementacija koje su kompatibilne s OpenCL 3.0 i proširit će raspon uređaja na kojima se OpenCL 3.0 može koristiti. Na primjer, proizvođači mogu implementirati podršku za OpenCL 3.0 bez implementacije specifičnih značajki OpenCL 2.x. Za pristup neobaveznim jezičnim značajkama, OpenCL 3.0 je dodao sustav testnih upita koji vam omogućuje procjenu podrške pojedinačnih API elemenata, kao i posebne makronaredbe.
  • Unifikacija s prethodno objavljenim specifikacijama olakšava migraciju aplikacija na OpenCL 3.0. OpenCL 1.2 aplikacije moći će raditi na uređajima koji podržavaju OpenCL 3.0 bez modifikacija. Aplikacije OpenCL 2.x također neće zahtijevati promjene koda, sve dok okruženje OpenCL 3.0 pruža potrebnu funkcionalnost (kako bi se osigurala buduća prenosivost, aplikacijama OpenCL 2.x preporučuje se dodavanje testnih upita za procjenu podrške za značajke OpenCL 2.x koristi se). Programeri upravljačkih programa s OpenCL implementacijama mogu jednostavno nadograditi svoje proizvode na OpenCL 3.0, dodajući samo obradu upita za određene API pozive i postupno povećavati funkcionalnost tijekom vremena.
  • Specifikacija OpenCL 3.0 usklađena je s okruženjem, ekstenzijama i specifikacijama SPIR-V generičke intermedijarne reprezentacije, koju također koristi Vulkan API. Podrška za specifikaciju SPIR-V 1.3 uključena je u jezgru OpenCL 3.0 kao izborna značajka. Kroz korištenje posrednog prikaza SPIR-V dodana je podrška za rad s podgrupama za računalne jezgre.
    Predstavljena specifikacija OpenCL 3.0

  • Dodana podrška za proširenje za izvođenje asinkronih DMA operacija (Asynchronous DMA), podržano u čipovima nalik na DSP s izravnim pristupom memoriji. Asinkroni DMA omogućuje korištenje DMA transakcija za asinkroni prijenos podataka između globalne i lokalne memorije, paralelno s izračunima ili drugim operacijama prijenosa podataka.
  • Specifikacija proširenja C paralelnog programiranja je ažurirana na inačica 3.0, a razvoj jezičnih proširenja OpenCL za C++ prekinut je u korist projekta “C++ za OpenCL”. C++ za OpenCL je kompajler temeljen na Clang/LLVM i emitiranje C++ i OpenCL C kerneli u SPIR-V posredni prikaz ili strojni kod niske razine. Putem emitiranja, SPIR-V također organizira sklapanje C++ aplikacija koristeći biblioteku predložaka SYCL, što pojednostavljuje stvaranje paralelnih aplikacija.

    Predstavljena specifikacija OpenCL 3.0

  • Predložen je kompajler za emitiranje OpenCL-a putem Vulkan API-ja clspv, koji pretvara OpenCL kernele u Vulkan SPIR-V prikaz i sloj clvk kako biste omogućili OpenCL API-ju da radi povrh Vulkana.

    Predstavljena specifikacija OpenCL 3.0

Izvor: opennet.ru

Dodajte komentar