ŁAPKA

LAPACK (implementacja referencyjna Netlib)
Pierwsze wydanie 1992 ; 31 lat temu ( 1992 )
Wersja stabilna
Edit this on Wikidata 3.11.0 / 11 listopada 2022 ; 3 miesiące temu ( 11 listopada 2022 )
Magazyn
Napisane w Fortran 90
Typ Biblioteka oprogramowania
Licencja BSD-nowy
Strona internetowa netlib.org / lapack /  Edit this on Wikidata

LAPACK („ Linear A lgebra Pack age ”) to standardowa biblioteka oprogramowania do numerycznej algebry liniowej . Zawiera procedury rozwiązywania układów równań liniowych i liniowych metod najmniejszych kwadratów , problemów z wartościami własnymi i rozkładu na wartości osobliwe . Zawiera również procedury do implementacji powiązanych faktoryzacji macierzy, takich jak LU , QR , Cholesky i rozkład Schura . LAPACK został pierwotnie napisany w FORTRAN 77 , ale został przeniesiony do Fortran 90 w wersji 3.2 (2008). Procedury obsługują zarówno rzeczywiste , jak i złożone macierze z pojedynczą i podwójną precyzją . LAPACK opiera się na podstawowej BLAS , aby zapewnić wydajne i przenośne bloki obliczeniowe dla swoich procedur.

LAPACK został zaprojektowany jako następca równań liniowych i liniowych procedur najmniejszych kwadratów LINPACK oraz procedur wartości własnych EISPACK . LINPACK , napisany w latach 70. i 80., został zaprojektowany do pracy na nowoczesnych wówczas komputerach wektorowych z pamięcią współdzieloną. Z kolei LAPACK został zaprojektowany w celu efektywnego wykorzystania pamięci podręcznych w nowoczesnych architekturach opartych na pamięci podręcznej i równoległości na poziomie instrukcji nowoczesnych procesorów superskalarnych , a zatem może działać o rząd wielkości szybciej niż LINPACK na takich maszynach, biorąc pod uwagę dobrze dostrojoną implementację BLAS . LAPACK został również rozszerzony do pracy w pamięci rozproszonej w późniejszych pakietach, takich jak ScaLAPACK i PLAPACK.

Netlib LAPACK jest licencjonowany na podstawie trzyklauzulowej licencji w stylu BSD , liberalnej licencji wolnego oprogramowania z kilkoma ograniczeniami.

Schemat nazewnictwa

Podprogramy w LAPACK mają konwencję nazewnictwa, która sprawia, że ​​identyfikatory są bardzo zwarte. Było to konieczne, ponieważ pierwsze Fortran obsługiwały tylko identyfikatory o długości do sześciu znaków, więc nazwy musiały zostać skrócone, aby zmieściły się w tym limicie.

Nazwa podprogramu LAPACK ma postać pmmaaa , gdzie:

  • p jest jednoliterowym kodem oznaczającym typ używanych stałych numerycznych. S , D oznaczają rzeczywistą arytmetykę zmiennoprzecinkową odpowiednio z pojedynczą i podwójną precyzją, podczas gdy C i Z oznaczają arytmetykę zespoloną z odpowiednio pojedynczą i podwójną precyzją. Nowsza wersja, LAPACK95, wykorzystuje ogólne podprogramy w celu przezwyciężenia potrzeby jawnego określania typu danych.
  • mm to dwuliterowy kod oznaczający rodzaj macierzy oczekiwanej przez algorytm. Kody dla różnych rodzajów matryc podano poniżej; rzeczywiste dane są przechowywane w różnym formacie w zależności od konkretnego rodzaju; np. gdy podany jest kod DI , podprogram oczekuje wektora o długości n zawierającego elementy na przekątnej, natomiast gdy podany jest kod GE , podprogram oczekuje tablicy n × n zawierającej wpisy macierzy.
  • aaa to jedno- do trzyliterowy kod opisujący rzeczywisty algorytm zaimplementowany w podprogramie standardowym, np. SV oznacza podprogram do rozwiązania układu liniowego , podczas gdy R oznacza aktualizację rangi 1.

Na przykład podprogram do rozwiązywania układu liniowego z ogólną (nieustrukturyzowaną) macierzą przy użyciu rzeczywistej arytmetyki podwójnej precyzji nazywa się DGESV .

Typy macierzy w schemacie nazewnictwa LAPACK
Nazwa Opis
BD macierz dwudiagonalna
DI macierz diagonalna
GB ogólna macierz pasm
GE macierz ogólna (tj. niesymetryczna , w niektórych przypadkach prostokątna)
GG macierze ogólne, problem uogólniony (tj. para macierzy ogólnych)
GT ogólna macierz trójdiagonalna
HB ( zespolona ) macierz pasm hermitowskich
ON ( złożona ) macierz hermitowska
HG górna macierz Hessenberga , problem uogólniony (tj. macierz Hessenberga i trójkątna )
HP ( złożona ) hermitowska , upakowana macierz pamięci
HS górna macierz Hessenberga
OP ( rzeczywista ) macierz ortogonalna , upakowana macierz pamięci
LUB ( rzeczywista ) macierz ortogonalna
PB macierz symetryczna lub macierz hermitowska dodatnio określone pasmo
PO macierz symetryczna lub macierz hermitowska dodatnio określona
PP macierz symetryczna lub macierz hermitowska dodatnio określona , ​​upakowana macierz pamięci
PT macierz symetryczna lub macierz hermitowska dodatnio określona macierz trójdiagonalna
SB ( rzeczywista ) symetryczna macierz pasmowa
Sp symetryczna , upakowana macierz pamięci
Św ( rzeczywista ) macierz symetryczna macierz tridiagonalna
SY macierz symetryczna
gruźlica trójkątna macierz pasm
TG macierze trójkątne , problem uogólniony (tj. para macierzy trójkątnych )
TP trójkątna , upakowana matryca do przechowywania
TR macierz trójkątna (lub w niektórych przypadkach quasi-trójkątna)
TZ macierz trapezowa
ONZ ( złożona ) macierz jednostkowa
W GÓRĘ ( złożona ) jednostkowa , upakowana macierz pamięci

Używaj z innymi językami programowania i bibliotekami

Wiele środowisk programistycznych obsługuje obecnie biblioteki z powiązaniem C , umożliwiając bezpośrednie użycie procedur LAPACK, o ile przestrzega się kilku ograniczeń. Ponadto na LAPACK zbudowanych jest wiele innych bibliotek oprogramowania i narzędzi do obliczeń naukowych i numerycznych, takich jak R , MATLAB i SciPy .

Dostępnych jest również kilka alternatywnych powiązań językowych :

Implementacje

Podobnie jak w przypadku BLAS, LAPACK jest czasami rozwidlony lub przepisany, aby zapewnić lepszą wydajność w określonych systemach. Niektóre z wdrożeń to:

Przyspiesz
platformę Apple dla systemów macOS i iOS , która zawiera dostrojone wersje BLAS i LAPACK.
Netlib LAPACK
Oficjalny LAPACK.
Netlib ScaLAPACK
Skalowalny (wielordzeniowy) LAPACK, zbudowany na bazie PBLAS .
Intel MKL
Procedury matematyczne firmy Intel dla ich procesorów x86.
OpenBLAS
Reimplementacja open-source BLAS i LAPACK.
Gonum LAPACK
Częściowa natywna implementacja Go .

Ponieważ LAPACK zazwyczaj wywołuje podstawowe procedury BLAS, aby wykonać większość swoich obliczeń, samo połączenie z lepiej dostrojoną implementacją BLAS może wystarczyć do znacznej poprawy wydajności. W rezultacie LAPACK nie jest ponownie wdrażany tak często, jak BLAS.

Podobne projekty

Projekty te zapewniają podobną funkcjonalność do LAPACK, ale z głównym interfejsem różniącym się od interfejsu LAPACK:

Libflame
Gęsta biblioteka algebry liniowej. Posiada owijkę kompatybilną z LAPACK. Może być używany z dowolnym BLAS, chociaż BLIS jest preferowaną implementacją.
Eigen
Biblioteka nagłówków dla algebry liniowej. Ma BLAS i częściową implementację LAPACK dla zapewnienia kompatybilności.
MAGMA
Matrix Algebra on GPU and Multicore Architectures (MAGMA) opracowuje gęstą bibliotekę algebry liniowej podobną do LAPACK, ale dla architektur heterogenicznych i hybrydowych, w tym systemów wielordzeniowych przyspieszanych za pomocą GPGPU .
OSOCZE
Projekt Parallel Linear Algebra for Scalable Multi-core Architectures (PLASMA) jest nowoczesnym zamiennikiem LAPACK dla architektur wielordzeniowych. PLASMA jest platformą oprogramowania do tworzenia operacji asynchronicznych i planowania poza kolejnością z harmonogramem czasu wykonywania zwanym QUARK, który może być używany dla dowolnego kodu, który wyraża swoje zależności za pomocą skierowanego grafu acyklicznego .

Zobacz też