Basic Linear Algebra Subprograms

Aunque la especificación de BLAS es general, las implementaciones particulares están a menudo optimizadas para conseguir mayor aceleración en una máquina o arquitectura particular, de forma que su uso puede conllevar un incremento sustancial del rendimiento.

Tuvo origen como biblioteca de Fortran en 1979[1]​ y su interfaz fue estandarizada por el Foro Técnico BLAS (BLAST), cuyo último informe sobre BLAS se puede encontrar en el sitio web de netlib.

Muchas aplicaciones de software numérico utilizan bibliotecas compatibles con BLAS para realizar cálculos de álgebra lineal, como Armadillo, LAPACK, LINPACK, GNU Octave, Mathematica,[8]​ MATLAB,[9]​ NumPy,[10]​ R y Julia.

[13]​ Estas operaciones del kernel se convirtieron en subrutinas definidas que las bibliotecas matemáticas podían llamar.

Por ejemplo, LINPACK es una biblioteca de propósito general que se puede usar en muchas máquinas diferentes sin modificaciones.

Para obtener rendimiento, diferentes máquinas pueden usar versiones personalizadas de BLAS.

A medida que las arquitecturas informáticas se volvieron más sofisticadas, aparecieron las máquinas vectoriales.

[15]​ Otras funciones de la máquina estuvieron disponibles y también podrían explotarse.

En 1987 y 1988, se identificaron BLAS de nivel 3 para realizar operaciones matriz-matriz.

[16]​ El BLAS original se refería solo a vectores y matrices densamente almacenados.

Se han abordado otras extensiones de BLAS, como para matrices dispersas.

También se realizan pruebas para ver si la copia de matrices y vectores mejora el rendimiento.

También se incluyen en el Nivel 3 rutinas para resolver donde T es una matriz triangular, entre otras funcionalidades.

Una implementación altamente ajustada basada en estas ideas es parte de GotoBLAS, OpenBLAS y BLIS.