Basic Linear Algebra Subprograms
De Wikipedia, la enciclopedia encyclopedia
Basic Linear Algebra Subprograms (BLAS), en español Subprogramas Básicos de Álgebra Lineal, es una especificación que define un conjunto de rutinas de bajo nivel para realizar operaciones comunes de álgebra lineal tales como la suma de vectores, multiplicación escalar, producto escalar, combinaciones lineales y multiplicación de matrices. Son las rutinas estándar de facto de bajo nivel para bibliotecas de álgebra lineal, con bindings para C (interfaz CBLAS) y Fortran (interfaz BLAS). 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. Las implementaciones de BLAS se pueden aprovechar de la existencia de hardware especial de punto flotante, tales como registros vectoriales o instrucciones SIMD.
BLAS | ||
---|---|---|
Información general | ||
Tipo de programa | interfaz de programación de aplicaciones | |
Lanzamiento inicial | 1979 | |
Información técnica | ||
Programado en | Fortran | |
Plataformas admitidas | Multiplataforma | |
Versiones | ||
Última versión estable | 3.10.0 ( 2021 de julio del 29) | |
Enlaces | ||
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.[2] Esta biblioteca se conoce como la implementación de referencia y es de dominio público (a veces se la conoce de manera confusa como la biblioteca BLAS), aunque no está optimizada en velocidad.
La mayoría de las bibliotecas que ofrecen rutinas de álgebra lineal se ajustan a la interfaz BLAS, lo que permite a los usuarios de la biblioteca desarrollar programas independientes de la biblioteca BLAS que se esté utilizando. Ejemplos de bibliotecas BLAS incluyen: AMD Core Math Library (ACML), Arm Performance Libraries,[3] ATLAS, Intel Math Kernel Library (MKL) y OpenBLAS. ACML ya no es compatible con su productor.[4] ATLAS es una biblioteca portátil que se optimiza automáticamente para una arquitectura arbitraria. MKL es una biblioteca de proveedor de software gratuito[5] y propietaria[6] optimizada para x86 y x86-64 con un énfasis en el rendimiento de los procesadores Intel.[7] OpenBLAS es una biblioteca de código abierto que está optimizada manualmente para muchas de las arquitecturas populares. Los benchmark de LINPACK se basan en gran medida en la gemm
rutina BLAS para sus mediciones de rendimiento.
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.