fbpx
Wikipedia

LAPACK

LAPACK, acrónimo de Linear Algebra Package (en español, Paquete de Álgebra Lineal) es una biblioteca 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 de valores singulares. También incluye rutinas para implementar las factorizaciones matriciales asociadas como la descomposición LU, QR, Cholesky y Schur. LAPACK se escribió originalmente en FORTRAN 77, pero se trasladó a Fortran 90 en la versión 3.2 (2008).[1]​ Las rutinas manejan matrices tanto reales como complejas con precisión simple y doble.

LAPACK
Información general
Tipo de programa software libre
Licencia BSD
Información técnica
Programado en Fortran
Versiones
Última versión estable 3.9.0
Enlaces
Sitio web oficial

LAPACK fue diseñada como la sucesora de las ecuaciones lineales y las rutinas lineales de mínimos cuadrados de LINPACK y las rutinas de valores propios de EISPACK. LINPACK, escrita en las décadas de 1970 y 1980, fue diseñada para ejecutarse en las entonces modernas computadoras vectoriales con memoria compartida. LAPACK, por el contrario, fue diseñada para explotar eficazmente las memorias caché en arquitecturas modernas basadas en caché y, por tanto, poder ejecutar órdenes de magnitud más rápido que LINPACK en tales máquinas, para una implementación BLAS bien ajustada. LAPACK también se ha ampliado para ejecutarse en sistemas de memoria distribuida en paquetes posteriores como ScaLAPACK y PLAPACK. [2]

LAPACK tiene una licencia BSD de tres cláusulas, una licencia de software libre permisiva con pocas restricciones.

Nomenclatura

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

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

  • p es un código de una letra que indica el tipo de constantes numéricas utilizadas. S, D representan aritmética de coma flotante real respectivamente en precisión simple y doble, mientras que C y Z representan aritmética compleja con precisión simple y doble respectivamente. La versión más reciente, LAPACK95, utiliza subrutinas genéricas para evitar especificar explícitamente el tipo de datos.
  • mm es un código de dos letras que indica el tipo de matriz que espera el algoritmo. Los códigos para los diferentes tipos de matrices se indican a continuación; los datos reales se almacenan en un formato diferente según el tipo específico; por ejemplo, cuando se da el código DI, la subrutina espera un vector de longitud n contiene los elementos en la diagonal, mientras que cuando se da el código GE, la subrutina espera una matriz n×n contenga las entradas de la matriz.
  • aaa es un código de una a tres letras que describe el algoritmo real implementado en la subrutina, por ejemplo, SV denota una subrutina para resolver un sistema lineal, mientras que R denota una actualización de rango 1.

Como ejemplo, la subrutina para resolver un sistema lineal con una matriz general (no estructurada) usando aritmética real de doble precisión se llama DGESV.

Tipos de matriz en la nomenclatura de LAPACK
Nombre Descripción
BD matriz bidiagonal
DI matriz diagonal
GB matriz de banda general
GE matriz general (es decir, asimétrica, en algunos casos rectangular)
GG matrices generales, problema generalizado (es decir, un par de matrices generales)
GT matriz tridiagonal general
HB (complejo) Matriz de bandas hermitianas
HE (complejo) matriz hermitiana
HG matriz de Hessenberg superior, problema generalizado (es decir, una matriz de Hessenberg y una triangular)
HP (complejo) Hermitian, matriz de almacenamiento empaquetada
HS matriz de Hessenberg superior
OP matriz ortogonal (real), matriz de almacenamiento empaquetada
OR matriz ortogonal (real)
PB matriz simétrica o matriz hermitiana banda definida positiva
PO matriz simétrica o matriz hermitiana positiva definida
PP matriz simétrica o matriz de Hermitian matriz de almacenamiento empaquetada, definida positiva
PT matriz simétrica o matriz hermitiana matriz tridiagonal definida positiva
SB matriz de banda simétrica (real)
SP matriz de almacenamiento empaquetada simétrica
ST (real) matriz simétrica matriz tridiagonal
SY matriz simétrica
TB matriz de bandas triangulares
TG matrices triangulares, problema generalizado (es decir, un par de matrices triangulares)
TP matriz de almacenamiento empaquetada triangular
TR matriz triangular (o en algunos casos cuasi-triangular)
TZ matriz trapezoidal
UN (compleja) matriz unitaria
UP (compleja) matriz de almacenamiento empaquetada unitaria

Los detalles sobre este esquema se pueden encontrar en la sección Esquema de nombres en la Guía del usuario de LAPACK.

Uso con otros lenguajes de programación

Hoy en día, muchos entornos de programación admiten el uso de bibliotecas con enlace en el lenguaje C. Las rutinas LAPACK se pueden usar como funciones en C si se atiende a algunas restricciones.

También se encuentran disponibles varios bindings alternativos:

  • Armadillo para C ++
  • IT ++ para C ++
  • LAPACK ++ para C ++
  • Lacaml para OCaml
  • CLapack para C
  • SciPy para Python

Implementaciones

Al igual que BLAS, LAPACK se bifurca o se reescribe con frecuencia para proporcionar un mejor rendimiento en sistemas específicos. Algunas de sus implementaciones son:

Accelerate
El framework de Apple para macOS e iOS, que incluye versiones optimizadas de BLAS y LAPACK.[3][4]
Netlib LAPACK
La versión oficial de LAPACK.
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.

Dado que LAPACK usa BLAS para el trabajo pesado, el simple hecho de vincularlo a una implementación BLAS mejor ajustada generalmente mejora el rendimiento lo suficiente. Es por esto por lo que LAPACK no se reimplementa con tanta frecuencia como BLAS.

Proyectos similares

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

Libflame
Una biblioteca densa de álgebra lineal. Tiene una envoltura compatible con LAPACK. Se puede utilizar con cualquier BLAS, aunque BLIS es la implementación preferida.[5]
Eigen
Una biblioteca de encabezados para álgebra lineal. Tiene una implementación BLAS y una LAPACK parcial 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 que incluyen sistemas multinúcleo acelerados con GPGPU.
PLASMA
El proyecto Álgebra lineal paralela para arquitecturas multinúcleo escalables (PLASMA) es un reemplazo moderno de LAPACK para arquitecturas multinú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 de tiempo de ejecución llamado QUARK que puede usarse para cualquier código que exprese sus dependencias con un gráfico acíclico dirigido.[6]

Referencias

  1. «LAPACK 3.2 Release Notes». 16 November 2008. 
  2. «PLAPACK: Parallel Linear Algebra Package». www.cs.utexas.edu. University of Texas at Austin. 12 June 2007. Consultado el 20 April 2017. 
  3. «Guides and Sample Code». developer.apple.com. Consultado el 7 de julio de 2017. 
  4. «Guides and Sample Code». developer.apple.com. Consultado el 7 de julio de 2017. 
  5. «amd/libflame: High-performance object-based library for DLA computations». GitHub. AMD. 25 August 2020. 
  6. «ICL». icl.eecs.utk.edu (en inglés). Consultado el 7 de julio de 2017. 

Otras lecturas

  • Anderson, E.; Bai, Z.; Bischof, C.; Blackford, S.; Demmel, J.; Dongarra, J.; Du Croz, J.; Greenbaum, A. et al. (1999). LAPACK Users' Guide (Third edición). Philadelphia, PA: Society for Industrial and Applied Mathematics. ISBN 0-89871-447-8. 

Enlaces externos

  • Página web oficial on Netlib.org
  •   Datos: Q642141

lapack, acrónimo, linear, algebra, package, español, paquete, Álgebra, lineal, biblioteca, software, estándar, para, álgebra, lineal, numérica, proporciona, rutinas, para, resolver, sistemas, ecuaciones, lineales, mínimos, cuadrados, lineales, problemas, valor. LAPACK acronimo de Linear Algebra Package en espanol Paquete de Algebra Lineal es una biblioteca software estandar para algebra lineal numerica Proporciona rutinas para resolver sistemas de ecuaciones lineales y minimos cuadrados lineales problemas de valores propios y descomposicion de valores singulares Tambien incluye rutinas para implementar las factorizaciones matriciales asociadas como la descomposicion LU QR Cholesky y Schur LAPACK se escribio originalmente en FORTRAN 77 pero se traslado a Fortran 90 en la version 3 2 2008 1 Las rutinas manejan matrices tanto reales como complejas con precision simple y doble LAPACKInformacion generalTipo de programasoftware libreLicenciaBSDInformacion tecnicaProgramado enFortranVersionesUltima version estable3 9 0EnlacesSitio web oficial editar datos en Wikidata LAPACK fue disenada como la sucesora de las ecuaciones lineales y las rutinas lineales de minimos cuadrados de LINPACK y las rutinas de valores propios de EISPACK LINPACK escrita en las decadas de 1970 y 1980 fue disenada para ejecutarse en las entonces modernas computadoras vectoriales con memoria compartida LAPACK por el contrario fue disenada para explotar eficazmente las memorias cache en arquitecturas modernas basadas en cache y por tanto poder ejecutar ordenes de magnitud mas rapido que LINPACK en tales maquinas para una implementacion BLAS bien ajustada LAPACK tambien se ha ampliado para ejecutarse en sistemas de memoria distribuida en paquetes posteriores como ScaLAPACK y PLAPACK 2 LAPACK tiene una licencia BSD de tres clausulas una licencia de software libre permisiva con pocas restricciones Indice 1 Nomenclatura 2 Uso con otros lenguajes de programacion 3 Implementaciones 3 1 Proyectos similares 4 Referencias 5 Otras lecturas 6 Enlaces externosNomenclatura EditarLas subrutinas en LAPACK tienen una convencion de nomenclatura que hace que los identificadores sean muy compactos Esto era necesario ya que los primeros estandares de Fortran solo admitian identificadores de hasta seis caracteres por lo que los nombres debian acortarse para que encajaran en este limite Un nombre de subrutina LAPACK tiene el formato pmmaaa donde p es un codigo de una letra que indica el tipo de constantes numericas utilizadas S D representan aritmetica de coma flotante real respectivamente en precision simple y doble mientras que C y Z representan aritmetica compleja con precision simple y doble respectivamente La version mas reciente LAPACK95 utiliza subrutinas genericas para evitar especificar explicitamente el tipo de datos mm es un codigo de dos letras que indica el tipo de matriz que espera el algoritmo Los codigos para los diferentes tipos de matrices se indican a continuacion los datos reales se almacenan en un formato diferente segun el tipo especifico por ejemplo cuando se da el codigo DI la subrutina espera un vector de longitud n contiene los elementos en la diagonal mientras que cuando se da el codigo GE la subrutina espera una matriz n n contenga las entradas de la matriz aaa es un codigo de una a tres letras que describe el algoritmo real implementado en la subrutina por ejemplo SV denota una subrutina para resolver un sistema lineal mientras que R denota una actualizacion de rango 1 Como ejemplo la subrutina para resolver un sistema lineal con una matriz general no estructurada usando aritmetica real de doble precision se llama DGESV Tipos de matriz en la nomenclatura de LAPACK Nombre DescripcionBD matriz bidiagonalDI matriz diagonalGB matriz de banda generalGE matriz general es decir asimetrica en algunos casos rectangular GG matrices generales problema generalizado es decir un par de matrices generales GT matriz tridiagonal generalHB complejo Matriz de bandas hermitianasHE complejo matriz hermitianaHG matriz de Hessenberg superior problema generalizado es decir una matriz de Hessenberg y una triangular HP complejo Hermitian matriz de almacenamiento empaquetadaHS matriz de Hessenberg superiorOP matriz ortogonal real matriz de almacenamiento empaquetadaOR matriz ortogonal real PB matriz simetrica o matriz hermitiana banda definida positivaPO matriz simetrica o matriz hermitiana positiva definidaPP matriz simetrica o matriz de Hermitian matriz de almacenamiento empaquetada definida positivaPT matriz simetrica o matriz hermitiana matriz tridiagonal definida positivaSB matriz de banda simetrica real SP matriz de almacenamiento empaquetada simetricaST real matriz simetrica matriz tridiagonalSY matriz simetricaTB matriz de bandas triangularesTG matrices triangulares problema generalizado es decir un par de matrices triangulares TP matriz de almacenamiento empaquetada triangularTR matriz triangular o en algunos casos cuasi triangular TZ matriz trapezoidalUN compleja matriz unitariaUP compleja matriz de almacenamiento empaquetada unitariaLos detalles sobre este esquema se pueden encontrar en la seccion Esquema de nombres en la Guia del usuario de LAPACK Uso con otros lenguajes de programacion EditarHoy en dia muchos entornos de programacion admiten el uso de bibliotecas con enlace en el lenguaje C Las rutinas LAPACK se pueden usar como funciones en C si se atiende a algunas restricciones Tambien se encuentran disponibles varios bindings alternativos Armadillo para C IT para C LAPACK para C Lacaml para OCaml CLapack para C SciPy para PythonImplementaciones EditarAl igual que BLAS LAPACK se bifurca o se reescribe con frecuencia para proporcionar un mejor rendimiento en sistemas especificos Algunas de sus implementaciones son Accelerate El framework de Apple para macOS e iOS que incluye versiones optimizadas de BLAS y LAPACK 3 4 Netlib LAPACK La version oficial de LAPACK Netlib ScaLAPACK LAPACK escalable multinucleo construido sobre PBLAS Intel MKL Rutinas matematicas de Intel para sus CPU x86 OpenBLAS Reimplementacion de codigo abierto de BLAS y LAPACK Dado que LAPACK usa BLAS para el trabajo pesado el simple hecho de vincularlo a una implementacion BLAS mejor ajustada generalmente mejora el rendimiento lo suficiente Es por esto por lo que LAPACK no se reimplementa con tanta frecuencia como BLAS Proyectos similares Editar Estos proyectos proporcionan una funcionalidad similar a LAPACK pero la interfaz principal difiere de la de LAPACK Libflame Una biblioteca densa de algebra lineal Tiene una envoltura compatible con LAPACK Se puede utilizar con cualquier BLAS aunque BLIS es la implementacion preferida 5 Eigen Una biblioteca de encabezados para algebra lineal Tiene una implementacion BLAS y una LAPACK parcial para compatibilidad MAGMA El proyecto Matrix Algebra on GPU and Multicore Architectures MAGMA desarrolla una biblioteca de algebra lineal densa similar a LAPACK pero para arquitecturas heterogeneas e hibridas que incluyen sistemas multinucleo acelerados con GPGPU PLASMA El proyecto Algebra lineal paralela para arquitecturas multinucleo escalables PLASMA es un reemplazo moderno de LAPACK para arquitecturas multinucleo PLASMA es un marco de software para el desarrollo de operaciones asincronicas y funciones de programacion fuera de orden con un programador de tiempo de ejecucion llamado QUARK que puede usarse para cualquier codigo que exprese sus dependencias con un grafico aciclico dirigido 6 Referencias Editar LAPACK 3 2 Release Notes 16 November 2008 PLAPACK Parallel Linear Algebra Package www cs utexas edu University of Texas at Austin 12 June 2007 Consultado el 20 April 2017 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 amd libflame High performance object based library for DLA computations GitHub AMD 25 August 2020 ICL icl eecs utk edu en ingles Consultado el 7 de julio de 2017 Otras lecturas EditarAnderson E Bai Z Bischof C Blackford S Demmel J Dongarra J Du Croz J Greenbaum A et al 1999 LAPACK Users Guide Third edicion Philadelphia PA Society for Industrial and Applied Mathematics ISBN 0 89871 447 8 Se sugiere usar numero autores ayuda Enlaces externos EditarPagina web oficial on Netlib org Datos Q642141Obtenido de https es wikipedia org w index php title LAPACK amp oldid 129542473, 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