fbpx
Wikipedia

Basic Linear Algebra Subprograms

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 álgebra lineal
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
Sitio web oficial

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.

Antecedentes

Con el advenimiento de la programación numérica, las bibliotecas de subrutinas sofisticadas se volvieron útiles. Estas bibliotecas contendrían subrutinas para operaciones matemáticas comunes de alto nivel, como búsqueda de raíces, inversión de matrices y resolución de sistemas de ecuaciones. El idioma elegido fue FORTRAN. La biblioteca de programación numérica más destacada fue el Scientific Subroutine Package (SSP) de IBM.[11]​ Estas bibliotecas de subrutinas permitieron a los programadores concentrarse en sus problemas específicos y evitar volver a implementar algoritmos conocidos. Las rutinas de la biblioteca también serían mejores que las implementaciones promedio; Los algoritmos matriciales, por ejemplo, pueden usar pivoteo completo para obtener una mejor precisión numérica. Las rutinas de la biblioteca también tendrían rutinas más eficientes. Por ejemplo, una biblioteca puede incluir un programa para resolver una matriz triangular superior. Las bibliotecas incluirían versiones de precisión simple y doble precisión de algunos algoritmos.

Inicialmente, estas subrutinas usaban bucles codificados de forma rígida para sus operaciones de bajo nivel. Por ejemplo, si una subrutina necesita realizar una multiplicación de matrices, entonces la subrutina tendría tres bucles anidados. Los programas de álgebra lineal tienen muchas operaciones comunes de bajo nivel (las llamadas operaciones "kernel", no relacionadas con los sistemas operativos).[12]​ Entre 1973 y 1977, se identificaron varias de estas operaciones del núcleo.[13]​ Estas operaciones del kernel se convirtieron en subrutinas definidas que las bibliotecas matemáticas podían llamar. Las llamadas al núcleo tenían ventajas sobre los bucles codificados de forma rígida: la rutina de la biblioteca sería más legible, habría menos posibilidades de errores y la implementación del núcleo podría optimizarse para la velocidad. Una especificación para estas operaciones del núcleo usando escalares y vectores, las subrutinas de álgebra lineal básica de nivel 1 (BLAS), se publicó en 1979.[14]​ BLAS se utilizó para implementar la biblioteca de subrutinas de álgebra lineal LINPACK.

La abstracción BLAS permite la personalización para un alto rendimiento. Por ejemplo, LINPACK es una biblioteca de propósito general que se puede usar en muchas máquinas diferentes sin modificaciones. LINPACK podría usar una versión genérica de BLAS. 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. BLAS para una máquina vectorial podría utilizar las operaciones vectoriales rápidas de la máquina.[15]

Otras funciones de la máquina estuvieron disponibles y también podrían explotarse. En consecuencia, BLAS se aumentó de 1984 a 1986 con operaciones de kernel de nivel 2 que se referían a operaciones de matriz de vectores. La jerarquía de la memoria también se reconoció como algo para explotar. Muchas computadoras tienen una memoria caché que es mucho más rápida que la memoria principal; mantener las manipulaciones de la matriz localizadas permite un mejor uso de la caché. En 1987 y 1988, se identificaron BLAS de nivel 3 para realizar operaciones matriz-matriz. El BLAS de nivel 3 fomentó los algoritmos de bloques particionados. La biblioteca LAPACK utiliza BLAS de nivel 3.[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.[17]

ATLAS

El Automatically Tuned Linear Algebra Software (ATLAS), en español: software de álgebra lineal sintonizado automáticamente, busca una implementación BLAS con mayor rendimiento. ATLAS define muchas operaciones BLAS en términos de algunas rutinas centrales y luego intenta adaptar automáticamente las rutinas centrales para tener un buen rendimiento. Se realiza una búsqueda para elegir buenos tamaños de bloque. Los tamaños de los bloques pueden depender del tamaño y la arquitectura de la memoria caché de la computadora. También se realizan pruebas para ver si la copia de matrices y vectores mejora el rendimiento. Por ejemplo, puede ser ventajoso copiar argumentos para que estén alineados en la línea de caché para que las rutinas proporcionadas por el usuario puedan utilizar instrucciones SIMD.

Funcionalidad

La funcionalidad BLAS se clasifica en tres conjuntos de rutinas llamadas "niveles", que corresponden tanto al orden cronológico de definición y publicación, como al grado del polinomio en las complejidades de los algoritmos; Las operaciones de BLAS de nivel 1 generalmente toman tiempo lineal, O(n), operaciones de nivel 2 tiempo cuadrático y operaciones de nivel 3 tiempo cúbico.[18]​ Las implementaciones modernas de BLAS suelen proporcionar los tres niveles.

Nivel 1

Este nivel consta de todas las rutinas descritas en la presentación original de BLAS (1979),[1]​ que definía solo operaciones vectoriales en matrices escalonadas : productos escalares, normas vectoriales, una adición vectorial generalizada de la forma

 

(llamado "axpy") y muchos otras operaciones.

Nivel 2

Este nivel contiene operaciones matriz-vector que incluyen, entre otras cosas, una multiplicación matriz-vector generalizada (gemv):

 

así como un solucionador de x en la ecuación lineal

 

siendo T triangular. El diseño del BLAS de nivel 2 se inició en 1984 y los resultados se publicaron en 1988. Las subrutinas de nivel 2 están especialmente destinadas a mejorar el rendimiento de los programas que utilizan BLAS en procesadores vectoriales, donde los BLAS de nivel 1 son subóptimos "porque ocultan la naturaleza matricial-vector de las operaciones del compilador".[19]

Nivel 3

Este nivel, publicado formalmente en 1990,[18]​ contiene operaciones matriz-matriz, incluida una " multiplicación general de matrices " (gemm), de la forma

 

donde A y B se pueden transponer opcionalmente o conjugar hermitian dentro de la rutina y las tres matrices pueden ser escalonadas. La multiplicación de matrices ordinaria A B se puede realizar estableciendo α en uno y C en una matriz de todos ceros del tamaño apropiado.

También se incluyen en el Nivel 3 rutinas para resolver

 

donde T es una matriz triangular, entre otras funcionalidades.

Debido a la ubicuidad de las multiplicaciones de matrices en muchas aplicaciones científicas, incluida la implementación del resto del BLAS de nivel 3, y debido a que existen algoritmos más rápidos más allá de la repetición obvia de la multiplicación de matrices y vectores, gemm es un objetivo principal de optimización para Implementadores BLAS. Por ejemplo, al descomponer uno o ambos de A, B en matrices de bloques, gemm se puede implementar de forma recursiva. Esta es una de las motivaciones para incluir el parámetro β, para que se puedan acumular los resultados de los bloques anteriores. Tenga en cuenta que esta descomposición requiere el caso especial β = 1 que optimizan muchas implementaciones, eliminando así una multiplicación por cada valor de C Esta descomposición permite una mejor localidad de referencia tanto en el espacio como en el tiempo de los datos utilizados en el producto. Esto, a su vez, aprovecha la caché del sistema.[20]​ Para sistemas con más de un nivel de caché, el bloqueo se puede aplicar una segunda vez al orden en que se utilizan los bloques en el cálculo. Ambos niveles de optimización se utilizan en implementaciones como ATLAS. Más recientemente, las implementaciones de Kazushige Goto han demostrado que el bloqueo solo para la caché L2, combinado con una cuidadosa amortización de la copia a la memoria contigua para reducir las fallas de TLB, es superior a ATLAS. Una implementación altamente ajustada basada en estas ideas es parte de GotoBLAS, OpenBLAS y BLIS.

Una variación común de gemm es gemm3m, que calcula un producto complejo usando "tres multiplicaciones de matrices reales y cinco adiciones de matrices reales en lugar de las cuatro multiplicaciones de matrices reales convencionales y dos adiciones de matrices reales", un algoritmo similar al algoritmo de Strassen descrito por primera vez por Peter. Ungar.[21]

Implementaciones

Accelerate
Marco de Apple para macOS e iOS, que incluye versiones optimizadas de BLAS y LAPACK.[22][23]
ACML
La biblioteca AMD Core Math, compatible con las CPU AMD Athlon y Opteron en Linux y Windows.[24]
C++ AMP BLAS
La biblioteca C++ AMP BLAS es una implementación de código abierto de BLAS para la extensión de lenguaje AMP de Microsoft para Visual C++.[25]
ATLAS
Software de álgebra lineal optimizado automáticamente, una implementación de código abierto de las API de BLAS para C y Fortran 77.[26]
BLIS
Marco de software de creación de instancias de bibliotecas similar a BLAS para una rápida creación de instancias. Basado en GotoBLAS.[27]
cuBLAS
BLAS optimizado para tarjetas GPU basadas en NVIDIA, que requieren pocas llamadas adicionales a la biblioteca.[28]
NVBLAS
BLAS optimizado para tarjetas GPU basadas en NVIDIA, que proporciona solo funciones de nivel 3, pero como reemplazo directo directo para otras bibliotecas BLAS.[29]
clBLAS
Una implementación OpenCL de BLAS por AMD. Parte de las bibliotecas informáticas de AMD.[30]
clBLAST
Una implementación OpenCL ajustada de BLAS.[31]
Eigen BLAS
Una biblioteca Fortran 77 y C BLAS implementada sobre la biblioteca Eigen con licencia MPL, que admite arquitecturas x86, x86 64, ARM (NEON) y PowerPC.
ESSL
Biblioteca de subrutinas científicas y de ingeniería de IBM, que admite la arquitectura PowerPC en AIX y Linux.[32]
GotoBLAS
Implementación de BLAS con licencia BSD de Kazushige Goto, ajustada en particular para Intel Nehalem / Atom, VIA Nanoprocessor, AMD Opteron.
Biblioteca científica GNU
Implementación multiplataforma de muchas rutinas numéricas. Contiene una interfaz CBLAS.
HP MLIB
Biblioteca matemática de HP compatible con arquitectura IA-64, PA-RISC, x86 y Opteron en HPUX y Linux.
Intel MKL
Intel Math Kernel Library, compatible con x86 de 32 y 64 bits, disponible de forma gratuita en Intel.[5]​ Incluye optimizaciones para CPU Intel Pentium, Core e Intel Xeon e Intel Xeon Phi ; soporte para Linux, Windows y macOS. [33]
MathKeisan
NEC bibliotecas matemáticas, apoyando arquitectura NEC SX bajo SUPER-UX e Itanium bajo Linux.[34]
Netlib BLAS
La implementación de referencia oficial en Netlib, escrita en Fortran 77.[35]
Netlib CBLAS
Interfaz C de referencia al BLAS. También es posible (y popular) llamar al Fortran BLAS de C.[36]
OpenBLAS
BLAS optimizado basado en GotoBLAS, compatible con procesadores x86, x86-64, MIPS y ARM.[37]
PDLIB / SX
NEC Mathematical Library 's de Dominio Público para el NEC SX-4 del sistema.[38]
SCSL
La biblioteca de software de computación científica de SGI contiene implementaciones BLAS y LAPACK para las estaciones de trabajo Irix de SGI.[39]
Sun Performance Library
BLAS y LAPACK optimizados para arquitecturas SPARC, Core y AMD64 en Solaris 8, 9 y 10, así como en Linux.[40]
uBLAS
Una biblioteca genérica de clases de plantillas de C++ que proporciona la funcionalidad BLAS. Parte de la biblioteca de Boost. Proporciona enlaces a muchas bibliotecas aceleradas por hardware en una notación unificadora. Además, uBLAS se centra en la corrección de los algoritmos que utilizan funciones avanzadas de C++.[41]

Bibliotecas que utilizan BLAS

Armadillo
Biblioteca de álgebra lineal C++ que apunta a un buen equilibrio entre velocidad y facilidad de uso. Emplea clases de plantilla y tiene enlaces opcionales a BLAS / ATLAS y LAPACK. Está patrocinado por NICTA (en Australia) y tiene una licencia gratuita.[42]
LAPACK
Biblioteca de álgebra lineal de nivel superior construida sobre BLAS. Como BLAS, existe una implementación de referencia, pero existen muchas alternativas como libFlame y MKL.
Mir
Biblioteca numérica genérica acelerada por LLVM para ciencia y aprendizaje automático escrita en D. Proporciona subprogramas genéricos de álgebra lineal (GLAS). Puede construirse sobre una implementación CBLAS.[43]

Bibliotecas similares (no compatibles con BLAS)

Elemental
Elemental es un software de código abierto para optimización y álgebra lineal densa y dispersa en memoria distribuida.[44]
HASEM
Biblioteca de plantillas de C++, que puede resolver ecuaciones lineales y calcular valores propios. Tiene licencia BSD.[45]
LAMA
La biblioteca para aplicaciones matemáticas aceleradas (LAMA) es una biblioteca de plantillas C++ para escribir solucionadores numéricos dirigidos a varios tipos de hardware (por ejemplo, GPU a través de CUDA u OpenCL) en sistemas de memoria distribuida, ocultando la programación específica del hardware al desarrollador del programa
MTL4
Matrix Template Library versión 4 es una biblioteca de plantillas C++ genérica que proporciona una funcionalidad BLAS densa y escasa. MTL4 establece una interfaz intuitiva (similar a MATLAB) y una amplia aplicabilidad gracias a la programación genérica.

BLAS para matrices dispersas

Se han sugerido varias extensiones de BLAS para manejar matrices dispersas a lo largo de la historia de la biblioteca; un pequeño conjunto de rutinas de kernel de matriz dispersa se estandarizó finalmente en 2002.[46]

Véase también

Referencias

  1. Lawson, C. L.; Hanson, R. J.; Kincaid, D.; Krogh, F. T. (1979). «Basic Linear Algebra Subprograms for FORTRAN usage». ACM Trans. Math. Softw. 5 (3): 308-323. doi:10.1145/355841.355847. Algorithm 539. 
  2. «BLAS Technical Forum». netlib.org. Consultado el 7 de julio de 2017. 
  3. «Arm Performance Libraries». Arm. 2020. Consultado el 2 June 2020. 
  4. . AMD. 2013. Archivado desde el original el 5 September 2015. Consultado el 26 August 2015. 
  5. «No Cost Options for Intel Math Kernel Library (MKL), Support yourself, Royalty-Free». Intel. 2015. Consultado el 31 August 2015. 
  6. «Intel Math Kernel Library (Intel MKL)». Intel. 2015. Consultado el 25 August 2015. 
  7. «Optimization Notice». Intel. 2012. Consultado el 10 April 2013. 
  8. Douglas Quinney (2003). . MSOR Connections (The Higher Education Academy) 3 (4). Archivado desde el original el 29 de octubre de 2013. 
  9. Cleve Moler (2000). «MATLAB Incorporates LAPACK». MathWorks. Consultado el 26 October 2013. 
  10. Stéfan van der Walt; S. Chris Colbert; Gaël Varoquaux (2011). «The NumPy array: a structure for efficient numerical computation». Computing in Science and Engineering 13 (2): 22-30. Bibcode:2011arXiv1102.1523V. arXiv:1102.1523. doi:10.1109/MCSE.2011.37. 
  11. Boisvert, Ronald F. (2000). «Mathematical software: past, present, and future». Mathematics and Computers in Simulation 54 (4–5): 227-241. Bibcode:2000cs........4004B. arXiv:cs/0004004. doi:10.1016/S0378-4754(00)00185-3. 
  12. Even the SSP (which appeared around 1966) had some basic routines such as RADD (add rows), CADD (add columns), SRMA (scale row and add to another row), and RINT (row interchange). These routines apparently were not used as kernel operations to implement other routines such as matrix inversion. See IBM (1970), System/360 Scientific Subroutine Package, Version III, Programmer's Manual (5th edición), International Business Machines, GH20-0205-4 ..
  13. BLAST Forum, 2001, p. 1.
  14. Lawson et al., 1979.
  15. Si bien los procesadores vectoriales finalmente cayeron en desgracia, las instrucciones vectoriales en las CPU modernas son esenciales para un rendimiento óptimo en las rutinas BLAS.
  16. BLAST Forum, 2001, pp. 1–2.
  17. BLAST Forum, 2001, p. 2.
  18. Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Duff, Iain S. (1990). «A set of level 3 basic linear algebra subprograms». ACM Transactions on Mathematical Software 16 (1): 1-17. ISSN 0098-3500. doi:10.1145/77626.79170. 
  19. Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Hanson, Richard J. (1988). «An extended set of FORTRAN Basic Linear Algebra Subprograms». ACM Trans. Math. Softw. 14: 1-17. doi:10.1145/42288.42291. 
  20. Golub, Gene H.; Van Loan, Charles F. (1996), Matrix Computations (3rd edición), Johns Hopkins, ISBN 978-0-8018-5414-9 .
  21. Van Zee, Field G.; Smith, Tyler M. (24 July 2017). «Implementing High-performance Complex Matrix Multiplication via the 3m and 4m Methods». ACM Transactions on Mathematical Software 44 (1): 1-36. doi:10.1145/3086466. 
  22. «Guides and Sample Code». developer.apple.com. Consultado el 7 de julio de 2017. 
  23. «Guides and Sample Code». developer.apple.com. Consultado el 7 de julio de 2017. 
  24. . Archivado desde el original el 30 de noviembre de 2005. Consultado el 26 de octubre de 2005. 
  25. . CodePlex (en inglés). Archivado desde el original el 8 de julio de 2017. Consultado el 7 de julio de 2017. 
  26. «Automatically Tuned Linear Algebra Software (ATLAS)». math-atlas.sourceforge.net. Consultado el 7 de julio de 2017. 
  27. blis: BLAS-like Library Instantiation Software Framework, flame, 30 de junio de 2017, consultado el 7 de julio de 2017 .
  28. «cuBLAS» (en inglés). 29 de julio de 2013. Consultado el 7 de julio de 2017. 
  29. «NVBLAS» (en inglés). 15 de mayo de 2018. Consultado el 15 de mayo de 2018. 
  30. clBLAS: a software library containing BLAS functions written in OpenCL, clMathLibraries, 3 de julio de 2017, consultado el 7 de julio de 2017 .
  31. Nugteren, Cedric (5 de julio de 2017), CLBlast: Tuned OpenCL BLAS, consultado el 7 de julio de 2017 .
  32. IBM Knowledge Centre: Engineering and Scientific Subroutine Library .
  33. «Intel Math Kernel Library (Intel MKL) | Intel Software». software.intel.com (en inglés). Consultado el 7 de julio de 2017. 
  34. Mathkeisan, NEC. «MathKeisan». www.mathkeisan.com (en inglés). Consultado el 7 de julio de 2017. 
  35. «BLAS (Basic Linear Algebra Subprograms)». www.netlib.org. Consultado el 7 de julio de 2017. 
  36. «BLAS (Basic Linear Algebra Subprograms)». www.netlib.org. Consultado el 7 de julio de 2017. 
  37. «OpenBLAS : An optimized BLAS library». www.openblas.net. Consultado el 7 de julio de 2017. 
  38. . Archivado desde el original el 22 de febrero de 2007. Consultado el 20 de mayo de 2007. 
  39. . Archivado desde el original el 13 de mayo de 2007. Consultado el 20 de mayo de 2007. 
  40. «Oracle Developer Studio». www.oracle.com. Consultado el 7 de julio de 2017. 
  41. «Boost Basic Linear Algebra - 1.60.0». www.boost.org. Consultado el 7 de julio de 2017. 
  42. «Armadillo: C++ linear algebra library». arma.sourceforge.net. Consultado el 7 de julio de 2017. 
  43. «Dlang Numerical and System Libraries». 
  44. «Elemental: distributed-memory dense and sparse-direct linear algebra and optimization — Elemental». libelemental.org. Consultado el 7 de julio de 2017. 
  45. «HASEM». SourceForge (en inglés). Consultado el 7 de julio de 2017. 
  46. Duff, Iain S.; Heroux, Michael A.; Pozo, Roldan (2002). «An Overview of the Sparse Basic Linear Algebra Subprograms: The New Standard from the BLAS Technical Forum». ACM Transactions on Mathematical Software 28 (2): 239-267. doi:10.1145/567806.567810. 

Error en la cita: La etiqueta <ref> definida en las <references> con nombre «Kazushige_2008» no se utiliza en el texto anterior.
Error en la cita: La etiqueta <ref> definida en las <references> con nombre «GotoBLAS2» no se utiliza en el texto anterior.

Error en la cita: La etiqueta <ref> definida en las <references> con nombre «Geijn_2008» no se utiliza en el texto anterior.

Otras lecturas

  • BLAST Forum (21 August 2001), Basic Linear Algebra Subprograms Technical (BLAST) Forum Standard, Knoxville, TN: University of Tennessee .
  • Dodson, D. S.; Grimes, R. G. (1982), «Remark on algorithm 539: Basic Linear Algebra Subprograms for Fortran usage», ACM Trans. Math. Softw. 8 (4): 403-404, doi:10.1145/356012.356020 .
  • Dodson, D. S. (1983), «Corrigendum: Remark on "Algorithm 539: Basic Linear Algebra Subroutines for FORTRAN usage"», ACM Trans. Math. Softw. 9: 140, doi:10.1145/356022.356032 .
  • JJ Dongarra, J. Du Croz, S. Hammarling y RJ Hanson, Algoritmo 656: Un conjunto extendido de Subprogramas de Álgebra Lineal Básica FORTRAN, ACM Trans. Matemáticas. Softw., 14 (1988), págs. 18 – 32.
  • JJ Dongarra, J. Du Croz, IS Duff y S. Hammarling, Un conjunto de subprogramas de álgebra lineal básica de nivel 3, ACM Trans. Matemáticas. Softw., 16 (1990), págs. 1 – 17.
  • JJ Dongarra, J. Du Croz, IS Duff y S. Hammarling, Algoritmo 679: Un conjunto de subprogramas de álgebra lineal básica de nivel 3, ACM Trans. Matemáticas. Softw., 16 (1990), págs. 18 – 28.
Nuevo BLAS
  • LS Blackford, J. Demmel, J. Dongarra, I. Duff, S. Hammarling, G. Henry, M. Heroux, L. Kaufman, A. Lumsdaine, A. Petitet, R. Pozo, K. Remington, RC Whaley, Un conjunto actualizado de subprogramas básicos de álgebra lineal (BLAS), ACM Trans. Matemáticas. Softw., 28-2 (2002), págs. –
  • J. Dongarra, Estándar del Foro Técnico de Subprogramas de Álgebra Lineal Básica, Revista Internacional de Aplicaciones de Alto Rendimiento y Supercomputación, 16 (1) (2002), págs. 1 – 111, y Revista internacional de aplicaciones de alto rendimiento y supercomputación, 16 (2) (2002), págs. –

Enlaces externos

  • Página de inicio de BLAS en Netlib.org
  • Preguntas frecuentes de BLAS
  • Guía de referencia rápida de BLAS de la Guía del usuario de LAPACK
  • Uno de los autores originales del BLAS analiza su creación en una entrevista de historia oral. Charles L. Lawson Entrevista de historia oral por Thomas Haigh, 6 y 7 de noviembre de 2004, San Clemente, California. Sociedad de Matemáticas Industriales y Aplicadas, Filadelfia, PA.
  • En una entrevista de historia oral, Jack Dongarra explora la relación inicial de BLAS con LINPACK, la creación de versiones de BLAS de nivel superior para nuevas arquitecturas y su trabajo posterior en el sistema ATLAS para optimizar automáticamente BLAS para máquinas particulares. Jack Dongarra, entrevista de historia oral por Thomas Haigh, 26 de abril de 2005, Universidad de Tennessee, Knoxville TN. Sociedad de Matemáticas Industriales y Aplicadas, Filadelfia, PA
  • ¿Cómo logra BLAS un rendimiento tan extremo? Diez multiplicaciones matriciales ingenuas de 1000 × 1000 (10 10 puntos flotantes multiplicados-suma) toman 15.77 segundos en 2.6 Procesador de GHz; La implementación de BLAS tarda 1,32 segundos.
  • Una descripción general de los subprogramas de álgebra lineal básica dispersa: el nuevo estándar del Foro técnico de BLAS[1]
  •   Datos: Q810007

basic, linear, algebra, subprograms, blas, español, subprogramas, básicos, Álgebra, lineal, especificación, define, conjunto, rutinas, bajo, nivel, para, realizar, operaciones, comunes, álgebra, lineal, tales, como, suma, vectores, multiplicación, escalar, pro. Basic Linear Algebra Subprograms BLAS en espanol Subprogramas Basicos de Algebra Lineal es una especificacion que define un conjunto de rutinas de bajo nivel para realizar operaciones comunes de algebra lineal tales como la suma de vectores multiplicacion escalar producto escalar combinaciones lineales y multiplicacion de matrices Son las rutinas estandar de facto de bajo nivel para bibliotecas de algebra lineal con bindings para C interfaz CBLAS y Fortran interfaz BLAS Aunque la especificacion de BLAS es general las implementaciones particulares estan a menudo optimizadas para conseguir mayor aceleracion en una maquina 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 BLASInformacion generalTipo de programaalgebra linealLanzamiento inicial1979Informacion tecnicaProgramado enFortranPlataformas admitidasMultiplataformaVersionesUltima version estable3 10 0 2021 de julio del 29 EnlacesSitio web oficial editar datos en Wikidata Tuvo origen como biblioteca de Fortran en 1979 1 y su interfaz fue estandarizada por el Foro Tecnico BLAS BLAST cuyo ultimo informe sobre BLAS se puede encontrar en el sitio web de netlib 2 Esta biblioteca se conoce como la implementacion de referencia y es de dominio publico a veces se la conoce de manera confusa como la biblioteca BLAS aunque no esta optimizada en velocidad La mayoria de las bibliotecas que ofrecen rutinas de algebra 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 este 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 portatil que se optimiza automaticamente 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 enfasis en el rendimiento de los procesadores Intel 7 OpenBLAS es una biblioteca de codigo abierto que esta 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 numerico utilizan bibliotecas compatibles con BLAS para realizar calculos de algebra lineal como Armadillo LAPACK LINPACK GNU Octave Mathematica 8 MATLAB 9 NumPy 10 R y Julia Indice 1 Antecedentes 1 1 ATLAS 2 Funcionalidad 2 1 Nivel 1 2 2 Nivel 2 2 3 Nivel 3 3 Implementaciones 3 1 Bibliotecas que utilizan BLAS 4 Bibliotecas similares no compatibles con BLAS 5 BLAS para matrices dispersas 6 Vease tambien 7 Referencias 8 Otras lecturas 9 Enlaces externosAntecedentes EditarCon el advenimiento de la programacion numerica las bibliotecas de subrutinas sofisticadas se volvieron utiles Estas bibliotecas contendrian subrutinas para operaciones matematicas comunes de alto nivel como busqueda de raices inversion de matrices y resolucion de sistemas de ecuaciones El idioma elegido fue FORTRAN La biblioteca de programacion numerica mas destacada fue el Scientific Subroutine Package SSP de IBM 11 Estas bibliotecas de subrutinas permitieron a los programadores concentrarse en sus problemas especificos y evitar volver a implementar algoritmos conocidos Las rutinas de la biblioteca tambien serian mejores que las implementaciones promedio Los algoritmos matriciales por ejemplo pueden usar pivoteo completo para obtener una mejor precision numerica Las rutinas de la biblioteca tambien tendrian rutinas mas eficientes Por ejemplo una biblioteca puede incluir un programa para resolver una matriz triangular superior Las bibliotecas incluirian versiones de precision simple y doble precision de algunos algoritmos Inicialmente estas subrutinas usaban bucles codificados de forma rigida para sus operaciones de bajo nivel Por ejemplo si una subrutina necesita realizar una multiplicacion de matrices entonces la subrutina tendria tres bucles anidados Los programas de algebra lineal tienen muchas operaciones comunes de bajo nivel las llamadas operaciones kernel no relacionadas con los sistemas operativos 12 Entre 1973 y 1977 se identificaron varias de estas operaciones del nucleo 13 Estas operaciones del kernel se convirtieron en subrutinas definidas que las bibliotecas matematicas podian llamar Las llamadas al nucleo tenian ventajas sobre los bucles codificados de forma rigida la rutina de la biblioteca seria mas legible habria menos posibilidades de errores y la implementacion del nucleo podria optimizarse para la velocidad Una especificacion para estas operaciones del nucleo usando escalares y vectores las subrutinas de algebra lineal basica de nivel 1 BLAS se publico en 1979 14 BLAS se utilizo para implementar la biblioteca de subrutinas de algebra lineal LINPACK La abstraccion BLAS permite la personalizacion para un alto rendimiento Por ejemplo LINPACK es una biblioteca de proposito general que se puede usar en muchas maquinas diferentes sin modificaciones LINPACK podria usar una version generica de BLAS Para obtener rendimiento diferentes maquinas pueden usar versiones personalizadas de BLAS A medida que las arquitecturas informaticas se volvieron mas sofisticadas aparecieron las maquinas vectoriales BLAS para una maquina vectorial podria utilizar las operaciones vectoriales rapidas de la maquina 15 Otras funciones de la maquina estuvieron disponibles y tambien podrian explotarse En consecuencia BLAS se aumento de 1984 a 1986 con operaciones de kernel de nivel 2 que se referian a operaciones de matriz de vectores La jerarquia de la memoria tambien se reconocio como algo para explotar Muchas computadoras tienen una memoria cache que es mucho mas rapida que la memoria principal mantener las manipulaciones de la matriz localizadas permite un mejor uso de la cache En 1987 y 1988 se identificaron BLAS de nivel 3 para realizar operaciones matriz matriz El BLAS de nivel 3 fomento los algoritmos de bloques particionados La biblioteca LAPACK utiliza BLAS de nivel 3 16 El BLAS original se referia solo a vectores y matrices densamente almacenados Se han abordado otras extensiones de BLAS como para matrices dispersas 17 ATLAS Editar El Automatically Tuned Linear Algebra Software ATLAS en espanol software de algebra lineal sintonizado automaticamente busca una implementacion BLAS con mayor rendimiento ATLAS define muchas operaciones BLAS en terminos de algunas rutinas centrales y luego intenta adaptar automaticamente las rutinas centrales para tener un buen rendimiento Se realiza una busqueda para elegir buenos tamanos de bloque Los tamanos de los bloques pueden depender del tamano y la arquitectura de la memoria cache de la computadora Tambien se realizan pruebas para ver si la copia de matrices y vectores mejora el rendimiento Por ejemplo puede ser ventajoso copiar argumentos para que esten alineados en la linea de cache para que las rutinas proporcionadas por el usuario puedan utilizar instrucciones SIMD Funcionalidad EditarLa funcionalidad BLAS se clasifica en tres conjuntos de rutinas llamadas niveles que corresponden tanto al orden cronologico de definicion y publicacion como al grado del polinomio en las complejidades de los algoritmos Las operaciones de BLAS de nivel 1 generalmente toman tiempo lineal O n operaciones de nivel 2 tiempo cuadratico y operaciones de nivel 3 tiempo cubico 18 Las implementaciones modernas de BLAS suelen proporcionar los tres niveles Nivel 1 Editar Este nivel consta de todas las rutinas descritas en la presentacion original de BLAS 1979 1 que definia solo operaciones vectoriales en matrices escalonadas productos escalares normas vectoriales una adicion vectorial generalizada de la forma y a x y displaystyle boldsymbol y leftarrow alpha boldsymbol x boldsymbol y llamado axpy y muchos otras operaciones Nivel 2 Editar Este nivel contiene operaciones matriz vector que incluyen entre otras cosas una multiplicacion matriz vector generalizada gemv y a A x b y displaystyle boldsymbol y leftarrow alpha boldsymbol A boldsymbol x beta boldsymbol y asi como un solucionador de x en la ecuacion lineal T x y displaystyle boldsymbol T boldsymbol x boldsymbol y siendo T triangular El diseno del BLAS de nivel 2 se inicio en 1984 y los resultados se publicaron en 1988 Las subrutinas de nivel 2 estan especialmente destinadas a mejorar el rendimiento de los programas que utilizan BLAS en procesadores vectoriales donde los BLAS de nivel 1 son suboptimos porque ocultan la naturaleza matricial vector de las operaciones del compilador 19 Nivel 3 Editar Este nivel publicado formalmente en 1990 18 contiene operaciones matriz matriz incluida una multiplicacion general de matrices gemm de la forma C a A B b C displaystyle boldsymbol C leftarrow alpha boldsymbol A boldsymbol B beta boldsymbol C donde A y B se pueden transponer opcionalmente o conjugar hermitian dentro de la rutina y las tres matrices pueden ser escalonadas La multiplicacion de matrices ordinaria A B se puede realizar estableciendo a en uno y C en una matriz de todos ceros del tamano apropiado Tambien se incluyen en el Nivel 3 rutinas para resolver B a T 1 B displaystyle boldsymbol B leftarrow alpha boldsymbol T 1 boldsymbol B donde T es una matriz triangular entre otras funcionalidades Debido a la ubicuidad de las multiplicaciones de matrices en muchas aplicaciones cientificas incluida la implementacion del resto del BLAS de nivel 3 y debido a que existen algoritmos mas rapidos mas alla de la repeticion obvia de la multiplicacion de matrices y vectores gemm es un objetivo principal de optimizacion para Implementadores BLAS Por ejemplo al descomponer uno o ambos de A B en matrices de bloques gemm se puede implementar de forma recursiva Esta es una de las motivaciones para incluir el parametro b para que se puedan acumular los resultados de los bloques anteriores Tenga en cuenta que esta descomposicion requiere el caso especial b 1 que optimizan muchas implementaciones eliminando asi una multiplicacion por cada valor de C Esta descomposicion permite una mejor localidad de referencia tanto en el espacio como en el tiempo de los datos utilizados en el producto Esto a su vez aprovecha la cache del sistema 20 Para sistemas con mas de un nivel de cache el bloqueo se puede aplicar una segunda vez al orden en que se utilizan los bloques en el calculo Ambos niveles de optimizacion se utilizan en implementaciones como ATLAS Mas recientemente las implementaciones de Kazushige Goto han demostrado que el bloqueo solo para la cache L2 combinado con una cuidadosa amortizacion de la copia a la memoria contigua para reducir las fallas de TLB es superior a ATLAS Una implementacion altamente ajustada basada en estas ideas es parte de GotoBLAS OpenBLAS y BLIS Una variacion comun de gemm es gemm3m que calcula un producto complejo usando tres multiplicaciones de matrices reales y cinco adiciones de matrices reales en lugar de las cuatro multiplicaciones de matrices reales convencionales y dos adiciones de matrices reales un algoritmo similar al algoritmo de Strassen descrito por primera vez por Peter Ungar 21 Implementaciones EditarAccelerate Marco de Apple para macOS e iOS que incluye versiones optimizadas de BLAS y LAPACK 22 23 ACML La biblioteca AMD Core Math compatible con las CPU AMD Athlon y Opteron en Linux y Windows 24 C AMP BLAS La biblioteca C AMP BLAS es una implementacion de codigo abierto de BLAS para la extension de lenguaje AMP de Microsoft para Visual C 25 ATLAS Software de algebra lineal optimizado automaticamente una implementacion de codigo abierto de las API de BLAS para C y Fortran 77 26 BLIS Marco de software de creacion de instancias de bibliotecas similar a BLAS para una rapida creacion de instancias Basado en GotoBLAS 27 cuBLAS BLAS optimizado para tarjetas GPU basadas en NVIDIA que requieren pocas llamadas adicionales a la biblioteca 28 NVBLAS BLAS optimizado para tarjetas GPU basadas en NVIDIA que proporciona solo funciones de nivel 3 pero como reemplazo directo directo para otras bibliotecas BLAS 29 clBLAS Una implementacion OpenCL de BLAS por AMD Parte de las bibliotecas informaticas de AMD 30 clBLAST Una implementacion OpenCL ajustada de BLAS 31 Eigen BLAS Una biblioteca Fortran 77 y C BLAS implementada sobre la biblioteca Eigen con licencia MPL que admite arquitecturas x86 x86 64 ARM NEON y PowerPC ESSL Biblioteca de subrutinas cientificas y de ingenieria de IBM que admite la arquitectura PowerPC en AIX y Linux 32 GotoBLAS Implementacion de BLAS con licencia BSD de Kazushige Goto ajustada en particular para Intel Nehalem Atom VIA Nanoprocessor AMD Opteron Biblioteca cientifica GNU Implementacion multiplataforma de muchas rutinas numericas Contiene una interfaz CBLAS HP MLIB Biblioteca matematica de HP compatible con arquitectura IA 64 PA RISC x86 y Opteron en HPUX y Linux Intel MKL Intel Math Kernel Library compatible con x86 de 32 y 64 bits disponible de forma gratuita en Intel 5 Incluye optimizaciones para CPU Intel Pentium Core e Intel Xeon e Intel Xeon Phi soporte para Linux Windows y macOS 33 MathKeisan NEC bibliotecas matematicas apoyando arquitectura NEC SX bajo SUPER UX e Itanium bajo Linux 34 Netlib BLAS La implementacion de referencia oficial en Netlib escrita en Fortran 77 35 Netlib CBLAS Interfaz C de referencia al BLAS Tambien es posible y popular llamar al Fortran BLAS de C 36 OpenBLAS BLAS optimizado basado en GotoBLAS compatible con procesadores x86 x86 64 MIPS y ARM 37 PDLIB SX NEC Mathematical Library s de Dominio Publico para el NEC SX 4 del sistema 38 SCSL La biblioteca de software de computacion cientifica de SGI contiene implementaciones BLAS y LAPACK para las estaciones de trabajo Irix de SGI 39 Sun Performance Library BLAS y LAPACK optimizados para arquitecturas SPARC Core y AMD64 en Solaris 8 9 y 10 asi como en Linux 40 uBLAS Una biblioteca generica de clases de plantillas de C que proporciona la funcionalidad BLAS Parte de la biblioteca de Boost Proporciona enlaces a muchas bibliotecas aceleradas por hardware en una notacion unificadora Ademas uBLAS se centra en la correccion de los algoritmos que utilizan funciones avanzadas de C 41 Bibliotecas que utilizan BLAS Editar Armadillo Biblioteca de algebra lineal C que apunta a un buen equilibrio entre velocidad y facilidad de uso Emplea clases de plantilla y tiene enlaces opcionales a BLAS ATLAS y LAPACK Esta patrocinado por NICTA en Australia y tiene una licencia gratuita 42 LAPACK Biblioteca de algebra lineal de nivel superior construida sobre BLAS Como BLAS existe una implementacion de referencia pero existen muchas alternativas como libFlame y MKL Mir Biblioteca numerica generica acelerada por LLVM para ciencia y aprendizaje automatico escrita en D Proporciona subprogramas genericos de algebra lineal GLAS Puede construirse sobre una implementacion CBLAS 43 Bibliotecas similares no compatibles con BLAS EditarElemental Elemental es un software de codigo abierto para optimizacion y algebra lineal densa y dispersa en memoria distribuida 44 HASEM Biblioteca de plantillas de C que puede resolver ecuaciones lineales y calcular valores propios Tiene licencia BSD 45 LAMA La biblioteca para aplicaciones matematicas aceleradas LAMA es una biblioteca de plantillas C para escribir solucionadores numericos dirigidos a varios tipos de hardware por ejemplo GPU a traves de CUDA u OpenCL en sistemas de memoria distribuida ocultando la programacion especifica del hardware al desarrollador del programa MTL4 Matrix Template Library version 4 es una biblioteca de plantillas C generica que proporciona una funcionalidad BLAS densa y escasa MTL4 establece una interfaz intuitiva similar a MATLAB y una amplia aplicabilidad gracias a la programacion generica BLAS para matrices dispersas EditarSe han sugerido varias extensiones de BLAS para manejar matrices dispersas a lo largo de la historia de la biblioteca un pequeno conjunto de rutinas de kernel de matriz dispersa se estandarizo finalmente en 2002 46 Vease tambien EditarAlgebra lineal numerica el tipo de problema que resuelve BLAS LAPACKReferencias Editar a b Lawson C L Hanson R J Kincaid D Krogh F T 1979 Basic Linear Algebra Subprograms for FORTRAN usage ACM Trans Math Softw 5 3 308 323 doi 10 1145 355841 355847 Algorithm 539 BLAS Technical Forum netlib org Consultado el 7 de julio de 2017 Arm Performance Libraries Arm 2020 Consultado el 2 June 2020 ACML AMD Core Math Library AMD 2013 Archivado desde el original el 5 September 2015 Consultado el 26 August 2015 a b No Cost Options for Intel Math Kernel Library MKL Support yourself Royalty Free Intel 2015 Consultado el 31 August 2015 Intel Math Kernel Library Intel MKL Intel 2015 Consultado el 25 August 2015 Optimization Notice Intel 2012 Consultado el 10 April 2013 Douglas Quinney 2003 So what s new in Mathematica 5 0 MSOR Connections The Higher Education Academy 3 4 Archivado desde el original el 29 de octubre de 2013 Cleve Moler 2000 MATLAB Incorporates LAPACK MathWorks Consultado el 26 October 2013 Stefan van der Walt S Chris Colbert Gael Varoquaux 2011 The NumPy array a structure for efficient numerical computation Computing in Science and Engineering 13 2 22 30 Bibcode 2011arXiv1102 1523V arXiv 1102 1523 doi 10 1109 MCSE 2011 37 Boisvert Ronald F 2000 Mathematical software past present and future Mathematics and Computers in Simulation 54 4 5 227 241 Bibcode 2000cs 4004B arXiv cs 0004004 doi 10 1016 S0378 4754 00 00185 3 Even the SSP which appeared around 1966 had some basic routines such as RADD add rows CADD add columns SRMA scale row and add to another row and RINT row interchange These routines apparently were not used as kernel operations to implement other routines such as matrix inversion See IBM 1970 System 360 Scientific Subroutine Package Version III Programmer s Manual 5th edicion International Business Machines GH20 0205 4 BLAST Forum 2001 p 1 Lawson et al 1979 Si bien los procesadores vectoriales finalmente cayeron en desgracia las instrucciones vectoriales en las CPU modernas son esenciales para un rendimiento optimo en las rutinas BLAS BLAST Forum 2001 pp 1 2 BLAST Forum 2001 p 2 a b Dongarra Jack J Du Croz Jeremy Hammarling Sven Duff Iain S 1990 A set of level 3 basic linear algebra subprograms ACM Transactions on Mathematical Software 16 1 1 17 ISSN 0098 3500 doi 10 1145 77626 79170 Dongarra Jack J Du Croz Jeremy Hammarling Sven Hanson Richard J 1988 An extended set of FORTRAN Basic Linear Algebra Subprograms ACM Trans Math Softw 14 1 17 doi 10 1145 42288 42291 Golub Gene H Van Loan Charles F 1996 Matrix Computations 3rd edicion Johns Hopkins ISBN 978 0 8018 5414 9 Van Zee Field G Smith Tyler M 24 July 2017 Implementing High performance Complex Matrix Multiplication via the 3m and 4m Methods ACM Transactions on Mathematical Software 44 1 1 36 doi 10 1145 3086466 Guides and Sample Code developer apple com Consultado el 7 de julio de 2017 Guides and Sample Code developer apple com Consultado el 7 de julio de 2017 Archived copy Archivado desde el original el 30 de noviembre de 2005 Consultado el 26 de octubre de 2005 C AMP BLAS Library CodePlex en ingles Archivado desde el original el 8 de julio de 2017 Consultado el 7 de julio de 2017 Automatically Tuned Linear Algebra Software ATLAS math atlas sourceforge net Consultado el 7 de julio de 2017 blis BLAS like Library Instantiation Software Framework flame 30 de junio de 2017 consultado el 7 de julio de 2017 cuBLAS en ingles 29 de julio de 2013 Consultado el 7 de julio de 2017 NVBLAS en ingles 15 de mayo de 2018 Consultado el 15 de mayo de 2018 clBLAS a software library containing BLAS functions written in OpenCL clMathLibraries 3 de julio de 2017 consultado el 7 de julio de 2017 Nugteren Cedric 5 de julio de 2017 CLBlast Tuned OpenCL BLAS consultado el 7 de julio de 2017 IBM Knowledge Centre Engineering and Scientific Subroutine Library Intel Math Kernel Library Intel MKL Intel Software software intel com en ingles Consultado el 7 de julio de 2017 Mathkeisan NEC MathKeisan www mathkeisan com en ingles Consultado el 7 de julio de 2017 BLAS Basic Linear Algebra Subprograms www netlib org Consultado el 7 de julio de 2017 BLAS Basic Linear Algebra Subprograms www netlib org Consultado el 7 de julio de 2017 OpenBLAS An optimized BLAS library www openblas net Consultado el 7 de julio de 2017 Archived copy Archivado desde el original el 22 de febrero de 2007 Consultado el 20 de mayo de 2007 Archived copy Archivado desde el original el 13 de mayo de 2007 Consultado el 20 de mayo de 2007 Oracle Developer Studio www oracle com Consultado el 7 de julio de 2017 Boost Basic Linear Algebra 1 60 0 www boost org Consultado el 7 de julio de 2017 Armadillo C linear algebra library arma sourceforge net Consultado el 7 de julio de 2017 Dlang Numerical and System Libraries Elemental distributed memory dense and sparse direct linear algebra and optimization Elemental libelemental org Consultado el 7 de julio de 2017 HASEM SourceForge en ingles Consultado el 7 de julio de 2017 Duff Iain S Heroux Michael A Pozo Roldan 2002 An Overview of the Sparse Basic Linear Algebra Subprograms The New Standard from the BLAS Technical Forum ACM Transactions on Mathematical Software 28 2 239 267 doi 10 1145 567806 567810 Error en la cita La etiqueta lt ref gt definida en las lt references gt con nombre Kazushige 2008 no se utiliza en el texto anterior Error en la cita La etiqueta lt ref gt definida en las lt references gt con nombre GotoBLAS2 no se utiliza en el texto anterior Error en la cita La etiqueta lt ref gt definida en las lt references gt con nombre Geijn 2008 no se utiliza en el texto anterior Otras lecturas EditarBLAST Forum 21 August 2001 Basic Linear Algebra Subprograms Technical BLAST Forum Standard Knoxville TN University of Tennessee Dodson D S Grimes R G 1982 Remark on algorithm 539 Basic Linear Algebra Subprograms for Fortran usage ACM Trans Math Softw 8 4 403 404 doi 10 1145 356012 356020 Dodson D S 1983 Corrigendum Remark on Algorithm 539 Basic Linear Algebra Subroutines for FORTRAN usage ACM Trans Math Softw 9 140 doi 10 1145 356022 356032 JJ Dongarra J Du Croz S Hammarling y RJ Hanson Algoritmo 656 Un conjunto extendido de Subprogramas de Algebra Lineal Basica FORTRAN ACM Trans Matematicas Softw 14 1988 pags 18 32 JJ Dongarra J Du Croz IS Duff y S Hammarling Un conjunto de subprogramas de algebra lineal basica de nivel 3 ACM Trans Matematicas Softw 16 1990 pags 1 17 JJ Dongarra J Du Croz IS Duff y S Hammarling Algoritmo 679 Un conjunto de subprogramas de algebra lineal basica de nivel 3 ACM Trans Matematicas Softw 16 1990 pags 18 28 Nuevo BLASLS Blackford J Demmel J Dongarra I Duff S Hammarling G Henry M Heroux L Kaufman A Lumsdaine A Petitet R Pozo K Remington RC Whaley Un conjunto actualizado de subprogramas basicos de algebra lineal BLAS ACM Trans Matematicas Softw 28 2 2002 pags J Dongarra Estandar del Foro Tecnico de Subprogramas de Algebra Lineal Basica Revista Internacional de Aplicaciones de Alto Rendimiento y Supercomputacion 16 1 2002 pags 1 111 y Revista internacional de aplicaciones de alto rendimiento y supercomputacion 16 2 2002 pags Enlaces externos EditarPagina de inicio de BLAS en Netlib org Preguntas frecuentes de BLAS Guia de referencia rapida de BLAS de la Guia del usuario de LAPACK Lawson Oral History Uno de los autores originales del BLAS analiza su creacion en una entrevista de historia oral Charles L Lawson Entrevista de historia oral por Thomas Haigh 6 y 7 de noviembre de 2004 San Clemente California Sociedad de Matematicas Industriales y Aplicadas Filadelfia PA Dongarra Oral History En una entrevista de historia oral Jack Dongarra explora la relacion inicial de BLAS con LINPACK la creacion de versiones de BLAS de nivel superior para nuevas arquitecturas y su trabajo posterior en el sistema ATLAS para optimizar automaticamente BLAS para maquinas particulares Jack Dongarra entrevista de historia oral por Thomas Haigh 26 de abril de 2005 Universidad de Tennessee Knoxville TN Sociedad de Matematicas Industriales y Aplicadas Filadelfia PA Como logra BLAS un rendimiento tan extremo Diez multiplicaciones matriciales ingenuas de 1000 1000 10 10 puntos flotantes multiplicados suma toman 15 77 segundos en 2 6 Procesador de GHz La implementacion de BLAS tarda 1 32 segundos Una descripcion general de los subprogramas de algebra lineal basica dispersa el nuevo estandar del Foro tecnico de BLAS 1 Datos Q810007 Obtenido de https es wikipedia org w index php title Basic Linear Algebra Subprograms amp oldid 144367616, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos