BLAS and LAPACK Providers

BLAS, CBLAS, LAPACK, LAPACKE, ScaLAPACK, etc. are Article description::standards for linear algebra libraries defined by NetLib. Any package implementing the api for BLAS and installing the library libblas.so would be a provider for BLAS, similarly for libcblas.so, liblapack.so, etc.

Overview
Gentoo provides virtual packages for ensuring that an implementation is present,, , ,.

This ensures that during runtime one of the providers for the request virtual is going to be present.

Potential Hazards
Most providers for these packages also provide their own extensions in addition to the standard library api demanded by NetLib.

This can create problems if a package links to libcblas.so but uses extra functions, let us say, defined by Intel MKL libraries, because it expects that the libcblas.so is the one that is provided by.

This is incorrect behaviour and the packages in Gentoo should be amended so that they link with the respective named libraries instead of the standard libblas.so/liblapack.so/...

Runtime switching
Gentoo provides a way to mix and match these packages by using eselect packages to change the library during runtime.

This is part of the Blas-lapack-switch project, which added this functionality to all provider packages.