Menü
Developer

Khronos Group veröffentlicht Spezifikation für portable OpenCL-IR

Um neue Werkzeuge oder Sprachen zur Beschleunigung durch Parallelisierung für heterogene Systeme zu schreiben, ist normalerweise ein detailliertes Wissen der unterschiedlichen Hardwarearchitekturen nötig. SPIR soll das ändern.

Von
vorlesen Drucken Kommentare lesen

Die Khronos Group arbeitet in einer Untergruppe der OpenCL Working Group an einer Möglichkeit, um die OpenCL-C-Programmiersprache auf die Intermediate Representation der LLVM-Compilerinfrastruktur abzubilden. Version 1.2 der Spezifikation für die Standard Portable Intermediate Representation (SPIR) ist nun öffentlich zugänglich, auch einige Softwarekomponenten sind unter der selben Open-Source-Lizenz wie LLVM auf GitHub zu finden. Sie umfassen eine angepasste Version des Compiler-Frontends Clang, die aus in OpenCL C geschriebenen Programmen SPIR generiert, einen Überprüfungseinheit für SPIR-Module und eine Header-Datei mit Werten der Spezifikation.

Zu den Zielen, die die Mitglieder der Gruppe (der unter anderem Mitarbeiter von Intel und AMD angehören) für die Spezifikation festgelegt haben, zählen Kompaktheit, Herstellerunabhängigkeit und ein schnelles Laden durch OpenCL-Implementierungen. Sollte sich SPIR unter den Herstellern durchsetzen, soll es nicht länger notwendig sein, beim Entwickeln neuer Sprachen und Werkzeuge für die Parallelisierung in heterogenen Systemen Backends für alle herstellerspezifischen Hardwarearchitekturen zu erstellen. Die verschiedenen Komponenten seien dann in der Lage, SPIR-Binaries zu verarbeiten und zu beschleunigen.

Von der Freigabe von Code und Spezifikation erhofft sich die Gruppe laut Bekanntmachung Innovationen in den Bereichen Frontend (etwa Programmierabstraktionen und Sprachen), Backend und Tooling. Erste Reaktionen gab es wohl bereits von den Entwicklern von OpenACC (Programmierstandard für parallele Programmierung) und C++ AMP (C++ Accelerated Massive Parallelism), die angaben, SPIR in ihren Arbeiten berücksichtigen zu wollen. (jul)