stringtranslate.com

Paquete LAPAQUE

LAPACK (" L inear Algebra Package ") es una biblioteca de software estándar para álgebra lineal numérica . Proporciona rutinas para resolver sistemas de ecuaciones lineales y mínimos cuadrados lineales , problemas de valores propios y descomposición en valores singulares . También incluye rutinas para implementar las factorizaciones matriciales asociadas , como LU , QR , descomposición de Cholesky y Schur . [2] LAPACK se escribió originalmente en FORTRAN 77 , pero se trasladó a Fortran 90 en la versión 3.2 (2008). [3] Las rutinas manejan matrices reales y complejas tanto en precisión simple como doble . LAPACK se basa en una implementación subyacente de BLAS para proporcionar bloques de construcción computacionales eficientes y portátiles para sus rutinas. [2] : "BLAS como clave para la portabilidad" 

LAPACK fue diseñado como el sucesor de las rutinas de ecuaciones lineales y mínimos cuadrados lineales de LINPACK y las rutinas de valores propios de EISPACK . LINPACK , escrito en los años 1970 y 1980, fue diseñado para ejecutarse en las computadoras vectoriales modernas con memoria compartida. LAPACK, por el contrario, fue diseñado para explotar eficazmente los cachés en las arquitecturas modernas basadas en caché y el paralelismo a nivel de instrucción de los procesadores superescalares modernos , [2] : "Factores que afectan el rendimiento"  y, por lo tanto, puede ejecutarse órdenes de magnitud más rápido que LINPACK en tales máquinas, dada una implementación BLAS bien ajustada . [2] : "El BLAS como clave para la portabilidad"  LAPACK también se ha ampliado para ejecutarse en sistemas de memoria distribuida en paquetes posteriores como ScaLAPACK y PLAPACK. [4]

Netlib LAPACK tiene licencia de estilo BSD de tres cláusulas , una licencia de software libre permisiva con pocas restricciones. [5]

Esquema de nombres

Las subrutinas en LAPACK tienen una convención de nombres que hace que los identificadores sean muy compactos. Esto era necesario ya que los primeros estándares Fortran solo admitían identificadores de hasta seis caracteres de longitud, por lo que los nombres debían acortarse para ajustarse a este límite. [2] : "Esquema de nombres" 

Un nombre de subrutina LAPACK tiene el formato pmmaaa, donde:

Por ejemplo, la subrutina para resolver un sistema lineal con una matriz general (no estructurada) utilizando aritmética real de doble precisión se llama DGESV. [2] : "Ecuaciones lineales" 

Úselo con otros lenguajes de programación y bibliotecas

En la actualidad, muchos entornos de programación admiten el uso de bibliotecas con enlaces C (LAPACKE, una interfaz C estandarizada, [6] forma parte de LAPACK desde la versión 3.4.0 [7] ), lo que permite utilizar rutinas LAPACK directamente siempre que se respeten algunas restricciones. Además, muchas otras bibliotecas y herramientas de software para computación científica y numérica se construyen sobre LAPACK, como R , [8] MATLAB , [9] y SciPy . [10]

También están disponibles varios enlaces de idiomas alternativos :

Implementaciones

Al igual que con BLAS, LAPACK a veces se bifurca o se reescribe para ofrecer un mejor rendimiento en sistemas específicos. Algunas de las implementaciones son:

Acelerar
El marco de Apple para macOS e iOS , que incluye versiones optimizadas de BLAS y LAPACK. [11] [12]
LAPACK de Netlib
El LAPACK oficial.
Biblioteca Netlib ScaLAPACK
LAPACK escalable (multinúcleo), construido sobre PBLAS .
Intel MKL
Rutinas matemáticas de Intel para sus CPU x86.
OpenBLAS
Reimplementación de código abierto de BLAS y LAPACK.
Gonum LAPACK
Una implementación nativa parcial de Go .

Dado que LAPACK suele invocar rutinas BLAS subyacentes para realizar la mayor parte de sus cálculos, simplemente vincularse a una implementación BLAS mejor ajustada puede ser suficiente para mejorar significativamente el rendimiento. Como resultado, LAPACK no se reimplementa con tanta frecuencia como BLAS.

Proyectos similares

Estos proyectos proporcionan una funcionalidad similar a LAPACK, pero con una interfaz principal diferente a la de LAPACK:

Llama de la libertad
Una biblioteca de álgebra lineal densa. Tiene un contenedor compatible con LAPACK. Se puede utilizar con cualquier BLAS, aunque BLIS es la implementación preferida. [13]
Propios
Una biblioteca de encabezados para álgebra lineal. Tiene una implementación BLAS y una implementación parcial LAPACK para compatibilidad.
MAGMA
El proyecto Matrix Algebra on GPU and Multicore Architectures (MAGMA) desarrolla una biblioteca de álgebra lineal densa similar a LAPACK pero para arquitecturas heterogéneas e híbridas, incluidos sistemas multinúcleo acelerados con GPGPU .
PLASMA
El proyecto de Álgebra Lineal Paralela para Arquitecturas Multi-núcleo Escalables (PLASMA) es un reemplazo moderno de LAPACK para arquitecturas multi-núcleo. PLASMA es un marco de software para el desarrollo de operaciones asincrónicas y funciones de programación fuera de orden con un programador en tiempo de ejecución llamado QUARK que puede usarse para cualquier código que exprese sus dependencias con un gráfico acíclico dirigido . [14]

Véase también

Referencias

  1. ^ "Versión 3.12.0". 24 de noviembre de 2023. Consultado el 19 de diciembre de 2023 .
  2. ^ abcdef Anderson, E.; Bai, Z.; Bischof, C.; Blackford, S.; Demmel, J .; Dongarra, J .; Du Croz, J.; Greenbaum, A .; Hammarling, S.; McKenney, A.; Sorensen, D. (1999). Guía del usuario de LAPACK (tercera edición). Filadelfia, PA: Sociedad de Matemáticas Industriales y Aplicadas. ISBN 0-89871-447-8. Recuperado el 28 de mayo de 2022 .
  3. ^ "Notas de la versión LAPACK 3.2". 16 de noviembre de 2008.
  4. ^ "PLAPACK: Paquete de álgebra lineal paralela". www.cs.utexas.edu . Universidad de Texas en Austin . 12 de junio de 2007 . Consultado el 20 de abril de 2017 .
  5. ^ "LICENSE.txt". Netlib . Consultado el 28 de mayo de 2022 .
  6. ^ "La interfaz LAPACKE C para LAPACK". LAPACK — Paquete de álgebra lineal . Consultado el 22 de septiembre de 2024 .
  7. ^ "LAPACK 3.4.0". LAPACK — Paquete de álgebra lineal . Consultado el 22 de septiembre de 2024 .
  8. ^ "R: Biblioteca LAPACK". stat.ethz.ch . Consultado el 19 de marzo de 2022 .
  9. ^ "LAPACK en MATLAB". Centro de ayuda de Mathworks . Consultado el 28 de mayo de 2022 .
  10. ^ "Funciones LAPACK de bajo nivel". Manual de SciPy v1.8.1 . Consultado el 28 de mayo de 2022 .
  11. ^ "Guías y código de muestra". developer.apple.com . Consultado el 7 de julio de 2017 .
  12. ^ "Guías y código de muestra". developer.apple.com . Consultado el 7 de julio de 2017 .
  13. ^ "amd/libflame: biblioteca basada en objetos de alto rendimiento para cálculos DLA". GitHub . AMD. 25 de agosto de 2020.
  14. ^ "ICL". icl.eecs.utk.edu . Consultado el 7 de julio de 2017 .