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
.
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. –
@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
@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