Subprogramas de Álgebra Lineal Básica

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 16 de marzo de 2021; las comprobaciones requieren 2 ediciones .
BLAS
Tipo de interfaz de programación de aplicaciones y biblioteca de funciones
Escrito en Fortran y C
Primera edición 1979
ultima versión 3.10.0 (29 de junio de 2021)
Sitio web netlib.org/blas/

BLAS ( Subprogramas de álgebra lineal básica en inglés   - subrutinas de álgebra lineal básica) es un estándar de facto para la interfaz de programación de aplicaciones para crear bibliotecas que realizan operaciones básicas de álgebra lineal , como la multiplicación de vectores y matrices.

Publicado por primera vez en 1979 y utilizado para crear paquetes grandes como LAPACK . Los fabricantes de hardware como Intel , entre otros, han desarrollado implementaciones altamente optimizadas de la interfaz BLAS, que se utilizan de forma intensiva en la informática de alto rendimiento (por ejemplo, ATLAS, BLAS portátil de optimización automática).

El LINPACK Benchmark se basa en gran medida en DGEMM , una subrutina de BLAS.

Funcionalidad

La funcionalidad de BLAS se divide en tres niveles.

Nivel 1

Este nivel contiene operaciones vectoriales de la forma:

operaciones de producto escalar , tomando la norma de un vector , y otras operaciones.

Nivel 2

Este nivel contiene operaciones matriciales-vectoriales de la forma:

solución para con una matriz triangular y otras operaciones.

Nivel 3

Contiene operaciones matriz-matriz de la forma:

solución de matriz triangular y otras operaciones. Este nivel contiene la operación GEMM ( General Matrix Multiply ) ampliamente utilizada . 

Implementaciones

Refblas La implementación de referencia oficial de netlib . Las versiones C y Fortran 77 están disponibles . Acelerar Framework de Apple para Mac OS X , incluidas versiones optimizadas de BLAS y LAPACK para procesadores PowerPC e Intel Core . LCA Biblioteca matemática Core AMD compatible con los procesadores AMD Athlon y Opteron en Linux y Windows . ATLAS Software de álgebra lineal de optimización automática ( en inglés:  Automatically Tuned Linear Algebra Software ), una implementación de código abierto de la interfaz BLAS para C y Fortran 77. SDK de CUDA NVIDIA CUDA SDK incluye la funcionalidad BLAS (cuBLAS) para escribir programas en C para tarjetas de video de la serie GeForce 8 , GeForce 200 , GeForce 300 (Fermi) . ESSL Biblioteca de subrutinas científicas y de ingeniería de IBM que admite la arquitectura PowerPC en AIX y Linux .  llama libre Implementación de una biblioteca de álgebra lineal que incluye BLAS por el proyecto FLAME. Ir a BLAS Implementación de Kazushige Goto . HP MLIB Biblioteca matemática de HP que admite arquitecturas IA-64 , PA-RISC , x86 y Opteron en HP-UX y Linux . Intel MKL Intel Math Kernel Library compatible con procesadores Intel en Linux , Windows y Mac OS X.  MatemáticasKeisan Biblioteca matemática NEC compatible con la arquitectura NEC SX en SUPER-UX e Itanium en Linux . PDLIB/SX Biblioteca matemática de dominio público de NEC para el sistema NEC SX-4 .  SCSL La  biblioteca de software de computación científica de SGI contiene implementaciones de BLAS y LAPACK para estaciones de trabajo SGI Irix . Rendimiento solar Linaray Sun Performance Library contiene BLAS y LAPACK optimizados para las arquitecturas SPARC y AMD64 en Solaris 8, 9 y 10. uBLAS Una biblioteca de clases de plantilla de C++ que proporciona la funcionalidad BLAS. Parte de la biblioteca de Boost . A diferencia de otras implementaciones, uBLAS se enfoca más en la corrección del algoritmo utilizando funciones avanzadas de C++ que en el alto rendimiento. GSL La Biblioteca Científica GNU contiene una implementación C no optimizada multiplataforma que se distribuye bajo la GPL de GNU . 

CLBlast

Una biblioteca de C++ multiplataforma ( Windows , Linux , MacOS ) implementada con OpenCL puede ejecutarse en una amplia gama de GPU u otros dispositivos compatibles con la computación paralela.

Véase también

Enlaces