OpenCL 3.0-specificatie geïntroduceerd

Het Khronos-concern, verantwoordelijk voor de ontwikkeling van de OpenGL-, Vulkan- en OpenCL-familiespecificaties, объявил over de voltooiing van de ontwikkeling van OpenCL 3.0-specificaties die API's en uitbreidingen van de C-taal definiëren voor het organiseren van platformoverschrijdend parallel computergebruik met behulp van multi-core CPU's, GPU's, FPGA's, DSP's en andere gespecialiseerde chips, van die welke worden gebruikt in supercomputers en cloudservers tot chips die te vinden zijn in mobiele apparaten en embedded technologie. De OpenCL-standaard is volledig open en vereist geen licentiekosten. Bedrijven als IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments en Toshiba namen deel aan het werk aan de standaard.

In de huidige fase heeft de specificatie een voorlopige status gekregen, wat de mogelijkheid van verfijning impliceert op basis van feedback verzonden via GitHub. Zodra rekening is gehouden met de opmerkingen, zal de specificatie worden afgerond en zal een definitieve testsuite worden gepubliceerd om de compatibiliteit van bestaande implementaties te testen.

OpenCL 3.0-specificatie geïntroduceerd

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-specificatie geïntroduceerd

  • 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-specificatie geïntroduceerd

  • 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-specificatie geïntroduceerd

Bron: opennet.ru

Voeg een reactie