Khronose kontsern, mis vastutab OpenGL, Vulkan ja OpenCL spetsifikatsioonide arendamise eest, OpenCL 3.0 spetsifikatsioonide arendamise lõpetamine, mis määratleb API ja keele C laiendused, et korraldada platvormidevahelist paralleeltöötlemist mitme tuumaga CPU-d, GPU-sid, FPGA-sid, DSP-sid ja muid spetsialiseeritud kiipe, alates superarvutites ja pilveteenustes kasutatavast tehnikast kuni mobiilsete seadmete ja sisseehitatud tehnikani. OpenCL standard on täielikult avatud ja ei nõua litsentsitasu. Standardi koosloomega on osalenud ettevõtted nagu IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments ja Toshiba.
Praeguses etapis on spetsifikatsioonile antud esialgne (provisional) staatus, mis tähendab, et seda on võimalik täiendada tagasiside alusel, mis on saadetud läbi . Pärast märkuste arvestamist saab spetsifikatsioon lõpliku staatuse ning avaldatakse viimane testikomplekt olemasolevate rakenduste ühilduvuse kontrollimiseks.
Kõige silmapaistvamad :
- API OpenCL 3.0 katab kogu OpenCL versioonide (1.2, 2.x) ulatust, ilma et iga versiooni jaoks eraldi spetsifikatsioone esitataks. OpenCL 3.0 võimaldab põhifunktsionaalsuse laiendamist täiendavate spetsifikatsioonide integreerimise kaudu, mis kihistuvad valikutena, mitte blokeerides OpenCL 1.2/2.X monoliitset iseloomu.
- Kohustuslikuks on kuulutatud ainult funktsionaalsus, mis vastab OpenCL 1.2-le, ning kõik OpenCL 2.x spetsifikatsioonides pakutavad võimalused on klassifitseeritud mitte kohustuslikeks. Selline lähenemine lihtsustab eripäraste teostuste loomist, mis on ühilduvad OpenCL 3.0-ga, ja laiendab seadmete spektrit, kus OpenCL 3.0-d saab kasutada. Näiteks saavad tootjad rakendada OpenCL 3.0 tuge, ilma et peaksid rakendama eraldi OpenCL 2.x funktsioone. Keelt käsitlevate valikuvõimaluste juurde juurdepääsu võimaldamiseks on OpenCL 3.0-sse lisatud kontrollipäringute süsteem, mis võimaldab hinnata üksikute API elementide toetust, samuti spetsiaalseid makrosid.
- Eelmiste spetsifikatsioonide ühtlustamine lihtsustab rakenduste tõlkimist OpenCL 3.0-le. OpenCL 1.2 rakendused saavad töötada OpenCL 3.0 toetavates seadmetes ilma muudatusteta. OpenCL 2.x rakendused ei vaja samuti koodi muutmist, kuid kui OpenCL 3.0 keskkond pakub vajalikku funktsionaalsust (tulevikus OpenCL 2.x rakenduste ülekantavuse tagamiseks on soovitatav lisada kontrollküsitlusi kasutatavate OpenCL 2.x funktsioonide toe hindamiseks). Draiveriarendajad, kellel on OpenCL teostused, saavad oma tooteid hõlpsasti uuendada OpenCL 3.0-le, lisades ainult API-kutsungite toetamise, ja järk-järgult suurendada funktsionaalsust.
- OpenCL 3.0 spetsifikatsioon on kohandatud universaalse vahendusvormi SPIR-V keskkonna, laienduste ja spetsifikatsioonidega, mida kasutatakse ka Vulkan API-s. SPIR-V 1.3 spetsifikatsiooni toimetamine on lisatud OpenCL 3.0 põhikoosseisu valikulise funktsioonina. Vahevormi kasutamise kaudu arvutuskerede jaoks on lisatud algrühmade toimingute tugi.
- Lisatud on toetus asünkroonsete DMA-tehingute täitmiseks (Asynchronous DMA), mida toetavad DSP-tüüpi kiibid, millel on otsene ligipääs mälule. Asynchronous DMA võimaldab kasutada DMA tehinguid andmete edastamiseks globaalsete ja lokaalsete mälude vahel asünkroonses režiimis, samal ajal kui toimub arvutus või muid andmeedastusoperatsioone.
- C keele paralleelse programmeerimise laienduste spetsifikatsioon on uuendatud versioonile , ning OpenCL-i keel laienduste arendamine C++ jaoks on lõpetatud C++ for OpenCL projekti kasuks. C++ for OpenCL on Clang/LLVM põhine kompilaator ja tuumad C++ ja OpenCL C SPIR-V vaheformaatiks või madalamal tasemel masinkoodiks. SPIR-V-sse transformeerimise kaudu on samuti korraldatud C++ rakenduste koostamine, mis kasutavad SYCL malliraamatukogu, mis lihtsustab paralleelsete rakenduste loomist.
- OpenCL-i kompileerimiseks Vulkan API kaudu on pakutud kompilaatorit , mis muundab OpenCL tuumad Vulkan SPIR-V kujule, ja kihti , et tagada OpenCL API toimimine Vulkan'i peal.
Allikas: opennet.ru
