Speed/usability comparison between ruby wrappers to various fast linear algebra libraries
There are three folders
nm_lapacke_atlas each of which contain little ruby libraries that interface with different C implementations of LAPACK and BLAS.
Heres a brief of each gem:
- nm_clapack - A small ruby gem bindings with CLAPACK and using openBLAS as the underlying BLAS implementation. This is the slowest. Compiled from source on my machine and then imported the binaries into the gem.
- nm_lapacke - A small gem with bindings for LAPACKE and using openBLAS as the the underlying BLAS implementation. Compiled LAPACKE against openBLAS on my machine and then imported the binaries.
- nm_atlas - A small gem with bindings for CLAPACK and ATLAS obtained off the
libatlas-base-devpackage from the Debian repositories. This is what is currently used in nmatrix.
- nm_lapacke_atlas - A small gem with bindings for LAPACKE compiled against the ATLAS packages from
libatlas-base-dev. LAPACKE compiled manually against supplied ATLAS binaries.
Refer to this blog post for a detailed description of the approaches followed and the benchmarks each of them yielded, along with a brief summary of the pros and cons of each.