Menü
Developer

Khronos aktualisiert Spezifikationen für OpenCL 2.1 und SPIR-V 1.0

Neben den aktuellen Spezifikationen für heterogenes Parallel Computing stellt das Industriekonsortium einige Open-Source-Werkzeuge vor, die den Einstieg erleichtern sollen.

Von
vorlesen Drucken Kommentare lesen
Spezifikationen für OpenCL 2.1 und SPIR-V 1.0 veröffentlicht

Auf der derzeit tagenden Supercomputing Conferenz in Austin, Texas stellte das Industriekonsortium Khronos Group die aktualisierte Spezifikationen für heterogenes Parallel-Computing OpenCL 2.1 und SPIR-V 1.0 vor. Die Open Computing Language 2.1 ist eine Schnittstelle für heterogene Parallelrechner, die unterschiedliche Recheneinheiten wie Prozessorkerne und die Shader von Grafikkarten nutzt.

Mit Version 2.1 der OpenCL-API gehören die Untergruppen zur feiner Kontrolle des Hardware-Threadings in den Kern der Spezifikation. Ebenfalls neu ist die Funktion clCloneKernel zum Erstellen einer flachen Kopie von Kernel-Objekten. Timer-Abfragen mit geringer Latenz ermöglichen den Abgleich von Host- und Geräte-Code.

Eine entscheidende Neuerung in OpenCL 2.1 ist die Integration von SPIR-V, dem SPIR-Nachfolger (Standard Portable Intermediate Representation). SPIR-V ist eine Zwischensprache mit nativer Unterstützung für Grafik-Shader und Prozessor-Kernels. Sie ermöglicht die Aufteilung der Compiler-Kette auf die unterschiedlichen Recheneinheiten. Somit können High-Level-Sprachen über SPIR-V die heterogene Architektur ansprechen, ohne sich selbst um die Übersetzung auf die unterschiedlichen Hardware-Komponenten zu kümmern. SPIR-V wird außer in OpenCL auch in der Vulkan-Grafik-API genutzt.

Die jeweils aktuellen Spezifikationen für OpenCL und SPIR-V stehen in der Khronos-Registry zum Herunterladen zur Verfügung. Zusätzlich hat Khronos einige Open-Source-Werkzeuge auf GitHub veröffentlicht, die den Einstieg in die APIs vereinfachen sollen. Dazu gehört ein LLVM Framework mit einem bidirektionalen Konverter zwischen LLVM und SPIR-V, ein OpenCL-C-nach-LLVM-Compiler und ein SPIR-V-Assembler und -Disassembler.

(rme)