FLENS (Trinity)

C++ is a programming language for writing libraries. And FLENS is a C++ library for writing numerical linear algebra libraries.

The combination C++/FLENS allows the implementation of high performance libraries in the field of numerical linear algebra.

Here some Benchmarks


One of the most successful and relevant libraries in the field of numerical linear algebra is LAPACK which is implemented in Fortran 77. So a necessary conditions for FLENS being a useful numerical linear algebra are:

Only if these conditions are fully met, further benefits will matter. Some benefits that make FLENS/C++ more favorable than using Fortran are:

Being able to re-implement LAPACK efficiently with FLENS is just one application to prove and benchmark its concepts. But FLENS should be considered a building block for numerical linear algebra. It extends the scope of C++ for features that are necessary for doing numerical linear algebra. That means it is possible to also realize new approaches in this field. For example realizing ideas from Plasma, Magma, etc.

Examples and Tutorial

Session 1

  • Full Storage Schemes and General Matrices.

  • Array Storage and Dense Vectors.

  • Accessing Raw Data Pointers and Strides.

  • Triangular/Trapezoidal Matrices with Full Storage.

  • Symmetric and Hermitian Matrices with Full Storage.

  • Basic Linear Algebra Operations (BLAS).

  • Using Operators for BLAS.

  • Coding a High Performance LU Factorization with FLENS.

  • Numerical Linear Algebra (FLENS-LAPACK, LAPACK).


Compiler Requirements

FLENS uses some of the C++11 features and therefore requires a recent C++ compiler:

Obtain FLENS (Trinity)

You can clone the Trinity branch from GitHub

git clone --recursive -b Trinity

Mailing List

Join the mailing list!