Der Master-Zweig encog-core-java verfügt nicht mehr über eine Encog.getInstance().getCL()
-Methode oder expliziten Zugriff auf die OpenCL-Geräte (vgl. LeadTune's encog-java example: BenchmarkCL basierend auf Encog 2).OpenCL-Backend in Java Encog 3
Stattdessen werden wir auf die ConcurrentTrainingManager
verwiesen, die magisch GPUs zusammen mit den CPUs erkennt, obwohl die Implementierung davon sehr unklar ist.
Die einzige andere Erwähnung von OpenCL im Quellcode ist in ResilientPropagation
, wo das OpenCL-Geräteobjekt als ein optionaler Konstruktorparameter beansprucht wird, aber es ist nicht.
Weiß jemand, ob die OpenCL-Unterstützung einfach aus Encog entfernt wurde, ohne die JavaDocs zu aktualisieren? Besser noch, könnte jemand bitte ein funktionierendes Beispiel für OpenCL-gestütztes maschinelles Lernen auf Encog 3.x bereitstellen?
My attempt ein TrainingJob
zum ConcurrentTrainingManager
gescheitert einreichen, weil ich nicht verstehen konnte, wie Strategy
RPROPJob
für meine eine Ausbildung zu setzen.
Ich werde einfach sagen (nur weil jeff dl4j erwähnt): Wir werden nicht OpenCL unterstützen entweder. Wir haben das Fachwissen, um gpus zu machen. Was wir * nicht * haben, sind die Anreize. AMD hat noch viel mehr zu tun, um dies für jeden zu tun. Sie haben in letzter Zeit einen Schritt dazu gemacht, aber es ist immer noch keine Tonne. –
@AdamGibson, ich glaube nicht, dass dies ein AMD-Problem ist. Dies ist ein Open-Source-Problem. Obwohl es stimmt, dass nVidia derzeit den GPU-Markt kontrolliert, ist ihre CUDA kein Open-Source-Standard. OpenCL ist. So wird HiP, der geplante Nachfolger von OpenCL, dessen Syntax unverkennbar CUDA-artig ist. – Inon
@AdamGibson Ich stimme Inon hier zu: OpenCL ist ein ** offener ** Standard und kann mit AMD GPUs und CPUs (!), Aber auch mit Intel CPUs und NVIDIA GPUs verwendet werden - auch mit Android-Geräten. Es ist eher so, dass NVIDIA keinen Anreiz hat, ihre OpenCL-Unterstützung zu verbessern: Sie sind mit ihrem Fast-Monopol von CUDA vertraut. Außerdem sind die APIs für gängige Aufgaben so auffallend ähnlich, dass der Hauptunterschied zwischen OpenCL und CUDA darin besteht, dass die erste offen und die zweite proprietär ist - es geht nicht so sehr um * technische * Unterschiede. – Marco13