Het Khronos-concern, verantwoordelijk voor de ontwikkeling van de specificaties van de OpenGL-, Vulkan- en OpenCL-familie, Over de afronding van de ontwikkeling van de OpenCL 3.0-specificaties, die de API en uitbreidingen van de C-taal definiƫren voor het organiseren van cross-platform parallelle berekeningen met behulp van multi-core CPU's, GPU's, FPGA's, DSP's en andere gespecialiseerde chips, van die gebruikt in supercomputers en cloudservers tot chips die we tegenkomen in mobiele apparaten en embedded technologie. De OpenCL-standaard is volledig open en vereist geen licentievergoedingen. Bedrijven zoals IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments en Toshiba hebben bijgedragen aan de ontwikkeling van de standaard.
In de huidige fase is de specificatie geclassificeerd als voorlopig (provisional), wat de mogelijkheid impliceert om aanpassingen te maken op basis van feedback, verstuurd via . Nadat opmerkingen zijn verwerkt, zal de specificatie de status van definitief krijgen en zal een eindtestset worden gepubliceerd voor het controleren van de compatibiliteit van bestaande implementaties.
De meest opvallende :
- De OpenCL 3.0 API dekt nu alle versies van OpenCL (1.2, 2.x), zonder aparte specificaties te bieden voor elke versie. OpenCL 3.0 biedt de mogelijkheid om de kernfunctionaliteit uit te breiden door extra specificaties te integreren die als opties worden toegevoegd, zonder de monolithische aard van OpenCL 1.2/2.x te blokkeren.
- Alleen de functionaliteit die overeenkomt met OpenCL 1.2 is verplicht verklaard, terwijl alle mogelijkheden die in de specificaties van OpenCL 2.x worden aangeboden, als optioneel zijn geclassificeerd. Deze benadering zal het creƫren van gespecialiseerde implementaties die compatibel zijn met OpenCL 3.0 vereenvoudigen en het scala aan apparaten dat OpenCL 3.0 kan gebruiken, uitbreiden. Bijvoorbeeld, fabrikanten kunnen OpenCL 3.0 ondersteunen zonder specifieke mogelijkheden van OpenCL 2.x te implementeren. Voor toegang tot de optionele mogelijkheden van de taal is in OpenCL 3.0 een systeem voor controleaanvragen toegevoegd, waarmee de ondersteuning van specifieke API-elementen kan worden beoordeeld, evenals speciale macro's.
- De uniformiteit met eerder uitgebrachte specificaties vereenvoudigt de vertaling van toepassingen naar OpenCL 3.0. Toepassingen van OpenCL 1.2 kunnen zonder wijzigingen draaien op apparaten die OpenCL 3.0 ondersteunen. Toepassingen van OpenCL 2.x vereisen ook geen aanpassing van de code, maar als de OpenCL 3.0-omgeving de benodigde functionaliteit biedt (om de draagbaarheid van toekomstige OpenCL 2.x-toepassingen te waarborgen, wordt aanbevolen om controles toe te voegen voor de ondersteuning van de gebruikte mogelijkheden van OpenCL 2.x). Stuurprogramma-ontwikkelaars met implementaties van OpenCL kunnen eenvoudig hun producten bijwerken naar OpenCL 3.0 door alleen de behandeling van verzoeken om bepaalde API-aanroepen toe te voegen, en in de loop van de tijd geleidelijk functionaliteit uit te breiden.
- De specificatie OpenCL 3.0 is afgestemd op de omgeving, uitbreidingen en specificaties van de universele tussenliggende representatie SPIR-V, die ook wordt toegepast in de API Vulkan. Ondersteuning voor specificatie SPIR-V 1.3 is opgenomen in de hoofdsamenstelling van OpenCL 3.0 als optionele functie. Door gebruik te maken van de tussenliggende representatie voor rekeneenheden is ondersteuning voor operaties met subgroepen toegevoegd.
- Ondersteuning is toegevoegd voor een uitbreiding voor het uitvoeren van asynchrone DMA-operaties (Asynchronous DMA), ondersteund in DSP-achtige chipsets met directe toegang tot geheugen. Asynchronous DMA maakt het mogelijk om DMA-transacties te gebruiken voor het overdragen van gegevens tussen globale en lokale geheugen in asynchrone modus, parallel aan de uitgevoerde berekeningen of andere gegevensoverdrachtoperaties.
- De specificatie van uitbreidingen voor parallel programmeren in de C-taal is geüpdatet naar , en de ontwikkeling van taaluitleggen OpenCL voor C++ is gestopt ten gunste van het project 'C++ for OpenCL'. C++ for OpenCL is een compiler gebaseerd op Clang/LLVM en kernen naar C++ en OpenCL C in de tussenliggende representatie SPIR-V of laag-niveau machinecode. Via de vertaling naar SPIR-V is ook de bouw van C++-toepassingen mogelijk gemaakt die gebruikmaken van de SYCL-sjablonenbibliotheek, die het creëren van parallelle toepassingen vereenvoudigt.
- Voor de vertaling van OpenCL via de Vulkan API zijn er een compiler aangeboden , die OpenCL-kernen omzet naar de Vulkan SPIR-V-representatie, en een laag om API OpenCL boven Vulkan te laten functioneren.
Bron: opennet.ru
