Khronos veröffentlicht vorläufige Spezifikation für OpenCL 2.2

Die vorläufige Spezifikation stattet die Open Computing Language unter anderem mit einer OpenCL C++ Kernel Language zur Parallelprogrammierung aus. Aber auch neue Versionen von SYCL und SPIR-V stehen bereit.

In Pocket speichern vorlesen Druckansicht
Khronos veröffentlicht vorläufige Spezifikation für OpenCL 2.2
Lesezeit: 2 Min.
Von
  • Julia Schmidt

Die Khronos Group hat vorläufige Spezifikationen für OpenCL 2.2, SYCL 2.2 und SPIR-V 1.1 herausgegeben. Als wichtigste Änderung nennt die Bekanntmachung die Integration der OpenCL C++ Kernel Language in OpenCL, was unter anderem beim Schreiben parallel arbeitender Programme helfen soll. Die im Rahmen der Open Computing Language als statische Untermenge des C++14-Standards definierte Kernel-Sprache enthält Klassen, Templates, Lambda-Ausdrücke und andere Konstrukte. OpenCL-Funktionen sollen diese nach dem Update nutzen können, um beispielsweise die Sicherheit zu erhöhen und undefiniertes Verhalten zu reduzieren. Darüber hinaus ist OpenCL 2.2 mit dem neuen, geräteseitigen Typ Pipe Storage ausgestattet, mit dem sich etwa die Kommunikation zwischen Kernels effizienter gestalten lassen soll.

Bei SYCL handelt es sich um OpenCLs Projekt für C++ Single-Source Heterogeneous Programming. Version 2.2 soll ermöglichen, OpenCL 2.2 zu nutzen, dabei aber den für Host und Device benötigten Code in einer Datei unterzubringen. Neuerungen in der Spezifikation der Standard Portable Intermediate Representation SPIR-V sorgen dafür, dass auch sie mit den Kernel-Features von OpenCL C++ umgehen kann und zudem mit Barriers, dem Ausführen von Untergruppen und Program Scope Pipes zurecht kommt. Außerdem sind die zuvor für Vulkan-Shader verfügbaren Spezialisierungskonstanten nun auch in OpenCL-Kernel-Programmen in SPIR-V nutzbar. Mit ihnen lassen sich Einstellungen für die Compile-Zeit einbetten, die sich zur Laufzeit spezialisieren lassen, wodurch es nicht länger nötig sein soll, mehrere Varianten eines Device-Programms auszuliefern oder sie mehrmals mit unterschiedlichen Compilereinstellungen umzusetzen. (jul)