Khronosi kontsern, mis vastutab OpenGL, Vulkan ja OpenCL spetsifikatsioonide arendamise eest, avaldas lõplikud spetsifikatsioonid , mis määratlevad API ja C keele laiendused, et korraldada platvormidevahelisi paralleelseid arvutusi, kasutades mitme südamikuga CPU-sid, GPU-sid, FPGA-sid, DSP-sid ja muid spetsialiseeritud kiipe, alates neist, mida kasutatakse superarvutites ja pilveserverites, kuni kiipide, mida leidub mobiilseadmetes ja sisseehitatud tehnoloogias. OpenCLi standard on täielikult avatud ja ei nõua litsentsitasusid.
Samas avatud OpenCL SDK tööriistade, näidete, dokumentatsiooni, pealkirjafailide, C++ ja C-köidikute jaoks, et arendada OpenCL 3.0-ga ühilduvaid rakendusi. Samuti OpenCL 3.0 algne rakendus, mis põhineb Clang'i kompilaatoril, mis on hetkel ülevaates, et lisada patšeid LLVM-i põhikoosseisu. Standardi arendamisel osalesid sellised ettevõtted nagu IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments ja Toshiba.
Kõige märgatavamad :
- OpenCL 3.0 API katab nüüd kõik OpenCL versioonid (1.2, 2.x) ilma iga versiooniga eraldi spetsifikatsioonide pakkumiseta. OpenCL 3.0 võimaldab põhifunktsionaalsuse laiendamist täiendavate spetsifikatsioonide integreerimise kaudu, mis lisanduvad valikutena, mitte takistades OpenCL 1.2/2.X monoliitsust.
- Kohustuslikuks on nimelt määratud ainult funktsionaalsus, mis vastab OpenCL 1.2-le, samas kui kõik OpenCL 2.x spetsifikatsioonides pakutavad võimalused on klassifitseeritud valikulisteks. Selline lähenemine lihtsustab spetsialiseeritud rakenduste loomist, mis on ühilduvad OpenCL 3.0-ga, ja laiendab seadetega valikut, kus OpenCL 3.0-d saab kasutada. Näiteks võivad tootjad rakendada OpenCL 3.0 toetust, ilma et nad peaksid rakendama eraldi OpenCL 2.x võimalusi. OpenCL 3.0-s on lisatud kontrollipäringute süsteem, mis võimaldab hinnata individuaalsete API elementide toetust ning samuti spetsiaalsed makrod.
- A varemine varasemate spetsifikatsioonide lihtsustab rakenduste tõlkimist OpenCL 3.0-le. OpenCL 1.2 rakendused saavad töötada seadmetes, mis toetavad OpenCL 3.0, ilma muudatusteta. OpenCL 2.x rakendused ei vaja samuti koodi muutmist, kuid kui OpenCL 3.0 keskkond pakub vajalikku funktsionaalsust (et tagada tulevaste OpenCL 2.x rakenduste ühilduvus, on soovitatav lisada kontrollpäringud kasutatavate OpenCL 2.x võimaluste toetuse hindamiseks). Draiverite arendajad, kellel on OpenCL teostused, saavad oma tooteid hõlpsasti ajakohastada OpenCL 3.0-le, lisades vaid API kutsungite olemasolu kontrollimise ning ajaga järk-järgult suurendades funktsionaalsust.
- OpenCL 3.0 spetsifikatsioon on kooskõlas SPIR-V universaalse vaheformatiga, mis on samuti rakendatav Vulkan API-s. SPIR-V 1.3 spetsifikatsiooni toetamine on lisatud OpenCL 3.0 põhikoostisele valikulisena. Vaheformaadi kasutamise kaudu on lisatud toetamine alagruppidega teostamiseks.
- On lisatud laienduse tugi asünkroonsete DMA-operatsioonide (Asynchronous DMA) teostamiseks, mida toetatakse DSP-sarnastes kiipides, millel on otsepääs mälu juurde. Asynchronous DMA võimaldab kasutada DMA tehinguid andmete edastamiseks globaalsete ja kohalike mälude vahel asünkroonses režiimis, paralleelselt arvutuste või muude andmeedastusoperatsioonidega.
- C keele paralleelse programmeerimise laienduse spetsifikatsioon on uuendatud , samas kui OpenCL keelelaiendite arendamine C++ jaoks on lõpetatud projekti "C++ for OpenCL" kasuks. C++ for OpenCL on Clang/LLVM baasil loodud kompilaator ja tuumade tõlkimine C++ ja OpenCL C vaheformaat SPIR-V või madala taseme masinkoodiks. SPIR-V-sse tõlkimise kaudu on ka suuremate C++ rakenduste, mis kasutavad SYCL malliraamatukogu, koostamine üles ehitatud, muutes paralleelsete rakenduste loomise lihtsamaks.
- OpenCL tõlkimiseks Vulkan API kaudu on pakutud kompilaatorit , mis muundab OpenCL tuumad Vulkan SPIR-V esitusse, ja kihi , et tagada OpenCL API toimimine Vulkan'i kohal.
Allikas: opennet.ru
