xtensor-stack / xtensor-blas

BLAS extension to xtensor
BSD 3-Clause "New" or "Revised" License
158 stars 55 forks source link
blas c-plus-plus-14 lapack linear-algebra xtensor

xtensor

GHA Linux GHA OSX GHA Windows Documentation Binder Join the Gitter Chat

Introduction

xtensor-blas is an extension to the xtensor library, offering bindings to BLAS and LAPACK libraries through cxxblas and cxxlapack from the FLENS project.

xtensor-blas currently provides non-broadcasting dot, norm (1- and 2-norm for vectors), inverse, solve, eig, cross, det, slogdet, matrix_rank, inv, cholesky, qr, svd in the xt::linalg namespace (check the corresponding xlinalg.hpp header for the function signatures). The functions, and signatures, are trying to be 1-to-1 equivalent to NumPy. Low-level functions to interface with BLAS or LAPACK with xtensor containers are also offered in the blas and lapack namespace.

xtensor and xtensor-blas require a modern C++ compiler supporting C++14. The following C++ compilers are supported:

Installation

xtensor-blas is a header-only library. We provide a package for the mamba (or conda) package manager.

mamba install -c conda-forge xtensor-blas

which will also install the core xtensor package.

Or you can directly install it from the sources:

cmake -D CMAKE_INSTALL_PREFIX=your_install_prefix
make install

To build the tests or actually use xtensor-blas, you will need binaries for

which are also available on conda-forge.

Trying it online

You can play with xtensor interactively in a Jupyter notebook right now! Just click on the binder link below:

Binder

The C++ support in Jupyter is powered by the xeus-cling C++ kernel. Together with xeus-cling, xtensor enables a similar workflow to that of NumPy with the IPython Jupyter kernel.

Documentation

For more information on using xtensor, check out the reference documentation

http://xtensor-blas.readthedocs.io/

Dependency on xtensor

xtensor-blas depends on the xtensor package

xtensor-blas xtensor
master ^0.25.0
0.21.0 ^0.25.0
0.20.0 ^0.24.0
0.19.2 ^0.23.3
0.19.1 ^0.23.3
0.19.0 ^0.23.0
0.18.0 ^0.22.0
0.17.2 ^0.21.4
0.17.1 ^0.21.2
0.17.0 ^0.21.1
0.16.1 ^0.20.4
0.16.0 ^0.20.0

License

We use a shared copyright model that enables all contributors to maintain the copyright on their contributions.

This software is licensed under the BSD-3-Clause license. See the LICENSE file for details.