Definitieve specificaties van OpenCL 3.0 gepubliceerd

Het Khronos-concern, verantwoordelijk voor de ontwikkeling van de specificaties van de OpenGL-, Vulkan- en OpenCL-familie, heeft aangekondigd heeft de definitieve specificaties gepubliceerd OpenCL 3.0, 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 diegene die in supercomputers en cloudservers worden gebruikt tot chips die men in mobiele apparaten en embedded systemen aantreft. De OpenCL-standaard is volledig open en vereist geen royalty's.

Tegelijkertijd gepubliceerd een open OpenCL SDK met tools, voorbeelden, documentatie, header-bestanden, wrappers voor C++ en C-bibliotheken voor het ontwikkelen van applicaties die compatibel zijn met OpenCL 3.0. Ook aangeboden is er een initiƫle implementatie van OpenCL 3.0 op basis van de Clang-compiler, die momenteel bezig is met het beoordelen van patches voor opname in de hoofdversie van LLVM. Bij de ontwikkeling van de standaard waren bedrijven betrokken zoals IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments en Toshiba.

Definitieve specificaties van OpenCL 3.0 gepubliceerd

De meest opvallende kenmerken OpenCL 3.0:

  • 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 SPIR-V voor rekeneenheden is ondersteuning voor operaties met subgroepen toegevoegd.
    Definitieve specificaties van OpenCL 3.0 gepubliceerd
  • 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 versie 3.0, 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 translateert 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.

    Definitieve specificaties van OpenCL 3.0 gepubliceerd
  • Voor de vertaling van OpenCL via de Vulkan API zijn er een compiler aangeboden clspv, die OpenCL-kernen omzet naar de Vulkan SPIR-V-representatie, en een laag clvk om API OpenCL boven Vulkan te laten functioneren.

    Definitieve specificaties van OpenCL 3.0 gepubliceerd

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster