Neanderthal: Guides

Basic setup

Books

New book available for subscription.

Presentations (Slides & Videos)

Performance comparisons with other fast libraries

General and native engine tutorials

Deep Learning From Scratch To GPU

GPU computation tutorials

Linear Algebra Tutorials

Clojure Numerics

Internal details and edge cases

  • Neanderthal Tests show many more details, without explanations in prose. This will 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.

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.

It is a good idea to familiarize yourself with BLAS Naming Scheme. It will help you understand how to efficiently use Neanderthal functions and where to look for a function that does what you need to do.

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!