OpenCL 3.0 definitieve specificaties gepubliceerd

Het Khronos-concern, verantwoordelijk voor de ontwikkeling van de OpenGL-, Vulkan- en OpenCL-familiespecificaties, объявил bij de publicatie van definitieve specificaties OpenCL 3.0, het definiëren van API's en uitbreidingen van de C-taal voor het organiseren van platformonafhankelijk parallel computergebruik met behulp van multi-core CPU's, GPU's, FPGA's, DSP's en andere gespecialiseerde chips, van chips die worden gebruikt in supercomputers en cloudservers tot chips die te vinden zijn in mobiele apparaten en ingebouwde technologie. De OpenCL-standaard is volledig open en vereist geen licentiekosten.

Tegelijkertijd gepubliceerde open OpenCL SDK met tools, voorbeelden, documentatie, headerbestanden, C++-bindingen en C-bibliotheken voor het ontwikkelen van applicaties die compatibel zijn met OpenCL 3.0. Ook gepresenteerd initiële implementatie van OpenCL 3.0 op basis van de Clang-compiler, die zich in de fase bevindt van het beoordelen van patches voor opname in de hoofdstructuur van LLVM. Bedrijven als IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments en Toshiba namen deel aan het werk aan de standaard.

OpenCL 3.0 definitieve specificaties gepubliceerd

Meest opvallende kenmerken OpenCL 3.0:

  • De OpenCL 3.0 API omvat nu alle versies van OpenCL (1.2, 2.x), zonder voor elke versie afzonderlijke specificaties te geven. OpenCL 3.0 biedt de mogelijkheid om de kernfunctionaliteit uit te breiden door de integratie van aanvullende specificaties die in de vorm van opties worden gelaagd, zonder het monolithische karakter van OpenCL 1.2/2.X te blokkeren.
  • Alleen functionaliteit die voldoet aan OpenCL 1.2 wordt verplicht verklaard, en alle functies die worden voorgesteld in de OpenCL 2.x-specificaties worden geclassificeerd als optioneel. Deze aanpak zal het gemakkelijker maken om aangepaste implementaties te creëren die compatibel zijn met OpenCL 3.0, en zal het bereik van apparaten uitbreiden waarop OpenCL 3.0 kan worden gebruikt. Fabrikanten kunnen bijvoorbeeld OpenCL 3.0-ondersteuning implementeren zonder specifieke OpenCL 2.x-functies te implementeren. Om toegang te krijgen tot optionele taalfuncties heeft OpenCL 3.0 een systeem van testquery's toegevoegd waarmee u de ondersteuning van individuele API-elementen kunt evalueren, evenals speciale macro's.
  • Unificatie met eerder vrijgegeven specificaties maakt het eenvoudiger om applicaties naar OpenCL 3.0 te migreren. OpenCL 1.2-applicaties kunnen zonder aanpassingen worden uitgevoerd op apparaten die OpenCL 3.0 ondersteunen. OpenCL 2.x-applicaties vereisen ook geen codewijzigingen, zolang de OpenCL 3.0-omgeving de vereiste functionaliteit biedt (om toekomstige portabiliteit te garanderen, wordt OpenCL 2.x-applicaties aanbevolen om testquery's toe te voegen om de ondersteuning voor de OpenCL 2.x-functies te evalueren gebruikt worden). Driver-ontwikkelaars met OpenCL-implementaties kunnen hun producten eenvoudig upgraden naar OpenCL 3.0, waarbij alleen queryverwerking voor bepaalde API-aanroepen wordt toegevoegd, en de functionaliteit in de loop van de tijd geleidelijk wordt uitgebreid.
  • De OpenCL 3.0-specificatie is afgestemd op de omgeving, uitbreidingen en specificaties van de generieke tussenweergave van SPIR-V, die ook wordt gebruikt door de Vulkan API. Ondersteuning voor de SPIR-V 1.3-specificatie is als optionele functie opgenomen in de kern van OpenCL 3.0. Door het gebruik van een tussenrepresentatie SPIR-V ondersteuning voor bewerkingen met subgroepen is toegevoegd voor rekenkernen.
    OpenCL 3.0 definitieve specificaties gepubliceerd

  • Ondersteuning toegevoegd voor een uitbreiding voor het uitvoeren van asynchrone DMA-bewerkingen (Asynchronous DMA), ondersteund in DSP-achtige chips met directe geheugentoegang. Asynchrone DMA maakt het mogelijk om DMA-transacties te gebruiken om gegevens asynchroon over te dragen tussen het globale en lokale geheugen, parallel met berekeningen of andere gegevensoverdrachtsbewerkingen.
  • De C Parallel Programming Extensions-specificatie is bijgewerkt naar versie 3.0, en de ontwikkeling van OpenCL-taalextensies voor C++ werd stopgezet ten gunste van het project “C++ for OpenCL”. C++ voor OpenCL is een compiler gebaseerd op Clang/LLVM en uitzending C++- en OpenCL C-kernels in SPIR-V tussenrepresentatie of machinecode op laag niveau. Via broadcasting organiseert SPIR-V ook de assemblage van C++-applicaties met behulp van de SYCL-sjabloonbibliotheek, wat het maken van parallelle applicaties vereenvoudigt.

    OpenCL 3.0 definitieve specificaties gepubliceerd

  • Er is een compiler voorgesteld voor het uitzenden van OpenCL via de Vulkan API clspv, die OpenCL-kernels converteert naar een Vulkan SPIR-V-representatie, en een laag clvk om de OpenCL API bovenop Vulkan te laten werken.

    OpenCL 3.0 definitieve specificaties gepubliceerd

Bron: opennet.ru

Voeg een reactie