Skip to content
Clément Pernet edited this page Jun 7, 2016 · 6 revisions

The FFLAS-FFPACK library

A tour of the library

FFLAS

FFLAS (Finite Field Linear Algebra Subprograms) provides the implementation of a subset of routines of the numerical BLAS, with the prefix letter f standing for finite field.

  • fgemm: for the matrix multiplication of the form C = alpha . A x B + beta . C
  • ftrsm: for the triangular system solving with matrix right/left hand side: solving U x X = B for an unknown matrix X.
  • ftrmm: for the multiplication of a triangular matrix with a rectangular matrix. X= U x B
  • fger: for the outer product of two vectors: A = u x v^T + A ...

Recently FFLAS started to also provide support for sparse matrix operations, more specifically sparse matrix vector product, using various data storage schemes.

FFPACK

FFPACK (Finite Field Linear Algebra Package) is inspired by the LAPACK library to provide functionnalities of higher level, using the kernel of a BLAS. For the computations that are identical to the numerical linear algebra lirbary, the naming convention is kept:

  • fgetrs: solving a linear system using a LU decomposition;

  • ftrtri: inverting a triangular matrix; ... However the library also provides many other routines, specific to exact linear algebra:

  • RowEchelonForm : computing the row echelon form with or without the transformation matrix

  • CharPoly, MinPoly : computing the characteristic and minimal polynomials

  • Det, Rank, NullSpaceBasis : computing the determinant, the rank, a basis of the nullspace of a matrix.

Paladin

Paladin is a C-macro based domain specific language meant to develop parallel code in fflas-ffpack and harness independently the most common parallel language and runtimes available:OpenMP; tbb, cilk, ...

Release history

Related software

Continuous integration

Build Status

Our Jenkins continuous integration system, hosted by Inria CI tests the library on the following systems:

  • linux ubuntu 14.04 32 and 64 bit
  • fedora
  • OS X with the following compilers (when available)
  • gcc v 4.8, 5.3, 6.1
  • clang v3.4
  • gcc frontend of clang (on OS-X)
  • icpc

We also test manually on a ppc64le with gcc-5.3.