Apple will mit OpenCL Rechenpower von Grafikkarten nutzbar machen

Die Entwicklung von Multi-Core Prozessoren schreitet weiter voran und mit zeitgleich auch die Entwicklung der Grafikprozessoren. Gerade letztere verfügen über vergleichsweise viel Rechenkraft, die bisher aber nur in grafiklastigen Spielen und von wenigen Spezialanwendungen genutzt wird. Während der gestrigen Eröffnung der Apple WWDC (Worldwide Developers Conference) gab Apple einen Ausblick auf die im kommenden Jahr erscheinende Version 10.6 (Snow Leopard) von OS X. Im Rahmen dieses Ausblicks gab man auch die Entwicklung und Integration von OpenCL (Open Computing Language) bekannt.

OpenCL ist ein weiterentwickelter Dialekt der Programmiersprache C und als offener Standard vorgesehen. Programme, bzw. Programmteile, die in OpenCL programmiert sind, werden zur Laufzeit dynamisch auf verfügbare und unterstützte Rechenwerke verteilt. Ob es sich dabei um einen Kern eines Hauptprozessors (CPU) handelt, oder um ein Rechenwerk eines Grafikprozessors (GPU) auf einer Grafikkarte, ist dabei für Programmierer wie Anwender unerheblich und transparent.

Mit einer solchen Abstraktionsschicht schlägt man für Programme, die OpenCL benutzen, gleich mehrere Fliegen mit einer Klappe:

  • Man gewährleistet die grundsätzliche Lauffähigkeit von Anwendungen, ganz gleich wieviele CPU- und GPU-Rechenknechte zur Verfügung stehen. Lediglich die Geschwindigkeit passt sich entsprechend an.
  • Entwickler müssen nur eine Sprache lernen und nicht von Hand z.B. auf eine bestimmte GPU-Architektur (NVidia, ATI) optimieren.
  • Bisher ungenutzte Rechenkraft des Systems kann für zusätzliche Funktionalität / die Beschleunigung bereits vorhandener Funktionen genutzt werden.

Die Möglichkeiten Grafikchips auch für andere Einsatzzwecke zu nutzen, gibt es bereits eine Weile. Mit NVidias CUDA und Stream von AMD/ATI gibt es derzeit zwei konkurrierende Software-Projekte um GPUs zu programmieren. Beide bestehen im Grunde aus einem C-Dialekt als Sprache und einer API, welche fertige Funktionen und Schnittstellen zur Hardware bereitstellen. Beiden gemein ist dabei das Problem, dass es sich um proprietäre Systeme handelt, die nur für die Chips des jeweiligen Herstellers genutzt werden können. Eine architekturübergreifende Lösung fehlte bislang. Diese Lücke soll bald OpenCL schließen, über das es derzeit aber noch keine genaueren Informationen gibt.

Die Nutzung der Rechenkapazitäten von GPUs ist noch ein vergleichsweise junges Thema. In dem Zusammenhang spricht man auch gerne von der GPGPU (General-Purpose-GPU). Entsprechend gibt es derzeit erst recht wenige konkrete Anwendungen, die darauf zurück greifen. Eine davon ist das Distributed Computing Projekt Folding@home der Universität Stanford. Das Projekt zur Erforschung räumlicher Strukturen von Aminosäureketten (Proteinfaltung) verfügt u.a. über eine speziell auf ATI Chips angepasste Client-Software, die die Berechnungen gegenüber normalen Hauptprozessoren um einen zweistelligen Faktor schneller erledigt

Erst kürzlich demonstrierte Adobe in einer eigens angepassten Version der nächsten Photoshop Version CS4 eine rasante Beschleunigung bei optimierten Berechnungen mit großen Bildern, wenn der Grafikprozessor dafür genutzt wird. Dabei konnten Effekte in der gleichen Geschwindigkeit wie bisher, aber bei Bildern mit 60mal mehr Pixeln Inhalt ausgeführt werden.

An der Universität Antwerpen demonstriert die Forschungsgruppe FASTRA die Leistungsfähigkeit eines Rechners mit 4 Grafikkarten mit je 2 GPUs, der Daten von medizinischen und industriellen Computertomopraphien auswertet. Je nach Auswertung kommt das Ein-Rechner-System zu 2/3 an die Rechenpower des bisher genutzten Rechner-Clusters heran oder übertrifft sie gar, nur dass das System mit rund €4000 lediglich einen Bruchteil des Clusters mit seinen 256 Dual-Opteron Rechnern (Anschaffungswert €3.5 Mio.) kostet.

Zwar sind einige der derzeitigen Anwendungsbeispiele recht exotisch, demonstrieren aber das ungeheure Potenzial von Grafik-Coprozessoren. Einen vergleichenden Überblick und tieferen Ein- und Ausblick gibt Prof. Kevin Skadron der Universität Virginia in seiner Arbeit „Accelerating Compute-Intensive Applications with GPUs and FPGAs“ (PDF) , wo er und sein Team die Leistungsfähigkeit von Multi-Core CPUs, GPUs und FPGAs für unterschiedliche mathematische Standard-Aufgabenstellungen untersucht und vergleicht.

Da mathematische Standard-Verfahren die Grundlage so ziemlich aller heutigen Computer-Anwendungen sind, auch wenn diese uns dabei nicht bewusst sind, bleibt abzuwarten, wie die schlummernden und dabei wachsenden Potenziale moderner Hardware zukünftig genutzt werden. Für einzelne Anwendungen derzeit noch bestehende Probleme in den Bereichen Latenz und Bandbreite zwischen CPU und GPU dürften sich bald lösen, wo u.a. AMD und Intel bereits Prozessoren mit integrierter GPU angekündigt haben. Währenddessen liebäugelt Sony damit eine Variante von IBMs Cell-Prozessor in Notebooks zu verbauen, der heute bereits in diversen Number-Crunchern und auch der Playstation 3 seinen Dienst verrichtet.

Update:

Wie ich gerade lese, arbeitet auch Microsoft an einer Vereinheitlichung für die Nutzung von GPGPU-Computing. Sog. Compute Shaders sollen ab DirectX Version 11 Einzug halten und Entwicklern eine einheitliche Schnittstelle für GPUs bieten. Anders als bei Apple, verfolgt man aber darüber hinaus wohl allem Anschein nach nicht den Ansatz, auch den Hauptprozessor mit einzubeziehen. Da beide Technologien noch nicht verfügbar sind, wird man abwarten müssen, welche Lösung technisch die Nase vorn haben wird. Apples OpenCL punktet natürlich mit dem Charme eines offenen Standards, so dass auch mit Open Source Implementierungen z.B. für Linux und womöglich dem BeOS Nachfolger Haiku gerechnet werden kann. Da gerade letzteres geschichtlich gesehen einen Fokus auf den Bereich Multimedia hat, würde es ihm gut zu Gesicht stehen.

Kommentare (5)

  1. Gerade bringt AMD die Pressemittelung bzgl. der neuen FireStream 9250 Grafikkarte heraus. In ihr wird auch erwähnt, dass sich AMD der Khronos Group angeschlossen hat, welche die OpenCL Spezifikationen entwickelt und dass man OpenCL voll unterstützen will. Nun muss noch NVIDIA nachziehen…

  2. Und nun macht es auch die Khronos Group selber offiziell. Der Arbeitsgruppe gehören derzeit folgende Mitglieder an: 3Dlabs, AMD, Apple, ARM, Codeplay, Ericsson, Freescale, Graphic Remedy, IBM, Imagination Technologies, Intel, Nokia, NVIDIA, Motorola, QNX, Qualcomm, Samsung, Seaweed, TI und die Universität Umeå

  3. Gibts eine Seite die aufzeigt, welche Grafikprozessoren OpenCL unterstützen wird?

Kommentare sind geschlossen.