Koncerni Khronos, i cili është përgjegjës për zhvillimin e specifikimeve të familjes OpenGL, Vulkan dhe OpenCL, për përfundimin e zhvillimit të specifikimeve OpenCL 3.0, të cilat përcaktojnë API dhe zgjerimet e gjuhës C për organizimin e llogaritjes paralele ndërplatformës me përdorimin e CPU shumëbërthamore, GPU, FPGA, DSP dhe çipa të tjerë të specializuar, nga ata që përdoren në superkompjuterë dhe serverë në re, deri te çipat që mund të hasen në pajisje mobile dhe teknologji të integruar. Standarti OpenCL është plotësisht i hapur dhe nuk kërkon pagesa licencash. Në punën mbi standardin kanë marrë pjesë kompani si IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments dhe Toshiba.
Në këtë fazë specifikimi i është caktuar statusi i përkohshëm (provisional), që nënkupton mundësinë e përmirësimit në bazë të komenteve të dërguara përmes . Pasi të merren parasysh vërejtjet, specifikimi do të marrë statusin përfundimtar dhe do të publikohen përfundimisht seti testues për të verifikuar përputhshmërinë e realizimeve ekzistuese.
Pikat më të dukshme :
- API OpenCL 3.0 tani mbulon të gjitha versionet e OpenCL (1.2, 2.x), pa ofruar specifikime të ndara për çdo version. OpenCL 3.0 parashikon mundësinë e zgjerimit të funksionalitetit bazë përmes integrimit të specifikimeve të tjera, të cilat do të ngjiten në formën e opsioneve, pa bllokuar karakterin monolitik të OpenCL 1.2/2.X.
- Funksionaliteti i detyrueshëm është shpallur vetëm ai që i korrespondon OpenCL 1.2, ndërsa të gjitha mundësitë që ofrohen në specifikimet OpenCL 2.x janë klasifikuar si opsionale. Ky qasje do ta thjeshtojë krijimin e implementimeve të specializuara, që janë të pajtueshme me OpenCL 3.0, dhe do të zgjedhë gamën e pajisjeve ku OpenCL 3.0 mund të përdoret. Për shembull, prodhuesit mund të implementojnë mbështetje për OpenCL 3.0 pa realizuar mundësi të veçanta të OpenCL 2.x. Për qasje në mundësitë opsionale të gjuhës, OpenCL 3.0 ka shtuar një sistem kërkesash verifikimi që lejon vlerësimin e mbështetjes së elementeve të veçanta të API-së, si dhe makros speciale.
- Unifikimi me specifikimet e lëshuara më parë e thjeshton përkthimin e aplikacioneve në OpenCL 3.0. Aplikacionet OpenCL 1.2 do të jenë në gjendje të funksionojnë në pajisjet me mbështetje për OpenCL 3.0 pa kërkuar ndryshime. Aplikacionet OpenCL 2.x gjithashtu nuk do të kërkojnë ndryshime në kod, por nëse mjedisi OpenCL 3.0 ofron funksionalitetin e nevojshëm (për të siguruar portabilitetin e aplikacioneve në të ardhmen, aplikacionet OpenCL 2.x rekomandohet të shtojnë kërkesa verifikuese për të vlerësuar mbështetje për funksionalitetet e përdorura të OpenCL 2.x). Zhvilluesit e shoferëve me implementime OpenCL do të jenë në gjendje t'i përditësojnë lehtësisht produktet e tyre në OpenCL 3.0 duke shtuar vetëm përpunimin e kërkesave për thirrje të caktuara API, dhe me kalimin e kohës do të rrisin funksionalitetin.
- Specifikimi i OpenCL 3.0 është sjellë në përputhje me mjedisin, zgjerimet dhe specifikimet e përfaqësimit të përbashkët ndërmjet SPIR-V, i cili gjithashtu përdoret në API Vulkan. Mbështetje për specifikimin SPIR-V 1.3 është përfshirë në OpenCL 3.0 si një mundësi opsionale. Përmes përdorimit të përfaqësimit të përbashkët për bërthamën e llogaritjeve është shtuar mbështetje për operacione me grupe të nënshkruara.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r zgjerimin pĂ«r kryerjen e operacioneve DMA asinkrone (Asynchronous DMA), tĂ« mbĂ«shtetur nĂ« çipat e ngjashĂ«m me DSP me qasje tĂ« drejtpĂ«rdrejtĂ« nĂ« kujtesĂ«. Asynchronous DMA ofron mundĂ«sinĂ« pĂ«r tĂ« pĂ«rdorur transaksione DMA pĂ«r transferimin e tĂ« dhĂ«nave midis kujtesĂ«s globale dhe asaj lokale nĂ« mĂ«nyrĂ« asinkrone, paralelisht me llogaritĂ« qĂ« po kryhen ose operacione tĂ« tjera tĂ« transferimit tĂ« tĂ« dhĂ«nave.
- Specifikimi i zgjerimeve për programimin paralel në gjuhën C është përditësuar në , dhe zhvillimi i zgjerimeve gjuhësore të OpenCL për C++ është ndaluar në favor të projektit "C++ for OpenCL". C++ for OpenCL përfaqëson një kompilator të bazuar në Clang/LLVM dhe bërthamat në C++ dhe OpenCL C në përfaqësimin e SPIR-V ose kodin makinerik të nivelit të ulët. Përmes translitimit në SPIR-V është organizuar gjithashtu ndërtimi i aplikacioneve C++ që përdorin bibliotekën e shablloneve SYCL, e cila lehtëson krijimin e aplikacioneve paralel.
- Për translitimin e OpenCL përmes API Vulkan, është propozuar kompilator , i cili transformon bërthamat OpenCL në përfaqësimin Vulkan SPIR-V, dhe një shtresë për të siguruar funksionimin e API OpenCL mbi Vulkan.
Burimi: opennet.ru
