Numerl - matrices in Erlang

OSX (and M1) is now supported!

To make things easier, I had to drop LAPACKE support. Once I have a bit more time, I’ll add that back and create a hex package.

4 Likes

Works beautifully now! Awesome job :rocket:

4 Likes

Hello everyone,

With @zelirio, we are continuing the work done by @Tanguyl on numerl, as our master’s thesis.
The main goals of our work will be :

  • to avoid the use of dirty schedulers, being sure every nif called can execute within 1ms;
  • to refocus the library on the use of CBLAS routines, exposing the same interface as BLAS.

In order to ensure the execution of the nifs within a 1ms time slice, the idea is to create a new representation for the matrices as 2D arrays of numerl binary objects (the binary objects being sub-matrices), and use block-matrix operations to perform the calculations. To do so, we will need to perform a benchmark to find the maximal size of a sub-matrix that guarantees the execution of the nifs in 1ms or less. This size will of course vary depending on the hardware.

Beside avoiding the dirty scheduling, block matrix calculation will also allow us to use the native concurrency of erlang, and execute multiple operations at a time.

Our work is published and will be updated on github : GitHub - zelirio/numerlplus.

We are really looking forward to work on this project, and get your feedback !

Stay tuned :slightly_smiling_face:

Basile Couplet & Lylian Brunet

10 Likes

Are you planning to submit a paper to Erlang 22? Erlang 2022 - ICFP 2022

2 Likes