Anscheindend hatte ich das hier noch gar nicht erwähnt: Auf http://www.jocl.org/ gibt es JOCL, eine Java-Anbindung für OpenCL, im Moment in Version 0.1.1-beta.
Als Eye-catcher (auch wenn vermutlich niemand das liest ) mal Screenshots von zwei der Samples:
Hui, jetzt hast das ja doch schon gemacht Mit welcher Grafikkarte hast Du das jetzt schon getestet? Oder hast Du eine NVidia Grafikkarte mit Cuda wo NVida OpenCL auf Cuda mappt?
NVIDIA bietet das CUDA SDK Version 3.0 beta (ist auf der Seite auch verlinkt), das auch OpenCL weitgehend unterstützt. Von AMD gibt es die (auch verlinkte) Stream SDK, Version beta-4, mit der man OpenCL notfalls auch auf der CPU laufen lassen kann - oder eben auf den ATI-Karten, die es schon unterstützen.
JOCL ist jetzt nur die direkte „low-level“-API-Anbindung. Viele der Schwierigkeiten, die wir da mal andiskutiert hatten, ergeben sich dadurch nicht. Auf Java-Seite ist ein „float4“ dann halt einfach 4 Elemente eines float-Arrays (wie schon damals angedeutet: Da könnte man sich noch was überlegen…).
Eigentlich wolltest du ja mal einen Klassenentwurf erstellen!?
Ja genau wollte ich machen, hab es auch schonmal angefangen. Aber Du hattest mich damals leicht desillisioniert weil Du, wie Du aber völlig recht hast, meintest: Die Nutzer wollen, wie bspw. bei JOGL, eine fast 1:1 API zu den bindings.
Besteht noch Interesse an einer „ordentlichen“ OO-API? Zumal Du ja selbst schon die Links geschickt hast wo es so schon angefangen wurde.
Desillusionieren wollte ich dich nicht. Nur darauf hinweisen, dass es schwer sein könnte, die API „geeignet“ zu entwerfen, wenn man nicht schon tiefere Kenntnisse hat.
Wie groß der Anteil derer ist, die sich eine 1:1-Anbindung wünschen, im Vergleich zu denen, die sich eine „schöne“ OO-API wünschen, kann man schwer sagen. Man sieht auf der Mailinglise von JavaCL, dass gelegentlich neue Features angefragt werden, … die vielleicht low-level sind? … diese Fragen würden sich bei einer 1:1-Anbindung aber kaum stellen Andererseits neigen die Leute dazu, sich eben gerade dann NICHT auf der Mailingliste zu beschweren, wenn bei ihnen alles glatt läuft, und umgekehrt hatte ich auch schon Beschwerden darüber, dass JOCL ja nicht funktioniert, obwohl JavaCL perfekt läuft (dieses dynamische Laden der DLL mit JNA hat auch seine Vorteile…).
Es stand mal im Raum, JOCL und JavaCL irgendwie unter einen Hut zu bringen. Insgesamt denke ich, dass die 1:1-Anbindung und die OO-Anbindung (zu?) unterschiedliche Zielgruppen bedienen, und deswegen beide ihre Existenzberechtigung haben. Allerdings habe ich vor, zumindest mal grob zu testen, ob JavaCL statt der JNA-Anbindung nicht auch JOCL verwenden könnte - und Olivier (der Ersteller von JavaCL) hat auch gesagt, dass die Option, in JavaCL frei wählen zu können, welche low-level-bindings verwendet werden (JNA, GlueGen oder handgeschrieben) ihren Reiz hätte.