Khronos neemt OpenGL en OpenCL onder handen


Warning: Undefined array key "bio" in /home/techwatch/domains/test.bits-chips.nl/public_html/wp-content/plugins/wpcodebox2/src/Runner/QueryRunner.php(126) : eval()'d code on line 13

Author:

Reading time: 2 minutes

Standaardisatieorgaan de Khronos Group heeft meer details vrijgegeven over de opvolger van OpenGL, de volgende generatie van OpenCL, en de manier waarop deze twee technologieën meer met elkaar vervlochten moeten raken. Vulkan is de naam van de nieuwe api voor grafische en rekenkundige bewerkingen op gpu’s, die tot nu toe bekend stond als het Next Generation OpenGL Initiative. Deze gebruikt een nieuwe intermediaire taal voor het beschrijven van de shaders en compute kernels, Spir-v genaamd. Die moet weer gedeeld worden met OpenCL, dat op zijn beurt een flinke upgrade krijgt met een nieuwe, C++-gebaseerde taal om reken-kernels te beschrijven.

De Khronos Group begon vorig jaar met de ontwikkeling van de opvolger van OpenGL. OpenGL gaat al meer dan twintig jaar terug, en past niet neer altijd even goed bij moderne gpu’s. Bovendien gooiden AMD, Microsoft en Apple hoge ogen met programmeermodellen die meer prestaties uit de grafische processoren wisten te halen door de overhead van drivers te verminderen.

Vulkan, waar de groep nu de eerste technische previews van heeft vrijgegeven, moet dan ook een nieuwe start maken. De technologie is niet terugwaarts compatibel met OpenGL en maakt ook geen onderscheid meer tussen de normale en embedded variant (ES). Vulkan neemt de nieuwe programmeermodellen als uitgangspunt, de technologie grotendeels gebaseerd op het Mantle-platform van AMD. Waar OpenGL de driver gebruikt om de beschrijving in de shader-taal dynamisch te compileren naar de gpu en daarbij het beheer van geheugen en problemen voor zijn rekening neemt, gebruikt Vulkan een assembly-achtige taal, Spir-V (Standard Portable Intermediate Representation) voor de beschrijving van shaders. Voor de driver is het alleen van belang om deze intermediaire beschrijving om te zetten naar gpu-specifieke code.

Het voordeel is dat de drivers met dit model een stuk simpeler kunnen worden, omdat ze geen hele compiler meer hoeven te bevatten. Bovendien biedt Spir-V de mogelijkheid om de gpu op meer manieren te programmeren; Khronos werkt aan een compiler voor een shader-taal naar de intermediaire beschrijving, maar derde partijen kunnen hun eigen compilers voor alternatieve omgevingen maken. Daarnaast krijgt de programmeur de mogelijkheid om op een lager niveau om te gaan met zaken als geheugenbeheer, waardoor er meer mogelijkheden voor optimalisatie zijn.

Spir-V is afgeleid van de Standard Portable Intermediate Representation in OpenCL. Die is op zijn beurt weer gebaseerd op de LLVM-representatie, maar Spir-V is flink onder handen genomen en uitgebreid met features voor de gpu en parallellisatie.

Deze nieuwe intermediaire representatie zal tevens de basis vormen voor de nieuwe versie 2.1 van OpenCL, waarvan de Khronos Group een voorlopige specificatie heeft vrijgegeven. Deze versie valt op door de introductie van een een nieuwe taal voor het programmeren van reken-kernels. Tot nog toe moesten de rekenkernels geschreven worden in een subset van C, maar in de nieuwe versie komt een subset van C++14 beschikbaar voor dit doel. De nieuwe taal ondersteunt onder meer lambda-functies, oop, templates en operator overloading.