encog 2.5
Dear Jeff,
just a quick one this time: how's encog 2.5 progressing? any thoughts regarding its release date?
I remember you told once that, while researching the data pre-setup issues for openCL programming, you had already achieved a cpu-only 2x performance compared to 2.4, which is good enough to have me absolutely excited about this new release.
Also, I'm not very sure if you're finally enabling openCL's "first stage" in 2.5, "first stage" meaning - according to your openCL thoughts post - the possibility of training more than one NN concurrently (one with the CPU, a second NN with a GPU, a third NN with a second GPU - in case you had, for example, two graphics cards in your system - ... and so on).
thanks for all your time and efforts, I really appreciate it.




There have been quite a few changes in Encog 2.5, major restructuring of the lower-level flat networks. This very much paves the way for some of the more advanced GPU stuff I want to do in later versions. I did also did clean up the local memory usage quite a bit in the GPU, so it should be less likely to crash on bigger nets.
Yes, this version allows you to assign each neural network training to an OpenCL device. And run them in parallel.
Encog 2.5 will go through a beta release. There have been many changes. Though there are quite a few unit tests making sure nothing gets broken too badly. I expect the Java beta in a few weeks to a month.
Then address any issues it has. It really should not crash with OpenCL training on the larger nets anymore. And if it does, this is what I want to fix in the beta period.
By the way, this is the Java version. C# is probably, about a month behind this at this point. C# will probably go beta just as Java goes release.
Great news, Jeff...
even if 2.5's openCL speed was finally to be roughly the same as encog 2.4's cpu/corei7 current speed, for people like me (2 x GTX280 cards) that would mean a 3x improvement in speed (one NN thrown at the corei7, and another two for each of the GPUs).
I'm curious about which kind of performance penalty you got from having to move away from GPU's local memory (since it was just too small for holding large NNs). Even so, I'm pretty sure that overall it should run like a demon with recent GPUs (I'm thinking about something >=GTX260 and/or Radeon 5xxx).
thanks for your time and keep up the good work,
There is a performance penalty for not using local memory anymore. However, I will use local again at some point. Just not in the same way, I need to use it in a more "scalable" way. Future versions of Encog will very likely be written more to "generate code" for OpenCL, rather than just having static pre-defined kernels built ahead of time for CL.
Also going to create some more advanced benchmark tools, that will include cases for "several hundred to several thousand neuron networks"-- the bigger cases. As well as big and small training cases. Hope to publish those results soon.
Jeff
You might be interested in this thread too.
We are doing a number of "last minute" OpenCL related improvements to Encog 2.5.
http://www.heatonresearch.com/node/1633