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.






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-liefert-Entwicklungsumgebung-fuer-OpenCL–/news/meldung/143083
Gruß
Frank Störzer
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! ;-)
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… Mehr »
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… Mehr »
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… Mehr »