Comments (1)
An answer - with a huge delay, for which I don't have an excuse. There are several reasons why this library is significantly slower than other libraries (including Theano) and they are somehow related to the use of Aparapi:
- The memory management in Aparapi is very limited - most of the other libraries use highly optimized gpu kernels, usually implemented with CUDA (cudnn being by far the most popular). CUDA provides the ability to rearrange the gpu arrays in a way, which greatly increases the computational speed (this is especially true for convolutional operations). Aparapi simply doesn't have that.
- Another serious limitaion of Aparapi is that if there is a chain of gpu kernels (operations), where the input of one operation is the output of the previous operation (which is the case with most neural networks) it is not possible to "contain" this communication within the gpu. This means that the output of one operation is first transfered from the gpu memory to the general RAM and then transfered back from the RAM to the gpu memory to serve as input of the next operation. Unfortunately this greatly reduces the performance.
In conclusion I would say that when I started working on the library I was not aware of any of these limitations and my goal was to introduce myself to the deep learning field and produce something meaningful in the same time. Additionally, I tried to create something which could run on any hardware - thus using java and opencl. At that time cudnn didn't exist and the ony other deep learning library that I was aware of was cuda-convnet, so I didn't have much of a choice anyway. I hope that someday in the future I would be able to port the library to use cudnn.
from neuralnetworks.
Related Issues (20)
- Is it possible to implement sparse autoencoder with your lib? HOT 1
- Simple forward example? HOT 1
- Test case MnistTest fail on every tests HOT 2
- Index out of range: 0 -> 89+0 to 0
- Differences between Java1.7 and Java1.8 neyral net libraries
- MnistTest.testLeNetSmall fails with 90% error rate HOT 1
- Could you please let me know if only changing the following line is enough to run the code in GPU. Environment.getInstance().setExecutionMode(EXECUTION_MODE.SEQ); to Environment.getInstance().setExecutionMode(EXECUTION_MODE.GPU); HOT 4
- XOR test fails
- Train method fails in MultipleNeuronsOutputError.getTotalErrorSamples
- Saving/Loading networks
- DBN with softmaxlayer on top
- How to run the project in Eclipse ?
- Can the examples run without opencl.so ?
- How can I train my net with deep learning ?
- OS Differences
- Strange behavior when calculating Layers (probably Aparapi related) HOT 2
- Execution mode GPU failed: OpenCL execution seems to have failed (runKernelJNI returned -51) com.aparapi.internal.exception.AparapiException: OpenCL execution seems to have failed (runKernelJNI returned -51)
- OpenCl problem
- Is this repo dead ? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from neuralnetworks.