ŁAPKA
Pierwsze wydanie | 1992 |
---|---|
Wersja stabilna | |
Magazyn | |
Napisane w | Fortran 90 |
Typ | Biblioteka oprogramowania |
Licencja | BSD-nowy |
Strona internetowa |
|
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 gdyC
iZ
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 kodDI
, podprogram oczekuje wektora o długościn
zawierającego elementy na przekątnej, natomiast gdy podany jest kodGE
, 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 gdyR
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
.
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 :
- Armadillo dla C++
- IT++ dla C++
- LAPACK++ dla C++
- Lacaml dla OCaml
- CLapack dla C
- SciPy dla Pythona
- Gonum dla Go
- NLapack dla .NET
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ż
- Wykaz bibliotek numerycznych
- Biblioteka jądra matematyki (MKL)
- Biblioteka numeryczna NAG
- SLATEC , biblioteka procedur matematycznych i statystycznych FORTRAN 77
- QUADPACK , biblioteka FORTRAN 77 do integracji numerycznej