Fastmat: A C++ Library for Multi-Index Array Computations
Abstract
In this paper we introduce and describe an efficient thread-safe
matrix library for computing element/cell residuals and Jacobians in
Finite Elements and Finite Volumes-like codes. The library provides
a wide range of multi-index tensor operations that are normally used
in scientific numerical computations. The library implements an
algorithm for choosing the optimal computation order when a product
of several tensors is performed (i.e., the so-called `multi-product'
operation). Another key-point of the FastMat approach is that
some computations (for instance the optimal order in the
multi-product operation mentioned before) are computed in the first
iteration of the loop body and stored in a cache object, so
that in the second and subsequent executions these computations are
retrieved from the cache, and then not recomputed. The library is
open source and freely available within the multi-physics parallel
FEM code PETSc-FEM http://www.cimec.org.ar/petscfem and it can
be exploited on distributed and shared memory architectures as well
as in hybrid approaches. We studied the performance of the library
in the context of typical FEM tensor contractions.
matrix library for computing element/cell residuals and Jacobians in
Finite Elements and Finite Volumes-like codes. The library provides
a wide range of multi-index tensor operations that are normally used
in scientific numerical computations. The library implements an
algorithm for choosing the optimal computation order when a product
of several tensors is performed (i.e., the so-called `multi-product'
operation). Another key-point of the FastMat approach is that
some computations (for instance the optimal order in the
multi-product operation mentioned before) are computed in the first
iteration of the loop body and stored in a cache object, so
that in the second and subsequent executions these computations are
retrieved from the cache, and then not recomputed. The library is
open source and freely available within the multi-physics parallel
FEM code PETSc-FEM http://www.cimec.org.ar/petscfem and it can
be exploited on distributed and shared memory architectures as well
as in hybrid approaches. We studied the performance of the library
in the context of typical FEM tensor contractions.