Numo::Linalg : Linear Algebra library with BLAS/LAPACK binding to Numo::NArray

Binder Build Status

GitHub | RubyGems

Under development!

Introduction

This is a binding of BLAS/LAPACK for Numo::NArray using dynamic linking loader. This design allows you to change backend libraries without re-compiling.

Numo::Linalg API

  • Matrix and vector products
    • dot, matmul
  • Decomposition
    • lu, lu_fact, lu_inv, lu_solve, ldl, cholesky, cho_fact, cho_inv, cho_solve, qr, svd, svdvals, orth, null_space
  • Matrix eigenvalues
    • eig, eigh, eigvals, eigvalsh
  • Norms and other numbers
    • norm, cond, det, slogdet, matrix_rank, matrix_power
  • Solving equations and inverting matrices
    • solve, lstsq, inv, pinv

Low-level modules

Installation

  • Install Numo::NArray

  • Install LAPACK or alternative package.

    * Numo::Linalg requires C-interface
    [CBLAS](http://www.netlib.org/blas/#_cblas) and
    [LAPACKE](http://www.netlib.org/lapack/lapacke.html) interface.
    These are included in LAPACK package.
    
    * Recommended: use one of following faster libraries:
      * [ATLAS](https://sourceforge.net/projects/math-atlas/)
      * [OpenBLAS](http://www.openblas.net/)
      * [Intel MKL](https://software.intel.com/intel-mkl)
    
    * Note that the performance depends on the backend library as shown in
    [benchmark](https://github.com/ruby-numo/numo-linalg/tree/master/bench).
    
  • Install Numo::Linalg

$ gem install numo-linalg

or

$ git clone https://github.com/ruby-numo/numo-linalg.git
$ cd linalg
$ rake build
$ gem install pkg/numo-linalg-*.gem

Using

  • Load Numo::Linalg module with default backend:
require "numo/linalg"

Authors

  • Masahiro Tanaka
  • Makoto Kishimoto
  • Atsushi Tatsuma

Acknowledgments

  • This work is partly supported by 2016 Ruby Association Grant.

ToDo

  • More functions
  • write test
  • Documentation