Programmierschnittstelle OpenCL verabschiedet

Das auch für OpenGL zuständige Industriegremium Khronos Group hat die Spezifikation 1.0 der Open Computing Language veröffentlicht, die das Programmieren heterogener Parallelrechner erleichtern soll.

In Pocket speichern vorlesen Druckansicht 116 Kommentare lesen
Lesezeit: 3 Min.

Die Spezifikationsversion 1.0 der Open Computing Language (OpenCL) ist fertig. Das auch für OpenGL zuständige Industriegremium Khronos Group hat die neue Programmierschnittstelle für heterogene Parallelcomputer ratifiziert und veröffentlicht. OpenCL soll die Programmierung von Applikationen und Funktionen ermöglichen, die auf unterschiedlichen, aber OpenCL-kompatiblen Prozessoren laufen. Laut Spezifikation nutzt OpenCL eine Untermenge von ISO-C99 mit Erweiterungen für die Parallelisierung.

Insbesondere soll OpenCL das enorme Performance-Potenzial von Grafikprozessoren (GPUs) außer für 2D- oder 3D-Grafikbeschleunigung auch für andere, allgemeine Applikationen nutzbar machen (General-Purpose, GPU, GPGPU, siehe auch GPGPU.org). Die OpenCL-Spezifikation erwähnt aber ausdrücklich auch andere Prozessoren und Co-Prozessoren, etwa die Cell Broadband Engine oder Digitale Signalprozessoren (DSPs) – sowohl die Cell-Entwickler IBM und Sony als auch DSP-Marktführer Texas Instruments waren an der OpenCL-Spezifikation beteiligt.

Zu OpenCL haben aber vor allem zahlreiche Entwickler von Apple, Intel, AMD und Nvidia beigetragen. Apple hat OpenCL bereits als eine der Neuerungen der kommenden Mac-OS-Version Snow Leopard angekündigt, die GPU-Hersteller AMD und Nvidia wollen OpenCL ebenfalls unterstützen. Laut Nvidia laufen OpenCL-Applikationen nahtlos auf Grafikkarten, die über einen CUDA-tauglichen Treiber ins System eingebunden sind. Das sind – bis auf Mobil-Grafikchips mit proprietären Treibern der Notebook-Hersteller – praktisch alle (DirectX-10-tauglichen) Nvidia-GPUs der letzten zwei Jahre.

Auch AMD will OpenCL unterstützen, und zwar mit einer kommenden Version des freien ATI Stream SDK. Dieses ist zurzeit in der noch nicht OpenCL-tauglichen Beta-Version 1.2.1 jeweils für 32- und 64-Bit-Versionen von Linux (Red Hat 5.1, SLES 10 SP1) und Windows (XP und Vista) erhältlich, außerdem gibt es auf Anfrage eine Alpha-Version der Mathematik-Funktionsbibliotheken (AMD Core Math Library, ACML); AMD kooperiert auch mit den Compiler-Spezialisten der Portland Group (PGI). Die AMD-Pressemeldung zur OpenCL-Unterstützung im ATI Stream SDK ist etwas unklar formuliert, "im ersten Quartal" 2009 soll jedenfalls eine Version 1.4 des SDK kommen, aber erst "im ersten Halbjahr" 2009 eine OpenCL-taugliche Version.

Intel hat sich zu OpenCL bisher nur vage geäußert und plant eine eigene Programmiersprache namens C/C++ for Throughput Computing, kurz Ct. Damit soll sich das Potenzial des kommenden Larrabee nutzen lassen und später (ab 2010) auch das der mit dem 32-nm-Chip Sandy Bridge kommenden Advanced Vector Extensions (AVX, PDF-Datei).

Wie weit die von Microsoft für Direct3D 11 geplanten Compute Shaders mit OpenCL konkurrieren werden, lässt sich nur schwer abschätzen. Möglicherweise stellt sich bei den Microsoft-Betriebssystemen ein ähnliches Verhältnis wie heute zwischen Direct3D und OpenGL ein: Windows-Software setzt größtenteils auf Direct3D, doch alle GPU-Treiber bringen auch OpenGL-Unterstützung mit.

OpenCL zielt auch auf Supercomputer; der aktuelle Spitzenreiter auf der Top500-Liste, der IBM Roadrunner, ist ja bereits ein heterogenes HPC-System aus x64-Prozessoren von AMD und PowerXCell-8i-Chips. (ciw)