- Getting Started helps you to set up your environment.
- Hello world, a project that can be helpful for quick start.
General and native engine tutorials
- Fast, Native Speed, Vector Computations in Clojure, and the source code for this tutorial.
- Fast Map and Reduce for Primitive Vectors and Matrices, which also comes with source code for this tutorial.
- Neanderthal API contains the desrciption of each function, and also comes with mini examples.
GPU computation tutorials
- Matrix Computations on the GPU in Clojure (in TFLOPS!). Proceed to this GPU engine tutorial when you want even more speed (source code).
Internal details and edge cases
- Neanderthal Tests show some more details, but without explanations in prose. It might help when you are struggling with an edge case.
Making sense of legacy BLAS & LAPACK
BLAS (Basic Linear Algebra Subroutines) and LAPACK are mature and de facto standards for numerical linear algebra. They might seem arcane at first glance,but with a little exploration, it all have sense and reason.
Where to find legacy BLAS & LAPACK documentation
When you need more information beyond Neanderthal API, these links can help you:
A more detailed doc for each subroutine is available at these links.
When that is not enough
If that is not enough, you should look out for guides for mature scientific software libraries provided by the companies like IBM, NEC etc. These might shed some light, but I hope you won’t need to go that far, since I will try to hide such details behind Neanderthal.
Naming conventions (briefly)
You see a procedure named
DGEMM in the aforementioned docs and you are completely baffled. Here is how to decipher it:
- D is for Double precision, meaning the function works with doubles
- GE is for GEneral dense matrix, meaning we store all these doubles and not using any clever tricks for special matrix structures like symmetric, triangular etc.
- MM is the operation, it stands for Matrix Multiply.
Generally, Neanderthal will try to abstract away the primitive type (D) and the actual structure (GE) so you can
use methods like
mm to multiply two matrices.
Tell Us What You Think!
Please take some time to tell us about your experience with the library and this site. Let us know what we should be explaining or is not clear enough. If you are willing to contribute improvements, even better!