Koncerni Khronos, i cili është përgjegjës për zhvillimin e specifikimeve të familjes OpenGL, Vulkan dhe OpenCL, për publikimin e specifikimeve përfundimtare , të cilat përcaktojnë API-në dhe zgjerimet e gjuhës C për organizimin e llogaritjeve paralelë përmes platformave të ndryshme duke përdorur CPU me shumë bërthama, GPU, FPGA, DSP dhe çipa të tjerë të specializuar, që shkojnë nga ato që përdoren në superkompjuterë dhe serverë të cloud, deri te çipat që mund të gjenden në pajisje mobile dhe teknologjinë e integruar. Standarti OpenCL është plotësisht i hapur dhe nuk kërkon tarifat e licencës.
Në të njëjtën kohë SDK i hapur OpenCL me mjete, shembuj, dokumentacion, skedarë titulli, mbështetje për C++ dhe biblioteka C për zhvillimin e aplikacioneve të pajtueshme me OpenCL 3.0. Gjithashtu implementimi fillestar i OpenCL 3.0 mbiCompiler Clang, që është në fazën e shqyrtimit të patchëve për t'u përfshirë në bazën e LLVM. Në punën për standardin morën pjesë kompani të tilla si IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments dhe Toshiba.
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
