Los subprogramas básicos de álgebra lineal ( BLAS ) es una especificación que prescribe un conjunto de rutinas de bajo nivel para realizar operaciones comunes de álgebra lineal , como la suma de vectores , la multiplicación escalar , los productos escalares , las combinaciones lineales y la multiplicación de matrices . Son las rutinas estándar de facto de bajo nivel para bibliotecas de álgebra lineal; las rutinas tienen enlaces para C ("interfaz CBLAS") y Fortran("Interfaz BLAS"). Aunque la especificación BLAS es general, las implementaciones de BLAS a menudo se optimizan para la velocidad en una máquina en particular, por lo que su uso puede traer beneficios sustanciales de rendimiento. Las implementaciones de BLAS aprovecharán hardware de punto flotante especial, como registros vectoriales o instrucciones SIMD .
Lanzamiento estable | 3.8.0 / 12 de noviembre de 2017 |
---|---|
Escrito en | depende de la implementación |
Plataforma | Multiplataforma |
Tipo | Biblioteca |
Sitio web | www |
Se originó como una biblioteca Fortran en 1979 [1] y su interfaz fue estandarizada por el Foro Técnico BLAS (BLAST), cuyo último informe BLAS se puede encontrar en el sitio web netlib . [2] Esta biblioteca de Fortran se conoce como la implementación de referencia (a veces confusamente conocida como la biblioteca BLAS) y no está optimizada para la velocidad, pero es de dominio público . [3] [4]
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 que son indiferentes a la biblioteca BLAS que se está utilizando. Ejemplos de bibliotecas BLAS incluyen: OpenBLAS , BLIS (software de creación de instancias de bibliotecas similar a BLAS) , bibliotecas de rendimiento Arm, [5] ATLAS e Intel Math Kernel Library (MKL). BLIS está optimizado para la plataforma AMD . [6] ATLAS es una biblioteca portátil que se optimiza automáticamente para una arquitectura arbitraria. MKL es una biblioteca de proveedor de software gratuito [7] y propietaria [8] optimizada para x86 y x86-64 con un énfasis en el rendimiento de los procesadores Intel . [9] OpenBLAS es una biblioteca de código abierto que está optimizada manualmente para muchas de las arquitecturas populares. Los puntos de referencia de LINPACK dependen en gran medida de la rutina BLAS gemm
para sus mediciones de rendimiento.
Muchas aplicaciones de software numérico utilizan bibliotecas compatibles con BLAS para realizar cálculos de álgebra lineal, como LAPACK , LINPACK , Armadillo , GNU Octave , Mathematica , [10] MATLAB , [11] NumPy , [12] R y Julia .
Fondo
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 . [13] 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 ). [14] Entre 1973 y 1977, se identificaron varias de estas operaciones del núcleo. [15] Estas operaciones del kernel se convirtieron en subrutinas definidas que las bibliotecas matemáticas podían llamar. Las llamadas al kernel 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 kernel podría optimizarse para la velocidad. Una especificación para estas operaciones del kernel usando escalares y vectores , las subrutinas de álgebra lineal básica de nivel 1 (BLAS), se publicó en 1979. [16] 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. (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).
Otras funciones de la máquina estuvieron disponibles y también podrían explotarse. En consecuencia, BLAS se incrementó 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 particionados en bloques. La biblioteca LAPACK utiliza BLAS de nivel 3. [17]
El BLAS original se refería solo a vectores y matrices densamente almacenados. Se han abordado otras extensiones de BLAS, como para matrices dispersas. [18]
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 suelen tomar tiempo lineal , O ( n ) , tiempo cuadrático de operaciones de nivel 2 y tiempo cúbico de operaciones de nivel 3. [19] 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 definió solo operaciones vectoriales en matrices escalonadas : productos escalares , normas vectoriales , una adición vectorial generalizada de la forma
(llamado " axpy
", "ax más y") y varias otras operaciones.
Nivel 2
Este nivel contiene las operaciones de matriz-vector que incluye, entre otras cosas, un ge neralized m atrix- v multiplicación ector ( gemv
):
así como un solucionador de x en la ecuación lineal
siendo T triangular. El diseño del BLAS de Nivel 2 comenzó en 1984, con los resultados publicados en 1988. [20] 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 matriz. naturaleza vectorial de las operaciones del compilador ". [20]
Nivel 3
Este nivel, publicado formalmente en 1990, [19] contiene operaciones matriz-matriz , incluida una " multiplicación general de matrices " ( gemm
), de la forma
donde A y B pueden opcionalmente ser transpuestos o conjugados hermitian dentro de la rutina, y las tres matrices pueden ser escalonadas. La multiplicación de matrices ordinaria AB 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 las rutinas de computación.
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, [21] y porque existen algoritmos más rápidos más allá de la repetición obvia de la multiplicación de matriz-vector, gemm
es un objetivo principal de optimización para BLAS implementadores. 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 β , [ dudoso ] para que se puedan acumular los resultados de los bloques anteriores. Tenga en cuenta que esta descomposición requiere el caso especial β = 1 que muchas implementaciones optimizar para, eliminando de este modo una multiplicación para 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. [22] 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 en la memoria contigua para reducir las fallas de TLB , es superior a ATLAS . [23] Una implementación altamente ajustada basada en estas ideas es parte de GotoBLAS , OpenBLAS y BLIS .
Una variación común de gemm
es the gemm3m
, que calcula un producto complejo usando "tres multiplicaciones de matrices reales y cinco adiciones de matrices reales en lugar de las convencionales cuatro multiplicaciones de matrices reales y dos adiciones de matrices reales", un algoritmo similar al algoritmo de Strassen descrito por primera vez por Peter Ungar. [24]
Implementaciones
- Acelerar
- El marco de Apple para macOS e iOS , que incluye versiones optimizadas de BLAS y LAPACK . [25] [26]
- Bibliotecas Arm Performance
- Bibliotecas Arm Performance , que admiten procesadores Arm de 64 bits basados en AArch64 , disponibles en Arm . [5]
- ATLAS
- Software de álgebra lineal sintonizado automáticamente , una implementación de código abierto de las API de BLAS para C y Fortran 77 . [27]
- BLIS
- Marco de software de creación de instancias de bibliotecas similar a BLAS para una rápida creación de instancias. Optimizado para la mayoría de las CPU modernas. BLIS es una refactorización completa de GotoBLAS que reduce la cantidad de código que debe escribirse para una plataforma determinada. [28] [29]
- 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 ++. [30]
- cuBLAS
- BLAS optimizado para tarjetas GPU basadas en NVIDIA, que requieren pocas llamadas adicionales a la biblioteca. [31]
- 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. [32]
- clBLAS
- Una implementación OpenCL de BLAS por AMD. Parte de las bibliotecas informáticas de AMD. [33]
- clBLAST
- Una implementación de OpenCL ajustada de la mayoría de las api de BLAS. [34]
- Eigen BLAS
- Una biblioteca Fortran 77 y C BLAS implementada sobre la biblioteca Eigen con licencia MPL , compatible con 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 . [35]
- GotoBLAS
- Implementación de BLAS con licencia BSD de Kazushige Goto , sintonizada en particular para Intel Nehalem / Atom , VIA Nanoprocessor , AMD Opteron . [36]
- 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
- La biblioteca Intel Math Kernel , compatible con x86 de 32 y 64 bits, disponible de forma gratuita en Intel . [7] Incluye optimizaciones para CPU Intel Pentium , Core e Intel Xeon e Intel Xeon Phi ; soporte para Linux , Windows y macOS . [37]
- MathKeisan
- NEC biblioteca 's matemáticas, apoyando arquitectura NEC SX bajo SUPER-UX y Itanium bajo Linux [38]
- Netlib BLAS
- La implementación de referencia oficial en Netlib , escrita en Fortran 77 . [39]
- Netlib CBLAS
- Interfaz C de referencia al BLAS. También es posible (y popular) llamar al Fortran BLAS de C. [40]
- OpenBLAS
- BLAS optimizado basado en GotoBLAS, compatible con procesadores x86 , x86-64 , MIPS y ARM . [41]
- PDLIB / SX
- NEC Mathematical Library 's de Dominio Público para el NEC SX-4 del sistema. [42]
- rocBLAS
- Implementación que se ejecuta en GPU AMD a través de ROCm . [43]
- 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 . [44]
- Biblioteca de rendimiento solar
- BLAS y LAPACK optimizados para arquitecturas SPARC , Core y AMD64 en Solaris 8, 9 y 10, así como en Linux. [45]
- 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 ++. [46]
Bibliotecas que utilizan BLAS
- Armadillo
- Armadillo es una biblioteca de álgebra lineal de 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. [47]
- LAPACK
- LAPACK es una biblioteca de álgebra lineal de nivel superior construida sobre BLAS. Al igual que BLAS, existe una implementación de referencia, pero existen muchas alternativas como libFlame y MKL.
- Mir
- Un LLVM acelerada‖ biblioteca numérica genérica para el aprendizaje de la ciencia y la máquina escrito en D . Proporciona subprogramas genéricos de álgebra lineal (GLAS). Puede construirse sobre una implementación CBLAS. [48]
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 . [49]
- HASEM
- es una biblioteca de plantillas de C ++, capaz de resolver ecuaciones lineales y calcular valores propios. Tiene licencia BSD. [50]
- 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
- La biblioteca de plantillas de Matrix versión 4 es una biblioteca de plantillas genérica de C ++ que proporciona una funcionalidad BLAS escasa y densa. MTL4 establece una interfaz intuitiva (similar a MATLAB ) y una amplia aplicabilidad gracias a la programación genérica .
BLAS escaso
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 finalmente se estandarizó en 2002. [51]
Ver también
- Lista de bibliotecas numéricas
- Math Kernel Library , biblioteca matemática optimizada para la arquitectura Intel ; incluye BLAS, LAPACK
- Álgebra lineal numérica , el tipo de problema que resuelve BLAS
Referencias
- ^ a b * Lawson, CL; Hanson, RJ; Kincaid, D .; Krogh, FT (1979). "Subprogramas básicos de álgebra lineal para uso de FORTRAN". ACM Trans. Matemáticas. Softw . 5 (3): 308–323. doi : 10.1145 / 355841.355847 . hdl : 2060/19780018835 . S2CID 6585321 . Algoritmo 539.
- ^ "Foro Técnico BLAS" . netlib.org . Consultado el 7 de julio de 2017 .
- ^ blaseman Archivado el 12 de octubre de 2016 en Wayback Machine "Los productos son las implementaciones de los subprogramas de álgebra lineal básica (BLAS) y LAPACK (paquete de álgebra lineal) de dominio público, que han sido desarrollados por grupos de personas como el profesor Jack Dongarra, Universidad de Tennessee, EE. UU. Y todos publicados en WWW (URL: http://www.netlib.org/ ) ". [ enlace muerto permanente ]
- ^ Jack Dongarra; Gene Golub; Eric Grosse; Cleve Moler; Keith Moore. "Netlib y NA-Net: construyendo una comunidad científica informática" (PDF) . netlib.org . Consultado el 13 de febrero de 2016 .
El repositorio de software Netlib se creó en 1984 para facilitar la distribución rápida de rutinas de software de dominio público para su uso en computación científica.
- ^ a b "Bibliotecas Arm Performance" . Brazo . 2020 . Consultado el 16 de diciembre de 2020 .
- ^ https://developer.amd.com/amd-aocl/blas-library/
- ^ a b "Opciones sin costo para Intel Math Kernel Library (MKL), soporte usted mismo, libre de regalías" . Intel . 2015 . Consultado el 31 de agosto de 2015 .
- ^ "Biblioteca de kernel de matemáticas de Intel (Intel MKL)" . Intel . 2015 . Consultado el 25 de agosto de 2015 .
- ^ "Aviso de optimización" . Intel . 2012 . Consultado el 10 de abril de 2013 .
- ^ Douglas Quinney (2003). "Entonces, ¿qué hay de nuevo en Mathematica 5.0?" (PDF) . Conexiones MSOR . La Academia de Educación Superior. 3 (4). Archivado desde el original (PDF) el 29 de octubre de 2013.
- ^ Cleve Moler (2000). "MATLAB incorpora LAPACK" . MathWorks . Consultado el 26 de octubre de 2013 .
- ^ Stéfan van der Walt; S. Chris Colbert y Gaël Varoquaux (2011). "La matriz NumPy: una estructura para el cálculo numérico eficiente". Computación en Ciencias e Ingeniería . 13 (2): 22–30. arXiv : 1102.1523 . Código bibliográfico : 2011arXiv1102.1523V . doi : 10.1109 / MCSE.2011.37 . S2CID 16907816 .
- ^ Boisvert, Ronald F. (2000). "Software matemático: pasado, presente y futuro". Matemáticas y Computación en Simulación . 54 (4–5): 227–241. arXiv : cs / 0004004 . Bibcode : 2000cs ........ 4004B . doi : 10.1016 / S0378-4754 (00) 00185-3 . S2CID 15157725 .
- ^ Incluso el SSP (que apareció alrededor de 1966) tenía algunas rutinas básicas como RADD (agregar filas), CADD (agregar columnas), SRMA (escalar fila y agregar a otra fila) y RINT (intercambio de filas). Estas rutinas aparentemente no se usaron como operaciones del kernel para implementar otras rutinas como la inversión de matrices. Ver IBM (1970), System / 360 Scientific Subroutine Package, Versión III, Programmer's Manual (5th ed.), International Business Machines, GH20-0205-4.
- ^ Foro BLAST 2001 , p. 1.
- ^ Lawson y col. 1979 .
- ^ Foro BLAST 2001 , págs. 1-2.
- ^ Foro BLAST 2001 , p. 2.
- ^ a b Dongarra, Jack J .; Du Croz, Jeremy; Hammarling, Sven; Duff, Iain S. (1990). "Un conjunto de subprogramas básicos de álgebra lineal de nivel 3". Transacciones ACM en software matemático . 16 (1): 1-17. doi : 10.1145 / 77626.79170 . ISSN 0098-3500 . S2CID 52873593 .
- ^ a b Dongarra, Jack J .; Du Croz, Jeremy; Hammarling, Sven; Hanson, Richard J. (1988). "Un conjunto extendido de subprogramas de álgebra lineal básica FORTRAN". ACM Trans. Matemáticas. Softw . 14 : 1-17. CiteSeerX 10.1.1.17.5421 . doi : 10.1145 / 42288.42291 . S2CID 3579623 .
- ^ Goto, Kazushige ; van de Geijn, Robert A. (2008). "Implementación de alto rendimiento del BLAS de nivel 3" (PDF) . Transacciones ACM en software matemático . 35 (1): 1–14. doi : 10.1145 / 1377603.1377607 . S2CID 14722514 .
- ^ Golub, Gene H .; Van Loan, Charles F. (1996), Matrix Computations (3.a ed.), Johns Hopkins, ISBN 978-0-8018-5414-9
- ^ Goto, Kazushige ; van de Geijn, Robert A. (2008). "Anatomía de la multiplicación de matrices de alto rendimiento". Transacciones ACM en software matemático . 34 (3): 12: 1–12: 25. CiteSeerX 10.1.1.111.3873 . doi : 10.1145 / 1356052.1356053 . ISSN 0098-3500 . S2CID 9359223 .(25 páginas) [1]
- ^ Van Zee, Field G .; Smith, Tyler M. (24 de julio de 2017). "Implementación de la multiplicación de matrices complejas de alto rendimiento a través de los métodos de 3 my 4 m". Transacciones ACM en software matemático . 44 (1): 1–36. doi : 10.1145 / 3086466 . S2CID 25580883 .
- ^ "Guías y código de muestra" . developer.apple.com . Consultado el 7 de julio de 2017 .
- ^ "Guías y código de muestra" . developer.apple.com . Consultado el 7 de julio de 2017 .
- ^ "Software de álgebra lineal sintonizado automáticamente (ATLAS)" . math-atlas.sourceforge.net . Consultado el 7 de julio de 2017 .
- ^ blis: Marco de software de creación de instancias de bibliotecas similar a BLAS , flame, 2017-06-30 , consultado el 2017-07-07
- ^ Repositorio BLIS GitHub
- ^ "Biblioteca C ++ AMP BLAS" . CodePlex . Consultado el 7 de julio de 2017 .
- ^ "cuBLAS" . Desarrollador NVIDIA . 2013-07-29 . Consultado el 7 de julio de 2017 .
- ^ "NVBLAS" . Desarrollador NVIDIA . 2018-05-15 . Consultado el 15 de mayo de 2018 .
- ^ clBLAS: una biblioteca de software que contiene funciones BLAS escritas en OpenCL , clMathLibraries, 2017-07-03 , recuperado 2017-07-07
- ^ Nugteren, Cedric (2017-07-05), CLBlast: Tuned OpenCL BLAS , consultado el 2017-07-07
- ^ IBM Knowledge Center: biblioteca de subrutinas científicas y de ingeniería
- ^ Milfeld, Kent. "GotoBLAS2" . Centro de Computación Avanzada de Texas . Archivado desde el original el 23 de marzo de 2020 . Consultado el 28 de agosto de 2013 .
- ^ "Biblioteca de núcleo matemático de Intel (Intel MKL) | Software Intel" . software.intel.com . Consultado el 7 de julio de 2017 .
- ^ Mathkeisan, NEC. "MathKeisan" . www.mathkeisan.com . Consultado el 7 de julio de 2017 .
- ^ "BLAS (Subprogramas de álgebra lineal básica)" . www.netlib.org . Consultado el 7 de julio de 2017 .
- ^ "BLAS (Subprogramas de álgebra lineal básica)" . www.netlib.org . Consultado el 7 de julio de 2017 .
- ^ "OpenBLAS: una biblioteca BLAS optimizada" . www.openblas.net . Consultado el 7 de julio de 2017 .
- ^ "Copia archivada" . Archivado desde el original el 22 de febrero de 2007 . Consultado el 20 de mayo de 2007 .CS1 maint: copia archivada como título ( enlace )
- ^ "rocBLAS" . rocmdocs.amd.com . Consultado el 21 de mayo de 2021 .
- ^ "Copia archivada" . Archivado desde el original el 13 de mayo de 2007 . Consultado el 20 de mayo de 2007 .CS1 maint: copia archivada como título ( enlace )
- ^ "Oracle Developer Studio" . www.oracle.com . Consultado el 7 de julio de 2017 .
- ^ "Impulsar álgebra lineal básica - 1.60.0" . www.boost.org . Consultado el 7 de julio de 2017 .
- ^ "Armadillo: biblioteca de álgebra lineal C ++" . arma.sourceforge.net . Consultado el 7 de julio de 2017 .
- ^ "Bibliotecas numéricas y de sistema Dlang" .
- ^ "Elemental: optimización y álgebra lineal densa y dispersa-directa de memoria distribuida - Elemental" . libelemental.org . Consultado el 7 de julio de 2017 .
- ^ "HASEM" . SourceForge . Consultado el 7 de julio de 2017 .
- ^ Duff, Iain S .; Heroux, Michael A .; Pozo, Roldan (2002). "Una descripción general de los subprogramas de álgebra lineal básica dispersa: el nuevo estándar del Foro técnico BLAS". Transacciones ACM en software matemático . 28 (2): 239-267. doi : 10.1145 / 567806.567810 . S2CID 9411006 .
Otras lecturas
- Foro BLAST (2001-08-21), Estándar del Foro Técnico de Subprogramas de Álgebra Lineal Básica (BLAST) , Knoxville, TN: Universidad de Tennessee
- Dodson, DS; Grimes, RG (1982), "Observación sobre el algoritmo 539: Subprogramas básicos de álgebra lineal para el uso de Fortran", ACM Trans. Matemáticas. Softw. , 8 (4): 403–404, doi : 10.1145 / 356012.356020 , S2CID 43081631
- Dodson, DS (1983), "Corrigendum: Observación sobre" Algoritmo 539: Subrutinas básicas de álgebra lineal para el uso de FORTRAN " ", ACM Trans. Matemáticas. Softw. , 9 : 140, doi : 10.1145 / 356022.356032 , S2CID 22163977
- 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. 135-151.
- 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. 115-199.
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
- Lawson Oral History 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.
- Dongarra Oral History 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 de matriz ingenuas de 1000 × 1000 (10 10 puntos flotantes multiplicados-suma) toman 15,77 segundos en un procesador de 2,6 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 [2]