Koncernen Khronos, som ansvarar för utvecklingen av specifikationerna för familjen OpenGL, Vulkan och OpenCL, har offentliggjort de slutliga specifikationerna , som definierar API och C-erweiterungen för att organisera plattformsoberoende parallellberÀkningar med hjÀlp av flerkÀrniga CPU:er, GPU:er, FPGA:er, DSP:er och andra specialiserade chip, frÄn de som anvÀnds i superdatorer och molnservrar till chip som kan hittas i mobila enheter och inbyggda system. OpenCL-standarden Àr helt öppen och krÀver inga licensavgifter.
Samtidigt öppen OpenCL SDK med verktyg, exempel, dokumentation, header-filer, C++-bindningar och C-bibliotek för utveckling av applikationer som Àr kompatibla med OpenCL 3.0. Dessutom en initial implementation av OpenCL 3.0 baserat pÄ Clang-kompilatorn, som Àr under granskning av patcher för inkludering i den huvudbestÄndsdelen av LLVM. Arbetet med standarden har involverat företag som IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments och Toshiba.
De mest anmÀrkningsvÀrda :
- API:et för OpenCL 3.0 omfattar nu alla versioner av OpenCL (1.2, 2.x), utan att tillhandahÄlla separata specifikationer för varje version. OpenCL 3.0 förutsÀtter möjligheten att utöka grundfunktionaliteten genom integration av ytterligare specifikationer, som kommer att staplas som alternativ, utan att blockera den monolitiska karaktÀren hos OpenCL 1.2/2.x.
- Obligatorisk Ă€r endast funktionaliteten som motsvarar OpenCL 1.2, medan alla funktioner som erbjuds i specifikationerna för OpenCL 2.x betraktas som valfria. Denna metod kommer att förenkla skapandet av specialiserade implementationer som Ă€r kompatibla med OpenCL 3.0 och utvidga spektrumet av enheter dĂ€r OpenCL 3.0 kan anvĂ€ndas. Till exempel kan tillverkare implementera stöd för OpenCL 3.0 utan att ŃДалisera separata funktioner i OpenCL 2.x. För att fĂ„ tillgĂ„ng till valfria funktioner i sprĂ„ket har OpenCL 3.0 lagt till ett system för kontrollfrĂ„gor, som möjliggör utvĂ€rdering av stödet för vissa API-element, liksom sĂ€rskilda makron.
- Enhetliga specifikationer förenklar översÀttningen av applikationer till OpenCL 3.0. Applikationer byggda med OpenCL 1.2 kan köras pÄ enheter som stöder OpenCL 3.0 utan nÄgra Àndringar. Applikationer med OpenCL 2.x krÀver inte heller kodÀndringar, men om OpenCL 3.0-miljön erbjuder nödvÀndig funktionalitet (för att sÀkerstÀlla framtida portabilitet rekommenderas det att applikationer med OpenCL 2.x lÀgger till verifieringsanrop för att utvÀrdera stödet för de anvÀndbara funktionerna i OpenCL 2.x). Drivutvecklare med OpenCL-implementationer kan enkelt uppdatera sina produkter till OpenCL 3.0 genom att endast lÀgga till hantering av förfrÄgningar angÄende olika API-anrop, och gradvis utöka funktionaliteten över tid.
- OpenCL 3.0-specifikationen Àr anpassad till miljön, tillÀgg och specifikationer för universellt mellanrepresentation, SPIR-V, som Àven anvÀnds i Vulkan API. Stöd för SPIR-V 1.3 har införlivats i OpenCL 3.0 som en valfri funktion. Genom att anvÀnda mellanrepresentationen för berÀkningskÀrnor har stöd för operationer med undergrupper lagts till.
- Stöd för ett tillÀgg för att utföra asynkrona DMA-operationer (Asynchronous DMA), stödda i DSP-liknande chip med direkt minÄtkomst, har lagts till. Asynchronous DMA möjliggör anvÀndning av DMA-transaktioner för dataöverföring mellan globalt och lokalt minne i asynkront lÀge, parallellt med pÄgÄende berÀkningar eller andra dataöverföringsoperationer.
- Specifikationen för tillÀgg till parallellt programmering för C-sprÄket har uppdaterats till , och utvecklingen av sprÄktillÀgg för OpenCL i C++ har avbrutits till förmÄn för projektet "C++ for OpenCL". C++ for OpenCL Àr en kompilator baserad pÄ Clang/LLVM och kÀrnor till C++ och OpenCL C till mellanrepresentationen SPIR-V eller lÄgnivÄmaskinkod. Genom översÀttning till SPIR-V har Àven bygget av C++-applikationer som anvÀnder SYCL:s mallbibliotek möjliggjorts, vilket förenklar skapandet av parallella applikationer.
- För översÀttning av OpenCL via Vulkan API erbjuds en kompilator , som transformerar OpenCL-kÀrnor till Vulkan SPIR-V-representation, och ett lager för att möjliggöra anvÀndning av OpenCL API ovanpÄ Vulkan.
KĂ€lla: opennet.ru
