Neuer Standard für Grafikchip-Programmierung

OpenCL ist da - auch für Linux

OpenCL ist da - auch für Linux

Daniel Kottmair
29.09.2009 Mit Spannung erwartet, hat Nvidia nun die ersten OpenCL-fähigen Treiber vorgestellt. Und nicht nur das: Linux-User bekommen dieses mal direkt bei Veröffentlichung dasselbe Paket wie Windows-User, was dem plattformunabhängigen Konzept von OpenCL Rechnung trägt.

Der von Apple vorangetriebene, plattform- und herstellerunabhängige Standard zur Programmierung von Grafikchips für alles außerhalb des Grafikbereichs, OpenCL, ist nach der ersten Veröffentlichung in MacOS X 10.6 nun auch für Windows und Linux verfügbar, wie Phoronix berichtet. Nvidia hat als erster OpenCL-fähige Treiber vorgestellt, die Veröffentlichung von ATIs OpenCL-Treibern sollte auch nicht mehr lange auf sich warten lassen. Voraussetzung ist eine CUDA-fähige Nivida-GPU ab der Geforce 8000er-Serie. Nvidia bietet neben dem OpenCL-fähigen Linux-Treiber in Version 190.29 auch für alle Plattformen ein OpenCL-SDK, Beispielcode und einen OpenCL Visual Profiler, welcher beim Optimieren der eigenen OpenCL-Programme helfen soll, zum Download an.

OpenCL wurde zwar entscheidend von Apple vorangetrieben, verantwortlich dafür zeichnet allerdings die Khronos Group, deren Server wohl dem momentanen Ansturm durch die Nvidia-Veröffentlichung nicht standhält und derzeit nicht erreichbar ist. Neben Apple, AMD/ATI und Nvidia gehören der Khronos Group noch 30 andere Firmen an, unter anderem IBM, Intel, ARM, Freescale, Texas Instruments, STM, S3, 3DLABS, QNX, Qualcomm, Nokia, Samsung und Toshiba sowie auch einige bekannte Spiele-Hersteller wie Activision Blizzard und Electronic Arts.

Nun gibt es endlich einen Standard, auf den Programmierer sich verlassen können, so dass ihr Code auf allen Plattformen und Grafikchips läuft. Dies sollte der Nutzung von Grafikchips als Anwendungsbeschleuniger starken Auftrieb bescheren. Bisher konnten Programmierer hierfür entweder auf proprietäre Techniken wie Nvidias CUDA oder ATIs Stream setzen oder aber mittels OpenGL- oder DirectX-Shadern (GPGPU) grafikchipunabhängig programmieren. Da GPU-Shader aber primär für Grafik entworfen wurden war die Realisierung von normalen Rechenaufgaben per Shader sehr mühsam. Das Ergebnis war - je nach Algorithmus und Implementierung - oft nicht so leistungsfähig, wie man erwarten könnte und nutzte das theoretische Rechenpotential der Grafikchips oft nicht aus. OpenCL soll dies nun ändern: Es soll leicht zu programmieren sein und den Programmierer von mühsamen Aufgaben wie der händischen Optimierung des Codes auf die Eigenheiten der Grafikchips entlasten. Eine kurze technische Vorstellung was OpenCL ist, kann und wie es funktioniert findet sich auf Apples Homepage.

Da nur wenige Programmierer und Softwarefirmen willens waren, mühsam Code zu schreiben, der nur auf den Grafikchips eines Herstellers läuft (Der Markt für alle Grafikchips inklusive Chipsatzgrafik verteilt sich momentan zu 49,7% auf Intel, 17,1% auf AMD/ATI und zu 31,1% auf Nvidia mit 2.1% sonstigen Herstellern) ist die Einführung von OpenCL, was dieses Manko behebt, stark zu begrüßen. Nicht nur auf Grafikchips beliebiger Hersteller läuft OpenCL (Intel hat ebenfalls schon OpenCL-Unterstützung für ihren kommenden Grafikchip Larabee angekündigt), auch für normale CPUs, DSPs und den in den schnellsten Supercomputern und der Playstation 3 verbauten Cell-Prozessor soll es OpenCL-Implementierungen geben, so dass schlussendlich auf fast jeder Hardware OpenCL-Code lauffähig ist.

Die Rechenpower moderner Grafikchips eignet sich inzwischen für sehr viele rechenintensive Aufgaben, unter anderem für Video- und Audio-Encoding, Videoeffekte, Raytracing, Kryptographie, Physiksimulation, Flüssigkeits-Simulation, 2D-Grafik-Filterberechnung, Soundsynthese oder Audio-Effektberechnung.

Für Linux ist OpenCL eine tolle Sache, ebenso wie OpenGL für Grafik und OpenAL für Sound: Code ist einfach zwischen den Welten portierbar und bedarf keiner Anpassungen. Microsoft hat die Entwicklung etwas verschlafen, ihre proprietäre Alternative zu OpenCL, DirectX Compute Shader genannt, ist erst Ende Juli mit DirectX 11 im Service Pack 2 für das nur mäßig populäre Windows Vista eingeführt worden, die Aufmerksamkeit der Entwicklergemeinde gilt allerdings deutlich eher OpenCL.

Ähnliche Artikel

  • Update für Open Computing Language

    Das Standardisierungsgremium Khronos Group hat nach 1 1/2 Jahren die Programmierspezifikation OpenCL aktualisiert.
  • AMD veröffentlicht erste öffentliche Beta des OpenCL-SDKs
    AMD hat mit dem ATI Stream Software Development Kit 2.0beta Entwicklerwerkzeuge vorgestellt, mit denen sich Anwendungen in der Open Computing Language (OpenCL) schreiben lassen.
  • OpenCL-Workshop, Teil 1: Grundlagen
    Grafikkarten können nicht nur bunte Bildchen malen: Beim parallelen Verarbeiten großer Datenmengen laufen die GPUs den CPUs den Rang ab. Dabei dient OpenCL unabhängig von Hardware und Hersteller als Programmierplattform.
  • Neues SDK für ATI Stream

    Die neue Version der Entwicklungsumgebung für Anwendungen, die sowohl GPU- als auch CPU-Ressourcen verwenden, unterstützt neuere Versionen von OpenCL und Linux-Distributionen.
  • OpenCL-Workshop, Teil 2: Praxis
    OpenCL macht die Grafikkarte vom alltäglichen, aber langweiligen Begleiter zum Turbo für anspruchsvolle Rechenoperationen. Wie im richtigen Leben spielt der Lader seine Qualitäten aber erst auf der Autobahn aus – im Stadtverkehr rührt sich wenig.

Kommentare
AMD/ATI ist schon da
Frank Störzer, Dienstag, 29. September 2009 13:08:15
Ein/Ausklappen

AMD/ATI hat für seine Grafikkarten bereits eine Beta auf den Weg gebracht. Man muss sich nur als Entwickler registrieren, was aber an sich kein Problem darstellen sollte, da man sich, wenn man Stream früher schon genutzt hatte, sich eh schon registriert hatte.

Eine Meldung auf Heise gab es bereits Anfang August bezüglich des OpenCL SDKs:

http://www.heise.de/ix/AMD-...r-OpenCL--/news/meldung/143083

Gruß

Frank Störzer


Bewertung: 128 Punkte bei 14 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: AMD/ATI ist schon da
Daniel Kottmair, Dienstag, 29. September 2009 13:11:04
Ein/Ausklappen

Betas für Entwickler gab's auch von Nvidia schon lange, siehe Phoronix-Meldung. Aber das hier ist der erste public release von OpenCL für alle Nicht-MacOSler! ;-)


Bewertung: 167 Punkte bei 11 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: AMD/ATI ist schon da
Frank Störzer, Dienstag, 29. September 2009 13:58:08
Ein/Ausklappen

Die Veröffentlichung von Nvidia ist nicht ohne Angabe von persönlichen Daten herunterladbar. Im Gegensatz zu Nvidia muss man nicht einem speziellen erlauchten Kreis angehören, um an die Beta von AMD/ATI zu kommen, dies war vor der Veröffentlichung dieses Nvidia SDK aber der Fall. Beide Unternehmen führen ihre SDKs in ihren Developer-Seiten, was für mich ergibt, dass dies zwar ein "public release" von Seiten Nvidias ist, aber auch nur als BETA. Wenn es wirklich für die breite Masse wäre, wäre es bei den normalen Treibern und ohne Registrierung bzw. Angabe persönlicher Daten zugänglich.

Aber es ist von Nvidia und mit großem Tamtam auf den Markt gekommen, daher ist es mehr als die Veröffentlichung von AMD/ATI. Ich habe nichts gegen Grafikakrten oder Chipsätzen von Nvidia, auch wenn der Satz davor dies vielleicht impliziert. Ich beobachte nur das Verhalten von Nvidias und sehe eine ums überleben kämpfende Firma, welche keine wirklich guten Produkte abseits vom Chipsatz ION hat. In einigem Mögen sie besser sein als ihre Konkurrenz, in manchem anderen eher schlechter. Wenn man sich die Entwicklung der Treiber von AMD/ATI ansieht und teilweise liest, welche Probleme Nvidia mit aktuelleren Treibern in manchen Kombinationen hat, kehrt sich hier gerade das allgemeine Bild um. Die Lizenzpolitik, welche Nvidia betreibt ist auch nicht unbedingt förderlich für ihr überleben. Nvidia überlebt aktuell nur durch ihren Ruf und durch ein geschicktes Marketing. So wie auch diese Ankündigung nur ein Baustein im Marketingkonzept ist.

Wenn überhaupt, ist das erste öffentlich zugängliche OpenCL SDK das von Apple im Snow Leopard. Es ist egal, welches OS oder welche Hardware als Basis genommen wird. Wenn man einen SPARC-Rechner hat mit Solaris, interessieren die SDKs von AMD/ATI, Apple und Nvidia überhaupt nicht und aus Sicht dieser Person ist das erste öffentlich zugängliche OpenCL SDK noch nicht zu haben. Marketing regiert die Welt und so lange dies so ist, interessiert eine Zeitlinie nur den Historiker.
Gruß

Frank Störzer


Bewertung: 148 Punkte bei 16 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: AMD/ATI ist schon da
Daniel Kottmair, Dienstag, 29. September 2009 14:49:38
Ein/Ausklappen

Meiner Meinung nach schenken sich die beiden Firmen nix. Okay, ATI hilft *etwas* beim RadeonHD-Projekt mit, was löblich ist, aber auf der anderen Seite stellen sie die Unterstützung für gar nicht mal so alte GPUs in ihrem eigenen Treiber einfach so ein, was zu Recht sehr viele Leute verärgert hat. Im Testlabor steht gerade ein nagelneues Gigabyte-Board mit ATI785 Chipsatzgrafik - welche nach der Installation des ATI-Treiber rechts unten am Screen als "unsupported Hardware" gewatermarkt wird. Wie gesagt: Ein nagelneues Board!

Außerdem ist die Treiberqualität und die Performance von Nvidia unter Linux einfach besser. Der UGNX-SpecViewperf-Subtest stützt immer noch auf ATI-Karten ab, mit Nvidia kein Problem! Bei ATI habe ich auch immer wieder den Eindruck, dass sich die GPU mit so etwas simplem wie Fullscreen-Video-Replay abkämpft und es gerade noch so flüssig hinkriegt, mit Nvidia geht das völlig stressfrei!
Und VDPAU war auch ne nette Sache von Nvidia - wobei das eben hoffentlich bald genauso durch OpenCL abgelöst wird wie CUDA-Zeug! ;-)


Bewertung: 131 Punkte bei 12 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: AMD/ATI ist schon da
Frank Störzer, Dienstag, 29. September 2009 15:48:42
Ein/Ausklappen

Da hast du auch wieder Recht, wobei das mit dem nicht mehr unterstützen machen beide. Nvidia durch unregelmäßig erscheinende Legacy-Treiber, AMD/ATI durch die OSS-Treiber, unter Windows gibt es hier ebenfalls unregelmäßig Legacy-Treiber.

Das VDPAU läuft hat mit dem Treiber von Nvidia zu tun, mit dem ich schon mal meine liebe Mühe hatte, mittlerweile sind die beiden Grafikarten im Legacy-Bereich und wahrscheinlich nicht mehr wirklich schmerzfrei handhabbar. Gut, die eine ist von Anfang dieses Jahrzehnts. AMD/ATI hat auch eine entsprechende lib für die UVD-Engine ihrer Karten, in wie weit diese aber funktionieren kann ich Mangels Ubuntu nicht sagen, ich nutzte Debian selber und habe hier eigentlich nur dann Probleme mit den AMD/ATI-Treibern, wenn ich selber Bockmist im System fabriziere. Wobei ich hier das ausmisten als leichter empfand, als mit den Nvidia-Treibern früher.

Das Gigabyte-Board mit dem 785G als unsuported angezeigt wurde, kann an einem fehlenden Eintrag im Treiber gelegen haben. Vielleicht war der verwendete Treiber gerade noch nicht neu genug und der, der den Chipsatz unterstüzende erst ein paar Tage später auf dem Markt. Was genau da schief gelaufen ist, ist bei beiden Herstellern möglich. Bei Nvidia musste ich früher mal einen Beta-Treiber nehmen, um den Chipsatz des Boards zu verwenden, das war 2 Monate nach Veröffentlichung des Boards, wobei dies unter Windows war. Der verfügbare konnte den Chipsatz zwar einbinden, aber mit so einer krottigen Geschwindigkeit, dass Arbeiten nicht möglich war. Zudem war das System an sich zu Instabil. Mit dem Beta-Treiber flutschte es damals (ist auch schon wieder 5 Jahre her). Linux auf dem selben Rechner war aber auch nicht besser, da gerade Komponenten von Nvidia einige Zeit brauchten, um vom Kernel nutzbar zu sein, heute mag das generell besser sein. Es sollte normal nie vorkommen, das neue Hardware vom Treiber nicht erkannt oder unterstützt wird, kommt aber regelmäßig vor.

Ich selber hatte bei Videos unter Linux mit AMD/ATI-Karten bisher keine Probleme mit Fullscreen oder mehr als ein Video. Nur aktuell mag unter KDE 4.3 das Composit nicht, ist aber für mich eher Spielerei als notwendig. Ich vermute, ich müsste nur irgendwas in der xorg.conf ändern und dann lief das wieder, aber wie gesagt, ist nur Spielerei.

Gerade was solche Benchmarks betrifft, bin ich sehr skeptisch. Wie nah sind diese an den Specs der CPU/GPU/Sprache, welche getestet werden soll. Gerade was OpenGL angeht, sagt man, dass Nvidia besser sei. Schaut man sich die Anwendungen an, halten die sich nicht an die Specs sondern an Spezialitäten, die Nvidia in ihren Karten einsetzt. Wenn diese von AMD/ATI nicht unterstützt werden, mag es vielleicht ärgerlich sein. Allerdings ist dies nicht unbedingt ein Fehler von AMD/ATI, eher ein Fehler der Softwarehersteller, nur den mit Sonderwegen gespickten Pfad zur Verfügung zu stellen. Viele der verwendeten Techniken sind in keiner OpenGL-Spec (endgültige Version) erwähnt, aber in der Vendor-Spec von Nvidia. So etwas untergräbt jeden Standard, einem Standard, den diese Firma sogar leitet (Nvidia hat eine Führungsrolle in der Khronos-Gruppe).

Gruß

Frank


Bewertung: 203 Punkte bei 13 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Aktuelle Fragen

Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...