| Fair point we are fixing now:
https://github.com/deeplearning4j/deeplearning4j-docs/issues... We will be sending out a doc for this by next week with these updates. Thanks a lot for playing ball here. Beyond that, can you clarify what you mean? Do you mean just the gemm op? For that, that's the only case that mattered for us. We will be documenting the what/how/why of this in our docs. Beyond that, I'm not convinced the libraries are directly comparable when it comes to the sheer scope of the libraries to each other. You're treating nd4j as a gemm library rather than a fully fledged numpy/tensorflow with hundreds of ops and support for things you would likely have no interest in building. A big reason I built nd4j was to solve the general use case of building a tensor library for deep learning, not just a gemm library. Beyond that - I'll give you props for what you built. There's always lessons to learn when comparing libraries and making sure the numbers match. Our target isn't you though, it's the likes of google,facebook, and co and tackling the scope of tasks they are. That being said - could we spend some time on docs? Heck yeah we should. At most we have java doc and examples. We tend to help people as much as we can when profiling. Could we manage it better? Yes for sure. That's partially why we moved dl4j to the eclipse foundation to get more 3rd party contributions and build a better governance setup. Will it take time for all of this to evolve? Oh yeah most definitely. No project is perfect and always has things it could improve on. Anyways - let's be clear here. You're a one man shop who built an amazingly fast library that scratches your own itch for a very specific set of use cases. We're a company and community tackling a wider breadth of tasks and trying to focus more on serving customers and adding odd things like different kinds of serialization, spark interop,.. etc. We benefit from doing these comparisons and it forces us to document things better that we normally don't pay attention to. This little exercise is good for us. As mentioned, we will document the limitations a bit better but we will make sure to cover other topics like allocation and the like as well as the blas interface. Positive change has come out of this and I'd like to thank you for the work you put in. We will make sure to re run some of the comaprisons on our side. |
Please also note that Neanderthal also has hundreds of operations. The set of use cases where it scratches itches might be wider and more general than you think.
The reasons I'm showcasing matrix multiplications are:
1. That's what you used in the comparison. 2. It is a good proxy for the overall performance. If matrix multiplication is poor, other operations tend to be even poorer :)
Anyway, as I said, I'll be glad to compare other operations that ND4J excells at, or that anyone think are important.
I would also like to see ND4J's comparisons with Tensorflow or Numpy, or PyTorch, or, JVM based MXNet.