2017-07-09 4 views
4

La branche maître encog-core-java ne possède plus de méthode Encog.getInstance().getCL(), ni d'accès explicite aux périphériques OpenCL (cf. LeadTune's encog-java example: BenchmarkCL basé sur Encog 2). Au lieu de cela, nous semblons nous référer au ConcurrentTrainingManager qui détecte magiquement les GPU avec les processeurs, bien que l'implémentation de ceci soit très floue.OpenCL backend dans Java Encog 3

La seule autre mention d'OpenCL dans le code source est dans ResilientPropagation, où l'objet périphérique OpenCL est revendiqué comme un paramètre constructeur facultatif, mais ce n'est pas le cas.

Est-ce que quelqu'un sait si le support OpenCL a simplement été supprimé d'Encog sans mettre à jour les JavaDocs? Mieux encore, quelqu'un pourrait-il fournir un exemple pratique de l'apprentissage de la machine à support OpenCL sur Encog 3.x?

My attempt de soumettre un TrainingJob au ConcurrentTrainingManager a échoué parce que je ne pouvais pas comprendre comment définir une formation Strategy pour mon RPROPJob.

+2

Je vais juste dire cela (seulement parce jeff mentionné dl4j): Nous ne va pas soutenir OpenCL non plus. Nous avons l'expertise sur le personnel pour faire GPU. Ce que nous n'avons * pas, ce sont les incitations. AMD a encore beaucoup de travail à faire pour que cela vaille le temps de le faire. Ils ont fait un pas vers cela récemment mais ce n'est toujours pas une tonne. –

+2

@AdamGibson, je ne pense pas que ce soit un problème AMD. C'est un problème Open Source. S'il est vrai que nVidia contrôle actuellement le marché des GPU, leur CUDA n'est pas une norme open source. OpenCL est. HiP, successeur prévu d'OpenCL, dont la syntaxe est incontestablement CUDA-esque. – Inon

+1

@AdamGibson Je suis d'accord avec Inon ici: OpenCL est un standard ** ouvert **, et peut être utilisé avec les GPU AMD et les CPU (!), Mais aussi avec les processeurs Intel et GPU NVIDIA - diable, même avec les appareils Android. C'est plutôt pour que NVIDIA ne soit pas incité à améliorer leur support OpenCL: ils sont à l'aise avec leur quasi-monopole de CUDA. En outre, les API sont si remarquablement similaires pour les tâches courantes que la principale différence entre OpenCL et CUDA se résume au fait que le premier est ouvert et que ce dernier est propriétaire - il ne s'agit pas tant de différences * techniques *. – Marco13

Répondre

3

En réponse à mon correspondant GH issue, Jeff Heaton a écrit:

OpenCL est pas pris en charge par Encog. La programmation GPU n'est pas quelque chose sur lequel je travaille actuellement. Si quelqu'un veut apporter quelque chose dans ce domaine, ce serait formidable. Mais il y a déjà beaucoup de travail de GPU de réseau de neurones en cours dans TensorFlow et Deeplearning4J, je ne vais pas essayer de reproduire cela moi-même. De plus, la programmation GPU est en dehors de mon domaine d'expertise.

Comme alternative, je recommande Ivan Vasilev de Neural Networks, que je l'ai vérifié avec OpenCL 2.

+0

FYI: Afin d'éliminer une certaine confusion, nous avons mis à jour la page Encog GPU pour refléter la dernière version du non-support de GPU d'Encog. http://www.heatonresearch.com/encog/encog_gpu.html – JeffHeaton