News Khronos gibt OpenCL-1.0-Spezifikationen bekannt

Wolfgang

Redakteur
Teammitglied
Registriert
Nov. 2002
Beiträge
8.630
Um parallele Berechnungen abseits der 3D-Grafik bzw. einer 3D-API durchführen zu lassen, muss man bis jetzt auf herstellerspezifische Lösungen wie ATi Stream oder Nvidias CUDA zurückgreifen. Sowohl OpenCL als auch der Compute Shader von Microsoft sind dagegen Standards, die auf jeder GPU eines entsprechenden Techlevels funktionieren müssen.

Zur News: Khronos gibt OpenCL-1.0-Spezifikationen bekannt
 
Dann läuft es wohl auf 2 Standards hinaus: OpenCL + DirectX Compute Shaders (wie schon so oft mit OpenAL, OpenGL). Schön zu sehen, dass es endlich herstellerübergreifende Ansätze gibt, so dass die enorme Power der GPGPUs auch einheitlich (und somit kostengünstiger) genutzt werden kann.
 
Nvidia will durch GUDA OpenCL unterstützen......
also man will, das was eig. in der HW implementiert werden soll, per software emulieren?
hoffentlich ist das nur jetzt so, denn wenn das in zukunft auch so gemacht werden sollte, wäre das eine riesen verschwendung von resourcen....
 
Dann läuft es wohl auf 2 Standards hinaus: OpenCL + DirectX Compute Shaders
Unter Umständen nicht: Im Gegensatz zu OpenGL wird OpenCL auch von den großen Firmen in der Spieleindustrie unterstützt (Activision Blizzard, EA). Mit etwas Glück bleibt uns diesmal eine proprietäre MS-Lösung ohne Mehrwert erspart...
 
@meine vorredner: OpenCL bietet die schnittstelle um sachen berechnen zu lassen. wo dies zu geschehen hat, steht nirgends. doch OpenCL ist gedacht eine einheitliche schnittstelle programierern zu bieten, die viele paralelle tasks gleichzeitig abarbeiten lassen wollen, wofür die GPUs prädestiniert sind. was OpenGL/DirectX für grafik ist, ist OpenCL für allgemeine, parallele berechnungen, die z.b. für encodieraufgaben genutzt werden kann ..oder auch für physikeffekte ;-)
 
Zuletzt bearbeitet:
Eine offene kostenlose Schnittstelle für alle, was will man mehr?

NV wird nicht sonderlich begeistert mitziehen, weil sie mit PhysX/Cuda am weitesten sind. Von der Seite:

The Khronos™ Group today announced the ratification and public release of the OpenCL™ 1.0 specification, the first open, royalty-free standard for cross-platform, parallel programming of modern processors found in personal computers, servers and handheld/embedded devices.

Eine open, royalty-free Spezifikation dürfte für alle ausser MS wünschenswert sein, hoffentlich setzt sich das durch.
 
Ich find, dass hört sich extrem vielversprechend an.
Halte gar nichts von herstellerspezifischen Formaten, man sieht ja an der BadaBOOM vs. ATI Videoconverter, wie sinnvoll so etwas ist.
EIN Standard und ALLE können glücklich werden.
 
OpenCL könnte eine der größten Revolutionen der letzten Jahre im Computerbereich werden, wenn sich alle auf eine gemeinsame Grundlage einigen.

Aber hoffentlich stellt sich die Khronos Gruppe nicht so an, wie mit OpenGL, sonst seh ich da schwarz. Oder haben die sich mit OpenGL so angestellt, weil sie sich so sehr auf OpenCL konzentriert haben?
 
naja opencl wird sich nicht gegen den microsoft part bei spielen durchsetzen. die firmen die bisher ihre spiele mit directx bauen werden sicher nicht bei der physik dann auf opencl setzen.

Aber es wird wohl zumindest dafür sorgen das viele oder alle der anwendungen die über opencl kommen speziell alle offenen damit dann plattformübergreifend funktionieren.

Somit freu ich mich schon auf den ersten video-encodierer der auf opencl aufbaut und wohl dann auch oder ausschließlich unter linux läuft.

@isigrim:

ja das meinte ich ja. wobei ich es sehr schade finde das opengl bei spielen praktisch keine verwendung mehr findet auch wenn es sicher auch mal für was anderes ursprünglich gedacht war.
 
Zuletzt bearbeitet:
@blackiwid
Ich glaube, dass OpenCL eine andere Sparte bedienen wird, als DX11. Da Apple mit hinter der Entwicklung steht, stehen da sicherlich nicht Spiele im Vordergrund, sondern eher die allgemeine Beschleunigung von Programmen mittels GPGPU.

Dass OpenGL so kläglich untergegangen ist, lag sicherlich mit an der Art, wie Khronos damit umgegangen ist. Man hat zu zögerlich und nicht entschlossen genug gearbeitet. Ich hoffe man lernt aus den Problemen und geht an OpenCL anders heran.
 
Zuletzt bearbeitet:
Ich denke der wichtigste Punkt wird der sein das bei Microsoft eben eine DX11 fähige Grafikkarte nötig ist und ein Betriebssystem mit DX11. Also Vista bzw die Nachfolger.
Das bedeutet schon mal eine kleinere Basis.

OpenCL ist nicht nur Platformübergreifend (also Linux, Apple usw.), sondern läuft eben auch auf XP. Zusätzlich wird es wohl auch auf einem guten Teil der bestehenden Hardware laufen.

Firmen die eh schon DX für die Grafik einsetzen werden wohl sicherlich dann auch nicht OpenCL nehmen.
Alle anderen werden wohl mit OpenCL besser fahren, da es den größeren Markt bietet.
 
NV wird hier mit apple wohl am weitesten involviert gewesen sein. Ich finde es nicht schlecht, wenn sich die hersteller selbst und die standards kümmern.
 
@Kunibert_KA: das wäre ja auch ein grund auf opengl umzusteigen, würd mich freuen wenn es so wäre... aber die hersteller werden lieber ihre kunden zwingen zu vista aufwärts zu wechseln, als das sie 5 zustäzliche entwickler einstellen und das nächste spiel 3 monate später auf den markt kommt.
 
CUDA und OpenCL sind doch von der Aufgabe her das gleiche (abgesehen davon das OpenCL auch für CPUs gedacht ist) oder? Wie will man dann das eine über das andere einbinden?
 
Hoffentlich setzt sich dieser Standard durch. Dieses ganze Hickhack mit NV CUDA und Ati Stream hat bisher fast nichts für den Endanwender gebracht, Badaboom ist vor 1.1 nicht zu gebrauchen, Ati Videoconverter noch laange nicht einsetzbar, PhysiX wird sich auch nicht durchsetzen wenn es nur auf NV Karten geht..

Ich hoffe wirklich dass Opencl endlich das möglich macht was seit einem halben Jahr überall propagiert wird:
Gpucomputing. Und das nicht nur auf 2-3 Spezialprogrammen, sondern überall wo es etwas bringt.. und da fallen mir spontan seeeehr viele Sachen ein :)
 
Wie will man dann das eine über das andere einbinden?
Indem man einen Wrapper schreibt, der die OpenCL-Befehle auf die passenden CUDA-Befehle umschreibt? ;) Dann muss man nur einen Wrapper rausbringen und unterstützt sofort alle CUDA-fähigen Grafikkarten.

CUDA und OpenCL sind doch von der Aufgabe her das gleiche (abgesehen davon das OpenCL auch für CPUs gedacht ist) oder?
Nicht nur für CPUs, sondern auch für nicht-nVidia-Grafikkarten. Das ist wohl der wichtigere Punkt, OpenCL explizit für CPUs ist witzlos - da kann man direkt nativ arbeiten...
 
@ Creshal

ich würde es eher so sehen das was in OpenCL gefordert wird kann bzw. Unterstützt Nvidia schon lange mit der Cuda Schnittstelle, ich weiß auch nicht wieso alle immer denken das CUDA tot wäre wenn offene Standards kommen, ich sehe es einfach so dass NVidia CUDA einfach OpenCL (was ja bereits schon geschehen ist) und DirectX 11 (Compute Shader) tauglich macht, aber zusätliche Befehle in Cuda weiterhin beibehält. Auch sieht man doch bisher deutlich dass Nvidia durch ihren bisherigen Einsatz mit CUDA nun weiter ist als ATI die sozusagen Neuanfänger sind auf diesem Gebiet. Finde aber gut das nun endlich standards kommen, dass läst darauf hoffen das nun endlich mehr Video Encoder kommen, die ihre Berechnungen auf der GPU ausführen.
 
Hallo!

Ich hätte nicht gedacht, dass das so schnell gehen wird. Dachte eher, das Microsoft mit DX11 schneller sein wird...

In einem Atemzug hat Nvidia angekündigt, dass man durch CUDA OpenCL 1.0 mit dem aktuellen Treiber bereits unterstützt.
Kann mir einer schreiben, was das heißen soll?
Meinen die damit, dass in CUDA die in der OpenCL-Spezifikation definierten Funktionalitäten bereits implementiert sind? Oder heißt das sogar (was ich mir nicht vorstellen kann), dass sich die Funktionsdefinitionen etc. schon am OpenCL-Standard orientieren? Oder was soll das heißen?

OpenCL könnte eine der größten Revolutionen der letzten Jahre im Computerbereich werden, wenn sich alle auf eine gemeinsame Grundlage einigen.
Sehe ich genauso! Langsam wird die Sache wirklich auch für High-Performance-Computing interessant.
Falls also für CUDA noch irgendwelche Wrapper etc. geschrieben werden müssen (was ich auch glaube), dann hoffe ich, dass die es schnell machen...

Gruß
 
CUDA ist die Schnittstelle um Nvidia Hardware (so sie denn unterstützt wird) anzusprechen.
Hier muss also ein Programmierer festlegen: das hier wird jetzt auf der GPU berechnet.
Bei OpenCL werden die Aufgaben zur Laufzeit dynamisch auf alle CPU und GPU Kerne verteilt.

CUDA ist also dafür da Nvidia Hardware leichter ansprechen zu können. Das aber in einer recht statischen Form. Zur Zeit eben auch auf die (neuste) Nvidia Hardware begrenzt und nicht(?) MultiGPUfähig.

OpenCL ist dafür gedacht das der Programmierer im Code angeben kann: das hier ist parallelisierbar usw. OpenCL soll das dann zur Laufzeit dynamisch auf die verfügbare Hardware (je nach Last) verteilen. Die konkrete Ausführung kann dann wieder über CUDA usw. durchgeführt bleiben.

Kurz:
OpenCL ist eher als ein Verteiler von Aufgaben zu sehen. Speziell auf mehrere CPU und GPU Kerne.
Wenn also zb die CPU ausgelastet ist und die Grafikkarte nicht (Videobearbeitung) dann werden Aufgaben (so es denn möglich ist) auf die GPU verschoben.
Ist die GPU ausgelastet kann aber eben auch etwas auf die CPU verschoben werden.
Das ganze aber auch über mehrere Kerne.
So kann zb die Physik dann je nach System auf der CPU (zb Quadcore und eine Grafikkarte) oder auf einer zweiten Grafikkarte (Dualcore mit zwei Grafikarten) laufen.

Letztlich ist es also ein Versuch die vorhandene Hardware effizienter zu nutzen.
 
Zurück
Oben