Content

Tutorial

FLENS has many great features. Looking through all the examples given in this tutorial should give you a first impression and a quick start.

More tutorials are on the way ...

... so stay tuned.

General Matrix with Full Storage

Page 1

We show how to allocate and initialize a general matrix.

Page 2

Shows how to change the default index base which is One.

Page 3

We introduce the concept of matrix views. Matrix views can be used to reference other matrix parts. Furthermore it allows the creation of a FLENS matrix(view) from an existing C-array copying the C-array. The latter is very useful for interfacing with other libraries.

Page 4

We introduce dense vectors.

Page 5

Working with complex vectors and matrices.

Page 6

Element-wise matrix/vector operations.

Page 7

How FLENS ensures const-correctness and MTL4 not.

Page 8

Why matrix views are so important for numerical linear algebra and high performance computing: Implementation of a blocked and unblock \(LU\) factorization.

BLAS, CXXBLAS, FLENS-BLAS and Overloaded Operators

Page 1

Using CXXBLAS directly. CXXBLAS provides a generic BLAS implementation but also can serve as a interface to high performance BLAS implementations.

Page 2

Using FLENS-BLAS which is a high-level interface to CXXBLAS.

Page 3

Using overloaded operators for BLAS operations. This is an even higher-level BLAS interface. FLENS has some nice feature that allows logging how BLAS actually gets used for the evaluation of complicated linear algebra operations.

Page 4

How FLENS helps you avoiding the creation of temporaries when evaluation linear algebra expressions.

Page 5

Equivalence of FLENS-BLAS and overloaded operation notation.

Symmetric and Triangular Matrices with Full Storage

Page 1

We show how to create triangular and symmetric views from a general matrix.

FLENS-LAPACK

Page 1

Computing a LU factorization.

Page 2

Computing a QR factorization.

Page 3

Solving systems of linear equations.

Page 4

Computing eigenvalues and eigenvectors.

Using an external LAPACK implementation

Page 1

Using CXXLAPACK (Low-Level LAPACK interface) directly.

Page 2

Creating a high-level interface for CXXLAPACK.

Page 3

Using FLENS-LAPACK as MKL, ACML or LAPACK Font-End.

Sparse Matrices (Experimental)

Page 1

Setup a matrix in coordinate storage and convert it to compressed column storage.

Page 2

Setup a matrix in coordinate storage, convert it to compressed column storage and finally use SuperLU to solve a sparse system of linear equations.

Page 3

Setup a matrix in coordinate storage and convert it to compressed row storage.

Page 4

Setup a matrix in coordinate stoage, convert it to compressed row storage and finally use SuperLU to solve a sparse system of linear equations.

Page 5

Iterative Solver: Conjugated Gradient Method.

Define your own Matrix/Vector Types

Page 1

Define your own symmetric matrix type MySyMatrix and apply the conjugated gradient method on it.

Page 2

We define a permutation matrix type.