Khronos gibt finale Version der OpenCL-3.0-Spezifikation frei

Entwickler finden die kompletten Spezifikationen aller OpenCL-Versionen nun in einem zentralen Dokument und können ein erstes Release des OpenCL-SDK nutzen.

Lesezeit: 2 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 4 Beiträge

(Bild: tomertu/Shutterstock.com)

Von
  • Matthias Parbel

Nach Vorstellung einer ersten vorläufigen Version im April 2020 hat die Khronos Group nun die finale Spezifikation der Open Computing Language 3.0 (OpenCL) vorgelegt. Der offene Standard für den Zugriff auf parallele Recheneinheiten von GPUs, DSPs, aber auch CPUs soll künftig mehr Flexibilität für die Anpassungen an unterschiedliche Hardwareplattformen bieten. Dazu sind nun sämtliche Funktionen, die nach OpenCL 1.2 implementiert wurden als optional eingestuft und lassen sich über die API abfragen – wobei Makros anzeigen, ob gegebenenfalls OpenCL-C-Sprachfunktionen vorhanden sind.

Entwickler dürfen sich mit OpenCL 3.0 auf mehr Übersicht in der Referenz freuen: die Spezifikation ist nun versionsübergreifend in einem zentralen Dokument zusammengefasst, anstatt für jede OpenCL-Version separate Dokumente vorzuhalten. Darüber hinaus sind noch zwei neue Erweiterungen fest in der Spezifikation verankert. Ein universell eindeutiger Identifikator (UUID), der sich zur prozess- oder API-übergreifenden Identifizierung von OpenCL-Treibern und Geräten nutzen lässt, steht künftig über eine einfache Abfrage zur Verfügung.

Die zweite Neuerung betrifft den Direct Memory Access (DMA) – insbesondere im Hinblick auf bessere Unterstützung für Embedded-Prozessoren. Eine asynchrone DMA-Erweiterung erlaubt den bevorzugten Einsatz geordneter DMA-Transaktionen wie sie für eine detailliertere Kontrolle über Pufferzuweisung erforderlich sind, beispielsweise bei Geräten mit Scratchpad Memory (SPM).

Während an der vollständigen Unterstützung von OpenCL 3.0 in Clang und LLVM noch gearbeitet wird, hat Khronos den zur vorläufigen Version angekündigten Abschied von der OpenCL-C++-Kernelsprache vollzogen. Der Wechsel auf das von der Community vorangetriebene und von Clang unterstützte Open-Source-Projekt C++ for OpenCL soll vor allem auch Entwicklern zugutekommen, die Funktionen von C++17 nutzen möchten. Die Erweiterung cl_ext_cxx_for_opencl ermöglicht Builds von mit C++ for OpenCL geschriebenem Code. Dank vollständiger Kompatibilität von OpenCL-C-Code mit C++ for OpenCL steht Entwicklern für den Übergang auf C++17 ein konsistenter Front-End-Compiler parat – allerdings sind noch nicht alle Funktionen von C++17 verfügbar.

C++ for OpenCL bringt OpenCL und C++17 zusammen.

(Bild: Khronos Group)

Die Migration von Anwendungen auf OpenCL 3.0 ist angesichts der finalen Spezifikation ab sofort möglich. Auf Version 1.2 basierende Anwendungen sollen sich unverändert auch mit OpenCL 3.0 nutzen lassen, da der Funktionsumfang vollständig abgedeckt ist. Bei Anwendungen auf Basis der 2.x-Serie der Spezifikation, gilt es zu prüfen, ob der OpenCL-3.0-Treiber alle darin verwendeten Funktionen unterstützt. Ist dies nicht der Fall, werden Anpassungen des Codes erforderlich.

Das von Khronos zusammen mit der Spezifikation veröffentlichte OpenCL-SDK soll Entwicklern den Einstieg in die OpenCL-Programmierung erleichtern. Das SDK liegt, wie Khronos betont, allerdings noch in einer frühen Version vor, die schrittweise aktualisiert und erweitert werden soll. Samt OpenCL-Guide und einigen Beispielanwendungen findet sich das SDK als Open Source im GitHub-Repository der Khronos Group.

Einen vollständigen Überblick zu OpenCL 3.0 einschließlich eines Ausblicks auf die Weiterentwicklung der Spezifikation bietet der Blogbeitrag von Khronos anlässlich der Freigabe.

(map)