Khronos-koncernerne, der står for udviklingen af specifikationerne for OpenGL, Vulkan og OpenCL, om offentliggørelsen af de endelige specifikationer , der definerer API'et og udvidelser af C-sprog til at organisere tvær-platforms parallelle beregninger ved hjælp af flerkerne CPU'er, GPU'er, FPGA'er, DSP'er og andre specialiserede chips, fra dem, der anvendes i supercomputere og cloud-servere, til chips, man kan finde i mobile enheder og indlejrede systemer. OpenCL-standarden er helt åben og kræver ikke licensbetalinger.
Samtidig åben OpenCL SDK med værktøjer, eksempler, dokumentation, headerfiler, C++-bindings og C-biblioteker til udvikling af programmer, der er kompatible med OpenCL 3.0. Derudover den indledende implementering af OpenCL 3.0 baseret på Clang-kompilatoren, som er under revision af patches for integration i den primære samling af LLVM. I arbejdet med standarden deltager virksomheder som IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments og Toshiba.
De mest bemærkelsesværdige :
- API'en for OpenCL 3.0 dækker nu alle versioner af OpenCL (1.2, 2.x) uden at give separate specifikationer for hver version. OpenCL 3.0 muliggør udvidelse af kernefunktionaliteten gennem integration af yderligere specifikationer, der vil blive lagdelt i form af muligheder, uden at det blokerer den monolitiske karakter af OpenCL 1.2/2.x.
- Kun funktionaliteten, der svarer til OpenCL 1.2, er blevet erklæret obligatorisk, mens alle muligheder, der foreslås i OpenCL 2.x specifikationerne, betragtes som fakultative. Denne tilgang vil forenkle oprettelsen af specialiserede implementationer, der er kompatible med OpenCL 3.0, og udvide spektret af enheder, hvor OpenCL 3.0 kan anvendes. For eksempel kan producenter implementere support for OpenCL 3.0 uden at implementere separate funktioner fra OpenCL 2.x. For at få adgang til de fakultative sprogfunktioner er der i OpenCL 3.0 tilføjet et system for kontrolanmodninger, som muliggør vurdering af understøttelsen af enkelte API-elementer samt særlige makroer.
- Standardiseringen med tidligere udgivne specifikationer forenkler oversættelsen af applikationer til OpenCL 3.0. Applikationer lavet med OpenCL 1.2 vil kunne køre på enheder, der understøtter OpenCL 3.0 uden ændringer. Applikationer skrevet i OpenCL 2.x kræver heller ikke kodeændringer, men hvis OpenCL 3.0-miljøet tilbyder den nødvendige funktionalitet (for at sikre fremtidig bærbarhed anbefales det, at OpenCL 2.x-applikationer tilføjer kontrolanmodninger for at vurdere understøttelsen af de anvendte OpenCL 2.x-funktioner). Drivere med OpenCL-implementeringer vil let kunne opdatere deres produkter til OpenCL 3.0 ved blot at tilføje håndtering af forespørgsler om specifikke API-kald og gradvist udvide funktionaliteten over tid.
- OpenCL 3.0-specifikationen er tilpasset miljøet, udvidelserne og specifikationerne for det universelle intermediate representation SPIR-V, som også anvendes i Vulkan API’en. Understøttelse af SPIR-V 1.3-specifikationen er integreret i OpenCL 3.0 som en valgfri funktion. Gennem brug af det intermediate representation til beregningskerner er der tilføjet understøttelse af operationer med undergrupper.
- Understøttelse er tilføjet for udvidelsen til udførelse af asynkrone DMA-operationer (Asynchronous DMA), som understøttes i DSP-lignende chips med direkte adgang til hukommelse. Asynchronous DMA muliggør brugen af DMA-transaktioner til dataoverførsel mellem global og lokal hukommelse i asynkrone tilstande, parallelt med de udførte beregninger eller andre dataoverførselsoperationer.
- Specifikationen af udvidelser til parallel programmering for C-sproget er blevet opdateret til , mens udviklingen af sprogudvidelser for OpenCL i C++ er stoppet til fordel for projektet "C++ for OpenCL". C++ for OpenCL er en compiler, der er baseret på Clang/LLVM og kerner til C++ og OpenCL C til det intermediate representation SPIR-V eller lavniveau maskinkode. Gennem omdannelsen til SPIR-V muliggøres også kompileringen af C++-applikationer, der bruger SYCL-skabelonbiblioteket, hvilket forenkler oprettelsen af parallelle applikationer.
- Til omdannelse af OpenCL gennem Vulkan API’en foreslås compiler , som konverterer OpenCL-kerner til Vulkan SPIR-V-repræsentationen, og et lag , der muliggør brugen af OpenCL API oven på Vulkan.
Kilde: opennet.ru
