LAPACK - LAPACK
tento článek potřebuje další citace pro ověření.Září 2020) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
První vydání | 1992 |
---|---|
Stabilní uvolnění | 3.9.0 / 21. listopadu 2019 |
Napsáno | Fortran 90 |
Typ | Softwarová knihovna |
Licence | BSD-nové |
webová stránka | www |
LAPACK ("Lv uchu Algebra Balíčekvěk ") je standard softwarová knihovna pro numerická lineární algebra. Poskytuje rutiny k řešení soustavy lineárních rovnic a lineární nejmenší čtverce, problémy s vlastním číslem, a rozklad singulární hodnoty. Zahrnuje také rutiny pro implementaci přidružených maticové faktorizace jako LU, QR, Cholesky a Schurův rozklad. LAPACK byl původně napsán v FORTRAN 77, ale přestěhoval se do Fortran 90 ve verzi 3.2 (2008).[1] Rutiny zvládají obojí nemovitý a komplex matice v obou singl a dvojnásobná přesnost.
LAPACK byl navržen jako nástupce lineárních rovnic a lineárních rutin nejmenších čtverců LINPACK a rutiny vlastních čísel z EISPACK. LINPACK, napsaný v 70. a 80. letech, byl navržen tak, aby fungoval na tehdy moderním vektorové počítače se sdílenou pamětí. Naproti tomu LAPACK byl navržen tak, aby efektivně využíval mezipaměti na moderních architekturách založených na mezipaměti, a tak na těchto strojích může při řádně vyladěném provozu běžet řádově rychleji než LINPACK BLAS implementace. LAPACK byl také rozšířen, aby fungoval distribuovaná paměť systémy v pozdějších balíčcích, jako je ScaLAPACK a PLAPACK.[2]
LAPACK je licencován na základě tří klauzulí BSD styl licence, a tolerantní bezplatná softwarová licence s několika omezeními.
Schéma pojmenování
Subrutiny v LAPACKu mají konvenci pojmenování, díky níž jsou identifikátory velmi kompaktní. To bylo nutné jako první Fortran standardy podporovaly pouze identifikátory o délce až šesti znaků, takže názvy musely být zkráceny, aby se vešly do tohoto limitu.
Název podprogramu LAPACK je ve formuláři pmmaaa
, kde:
str
je jednopísmenný kód označující typ použitých numerických konstant.S
,D
stojí za skutečným plovoucí bod aritmetika v jednoduché a dvojité přesnosti, zatímcoC
aZ
stát za komplexní aritmetika s jednoduchou a dvojitou přesností. Novější verze, LAPACK95, používá obecný podprogramy, aby se překonala potřeba výslovně specifikovat datový typ.mm
je dvoupísmenný kód označující druh matice očekávaný algoritmem. Kódy pro různé druhy matic jsou uvedeny níže; skutečná data jsou uložena v jiném formátu v závislosti na konkrétním druhu; např. když je kódDI
je uveden, podprogram očekává vektor délkyn
obsahující prvky na úhlopříčce, zatímco když kódGE
je uveden, podprogram očekává n×n pole obsahující položky matice.aaa
je jedno až třípísmenný kód popisující skutečný algoritmus implementovaný v podprogramu, např.SV
označuje podprogram, který se má vyřešit lineární systém, zatímcoR
označuje aktualizaci hodnosti 1.
Například podprogram pro řešení lineárního systému s obecnou (nestrukturovanou) maticí pomocí skutečné aritmetiky s dvojitou přesností se nazývá DGESV
.
Podrobnosti o tomto schématu naleznete v dokumentu Schéma pojmenování v Uživatelské příručce LAPACK.
Použití s jinými programovacími jazyky
Mnoho programovacích prostředí dnes podporuje použití knihoven s C vazba. Rutiny LAPACK lze použít jako funkce C, pokud je dodrženo několik omezení.
Několik alternativ jazykové vazby jsou také k dispozici:
Implementace
Stejně jako u BLAS je LAPACK často rozvětvený nebo přepsaný, aby poskytoval lepší výkon na konkrétních systémech. Některé z implementací jsou:
- Urychlit
- Jablko rámec pro Operační Systém Mac a iOS, který obsahuje vyladěné verze BLAS a LAPACK.[3][4]
- Netlib LAPACK
- Oficiální LAPACK.
- Netlib ScaLAPACK
- Škálovatelný (vícejádrový) LAPACK, postavený na vrcholu PBLAS.
- Intel MKL
- Matematické rutiny Intel pro jejich procesory x86.
- OpenBLAS
- Open-source reimplementace BLAS a LAPACK.
Vzhledem k tomu, že LAPACK používá BLAS pro těžké zvedání, pouhé propojení s lépe vyladěnou implementací BLAS obvykle dostatečně zvyšuje výkon. Výsledkem je, že LAPACK není znovu implementován tak často jako BLAS.
Podobné projekty
Tyto projekty poskytují podobné funkce jako LAPACK, ale hlavní rozhraní se liší od rozhraní LAPACK:
- Libflame
- Hustá knihovna lineární algebry. Má obal kompatibilní s LAPACK. Lze použít s jakýmkoli BLAS BLIS je upřednostňovanou implementací.[5]
- Vlastní
- Knihovna záhlaví pro lineární algebru. Má kompatibilitu BLAS a částečnou implementaci LAPACK.
- MAGMA
- Projekt Matrix Algebra na projektu GPU a Multicore Architectures (MAGMA) vyvíjí hustou knihovnu lineární algebry podobnou LAPACK, ale pro heterogenní a hybridní architektury včetně vícejádrových systémů zrychlených s GPGPU.
- PLAZMA
- Paralelní lineární algebra pro škálovatelné vícejádrové architektury (PLASMA) project is a modern replacement of LAPACK for multi-core architektures. PLASMA je softwarový rámec pro vývoj asynchronních operací a funkcí mimo pořadí plánování s plánovačem běhu zvaným QUARK, který lze použít pro jakýkoli kód, který vyjadřuje své závislosti pomocí směrovaný acyklický graf.[6]
Viz také
- Seznam numerických knihoven
- Knihovna matematických jader (MKL)
- Číselná knihovna NAG
- SLATEC, knihovna matematických a statistických rutin FORTRAN 77
- QUADPACK, knihovna FORTRAN 77 pro numerickou integraci
Reference
- ^ „Poznámky k verzi LAPACK 3.2“. 16. listopadu 2008.
- ^ "PLAPACK: Parallel Linear Algebra Package". www.cs.utexas.edu. University of Texas v Austinu. 12. června 2007. Citováno 20. dubna 2017.
- ^ „Průvodci a ukázkový kód“. developer.apple.com. Citováno 2017-07-07.
- ^ „Průvodci a ukázkový kód“. developer.apple.com. Citováno 2017-07-07.
- ^ "amd / libflame: Vysoce výkonná objektová knihovna pro výpočty DLA". GitHub. AMD. 25. srpna 2020.
- ^ „ICL“. icl.eecs.utk.edu. Citováno 2017-07-07.
Další čtení
- Anderson, E .; Bai, Z .; Bischof, C .; Blackford, S .; Demmel, J.; Dongarra, J.; Du Croz, J .; Greenbaum, A.; Hammarling, S .; McKenney, A .; Sorensen, D. (1999). Uživatelská příručka LAPACK (Třetí vydání.). Philadelphia, PA: Společnost pro průmyslovou a aplikovanou matematiku. ISBN 0-89871-447-8.
externí odkazy
- Oficiální webové stránky na Netlib.org