Software Open Access
Martin Köhler; Jens Saak
The BLAS library is one of the central libraries for the implementation of numerical algorithms. It serves as the basis for many other numerical libraries like LAPACK, PLASMA or MAGMA (to mention only the most obvious). Thus a fast BLAS implementation is the key ingredient for efficient applications in this area. However, for debugging or benchmarking purposes it is often necessary to replace the underlying BLAS implementation of an application, e.g. to disable threading or to include debugging symbols. The FlexiBLAS library is a novel framework that allows one to exchange the BLAS implementation at run-time via an environment variable. Our concept neither requires relinkage, nor recompilation of the application. For only a very little overhead the framework naturally extends to a minimal profiling setup that allows one to count numbers of calls to the BLAS routines used and measure the time spent therein. Beside the 140 BLAS routines the FlexiBLAS library also provides wrappers around the LAPACK routines from LAPACK 3.4.0 to 3.7.0.