LAPACK - LAPACK

LAPACK (Netlib referenceimplementering)
LAPACK logo.svg
Første udgivelse 1992 ; 29 år siden ( 1992 )
Stabil udgivelse
3.10.0  Rediger dette på Wikidata / 28. juni 2021 ; for 3 måneder siden ( 28. juni 2021 )
Skrevet i Fortran 90
Type Software bibliotek
Licens BSD-ny
Internet side www .netlib .org /lapack / Rediger dette på Wikidata

LAPACK (" L inear A lgebra Pack age") er et standard softwarebibliotek til numerisk lineær algebra . Det giver rutiner til løsning af systemer med lineære ligninger og lineære mindste kvadrater , egenværdiproblemer og enkeltværdi -dekomponering . Det inkluderer også rutiner til at implementere de tilhørende matrixfaktoriseringer såsom LU , QR , Cholesky og Schur -nedbrydning . LAPACK blev oprindeligt skrevet i FORTRAN 77 , men flyttede til Fortran 90 i version 3.2 (2008). Rutinerne håndterer både reelle og komplekse matricer i både enkelt og dobbelt præcision .

LAPACK blev designet som efterfølgeren til de lineære ligninger og lineære mindste-kvadraters rutiner for LINPACK og egenværdi-rutinerne for EISPACK . LINPACK , skrevet i 1970'erne og 1980'erne, var designet til at køre på de dengang moderne vektorkomputere med delt hukommelse. LAPACK var derimod designet til effektivt at udnytte cacherne på moderne cache-baserede arkitekturer og kan dermed køre størrelsesordener hurtigere end LINPACK på sådanne maskiner, givet en velindrettet BLAS- implementering. LAPACK er også blevet udvidet til at køre på distribuerede hukommelsessystemer i senere pakker som ScaLAPACK og PLAPACK.

Netlib LAPACK er licenseret under en tre-klausul BSD- stillicens , en tilladt gratis softwarelicens med få begrænsninger.

Navngivning

Underrutiner i LAPACK har en navngivningskonvention, der gør identifikatorerne meget kompakte. Dette var nødvendigt, da de første Fortran -standarder kun understøttede identifikatorer op til seks tegn lange, så navnene skulle forkortes for at passe ind i denne grænse.

Et LAPACK -underprogramnavn er i formen pmmaaa, hvor:

  • per en kode på et bogstav, der angiver den type numeriske konstanter, der bruges. S, Dstår for reelt flydende aritmetik henholdsvis i enkelt og dobbelt præcision, mens Cog Zstår for kompleks regning med henholdsvis enkelt og dobbelt præcision. Den nyere version, LAPACK95, bruger generiske underrutiner for at overvinde behovet for eksplicit at angive datatypen.
  • mmer en kode på to bogstaver, der angiver den slags matrix, der forventes af algoritmen. Koderne for de forskellige slags matricer er angivet nedenfor; de faktiske data gemmes i et andet format afhængigt af den specifikke slags; f.eks. når koden DIer givet, forventer underrutinen en længdevektor, der nindeholder elementerne på diagonalet, mens når koden GEer givet, forventer underrutinen et n × n -array, der indeholder matrixens poster.
  • aaaer en kode på et til tre bogstaver, der beskriver den faktiske algoritme, der er implementeret i underrutinen, f.eks. SVbetegner en underprogram til at løse lineært system , mens den Rangiver en rang-1-opdatering.

For eksempel kaldes underrutinen til at løse et lineært system med en generel (ikke-struktureret) matrix ved hjælp af reel dobbeltpræcisions-aritmetik DGESV.

Matricetyper i navneskemaet LAPACK
Navn Beskrivelse
BD bidiagonal matrix
DI diagonal matrix
GB generel båndmatrix
GE generel matrix (dvs. usymmetrisk , i nogle tilfælde rektangulær)
GG generelle matricer, generaliseret problem (dvs. et par generelle matricer)
GT generel tridiagonal matrix
HB ( Kompleks ) Hermitisk band matrix
HAN ( kompleks ) hermitisk matrix
HG øvre Hessenberg matrix , generaliseret problem (dvs. en Hessenberg og en trekantet matrix )
HP ( kompleks ) Hermitian , pakket opbevaringsmatrix
HS øvre Hessenberg -matrix
OP ( ægte ) ortogonal matrix , pakket opbevaringsmatrix
ELLER ( ægte ) ortogonal matrix
PB symmetrisk matrix eller hermitisk matrix positivt bestemt bånd
PO symmetrisk matrix eller hermitisk matrix positiv bestemt
PP symmetrisk matrix eller hermitisk matrix positiv bestemt , pakket opbevaringsmatrix
PT symmetrisk matrix eller hermitisk matrix positiv bestemt tridiagonal matrix
SB ( ægte ) symmetrisk båndmatrix
SP symmetrisk , pakket opbevaringsmatrix
ST ( ægte ) symmetrisk matrix tridiagonal matrix
SY symmetrisk matrix
TB trekantet båndmatrix
TG trekantede matricer , generaliseret problem (dvs. et par trekantede matricer )
TP trekantet , pakket opbevaringsmatrix
TR trekantet matrix (eller i nogle tilfælde kvasi-trekantet)
TZ trapezformet matrix
FN ( kompleks ) enhedsmatrix
OP ( kompleks ) enhed , pakket opbevaringsmatrix

Detaljer om dette skema findes i afsnittet Navngivningsskema i LAPACK -brugervejledning.

Brug sammen med andre programmeringssprog

Mange programmeringsmiljøer understøtter i dag brugen af ​​biblioteker med C -binding. LAPACK -rutinerne kan bruges som C -funktioner, hvis der overholdes et par begrænsninger.

Flere alternative sprogbindinger er også tilgængelige:

Implementeringer

Ligesom BLAS bliver LAPACK ofte gafflet eller omskrevet for at give bedre ydeevne på bestemte systemer. Nogle af implementeringerne er:

Fremskynde
Apples ramme til macOS og iOS , som inkluderer tunede versioner af BLAS og LAPACK.
Netlib LAPACK
Den officielle LAPACK.
Netlib ScaLAPACK
Skalerbar (multicore) LAPACK, bygget oven på PBLAS .
Intel MKL
Intels matematiske rutiner for deres x86 CPU'er.
OpenBLAS
Open-source reimplementering af BLAS og LAPACK.

Da LAPACK bruger BLAS til de tunge løft, forbedrer det normalt kun tilstrækkeligt med at linke til en bedre afstemt BLAS-implementering. Som et resultat genimplementeres LAPACK ikke så ofte som BLAS er.

Lignende projekter

Disse projekter giver en lignende funktionalitet som LAPACK, men hovedgrænsefladen adskiller sig fra LAPACK:

Libflame
Et tæt lineært algebra bibliotek. Har en LAPACK-kompatibel indpakning. Kan bruges med enhver BLAS, selvom BLIS er den foretrukne implementering.
Eigen
Et overskriftsbibliotek til lineær algebra. Har en BLAS og en delvis LAPACK -implementering for kompatibilitet.
MAGMA
Matrix Algebra on GPU and Multicore Architectures (MAGMA) -projektet udvikler et tæt lineært algebra -bibliotek, der ligner LAPACK, men for heterogene og hybridarkitekturer, herunder multicore -systemer, der accelereres med GPGPU'er .
PLASMA
Projektet Parallel Linear Algebra for Scalable Multi-core Architectures (PLASMA) er en moderne udskiftning af LAPACK til multi-core arkitekturer. PLASMA er en software ramme til udvikling af asynkrone operationer og funktioner uden for orden planlægning med en runtime planlægger kaldet QUARK, der kan bruges til enhver kode, der udtrykker dens afhængigheder med en rettet acyklisk graf .

Se også

Referencer

Yderligere læsning

eksterne links