Neanderthal 0.15.0 Released - Many more specialized matrix data structures in ClojureYou can adopt a pet function! Support my work on my Patreon page, and access my dedicated discussion server. Can't afford to donate? Ask for a free invite.
September 1, 2017
Please share: Twitter.
The new release of Neanderthal, the fast Clojure one stop shop for linear algebra and matrix computations at top speed on Intel & AMD CPU's, and both Nvidia and AMD GPU's has just been released to Clojars.
In addition to further internal refinements of existing features, there's now many specialized matrix types to choose from to speed up computations even more by exploiting the additional knowledge of matrices at hand:
Dense matrices now offer the choice of:
- Triangular matrices (TR),
- Symmetric matrices (SY),
- and, of, course, general rectangular matrices (GE)
When we know that all non-zero data in our matrix are concentrated close to the diagonal, we might want to choose banded matrices, that come in three flavors, too:
But that's not all. We can also opt for packed storage:
When appropriate, Neanderthal can also do efficient polymorphic conversions between those.
Why all this variety? Because, in lots of cases, we know that the matrix we work with have some properties. By choosing the appropriate representation, we can get help from Neanderthal, who can now use that information to automatically select the best algorithm for the operation that we want to invoke! And expect more! There is going to be support for huge sparse matrices, and for tensors. All at high speed, and with a nice Clojure API that does almost all automatically for us!
To start discovering how linear algebra can help you in your Clojure programming, read my Clojure Linear Algebra Refresher series. In addition, expect more detailed tutorials about how to effectively use Neanderthal for certain numerical tasks. There is also an extensive test suite with lots of examples: check out Neanderthal GitHub repository. Last, but not least, each public function comes with the documentation, so don't forget to check that out.