Základní podprogramy lineární algebry - Basic Linear Algebra Subprograms
Stabilní uvolnění | 3.8.0 / 12. listopadu 2017 |
---|---|
Napsáno | záleží na implementaci |
Plošina | Cross-platform |
Typ | Knihovna |
webová stránka | www |
Základní podprogramy lineární algebry (BLAS) je Specifikace který předepisuje sadu nízkoúrovňových rutin pro běžné provádění lineární algebra operace jako vektor přidání, skalární násobení, tečkované výrobky, lineární kombinace a násobení matic. Jsou to de facto standardní nízkoúrovňové rutiny pro knihovny lineární algebry; rutiny mají vazby pro oba C ("Rozhraní CBLAS") a Fortran („Rozhraní BLAS“). Ačkoli je specifikace BLAS obecná, implementace BLAS jsou často optimalizovány na rychlost na konkrétním stroji, takže jejich použití může přinést podstatné výhody výkonu. Implementace BLAS budou využívat speciální hardware s plovoucí desetinnou čárkou, jako jsou vektorové registry nebo SIMD instrukce.
Vznikla jako Fortranská knihovna v roce 1979[1] a jeho rozhraní bylo standardizováno technickým fórem BLAS (BLAST), jehož nejnovější zprávu BLAS najdete na webu netlib webová stránka.[2] Tato Fortranská knihovna je známá jako referenční implementace (někdy matoucí, označované jako the Knihovna BLAS) a není optimalizována pro rychlost, ale je v veřejná doména.[3][4]
Většina knihoven, které nabízejí rutiny lineární algebry, odpovídá rozhraní BLAS, což uživatelům knihovny umožňuje vyvíjet programy, které jsou lhostejné k použité knihovně BLAS. Mezi příklady knihoven BLAS patří: Matematická knihovna AMD Core (ACML), Arm Performance Libraries,[5] ATLAS, Knihovna Intel Math Kernel Library (MKL) a OpenBLAS. Výrobce ACML již nepodporuje.[6] ATLAS je přenosná knihovna, která se automaticky optimalizuje pro libovolnou architekturu. MKL je freeware[7] a proprietární[8] knihovna dodavatele optimalizovaná pro x86 a x86-64 s důrazem na výkon Intel procesory.[9] OpenBLAS je knihovna open-source, která je ručně optimalizována pro mnoho populárních architektur. The Benchmarky LINPACK spolehněte se na rutinu BLAS klenot
pro měření výkonu.
Mnoho numerických softwarových aplikací používá knihovny kompatibilní s BLAS k provádění výpočtů lineární algebry, včetně Pásovec, LAPACK, LINPACK, GNU oktáva, Mathematica,[10] MATLAB,[11] NumPy,[12] R, a Julie.
Pozadí
S příchodem numerického programování se staly užitečné sofistikované knihovny podprogramů. Tyto knihovny by obsahovaly podprogramy pro běžné matematické operace na vysoké úrovni, jako je hledání kořenů, inverze matic a řešení systémů rovnic. Jazyk volby byl FORTRAN. Nejvýznamnější numerická programovací knihovna byla IBM je Balíček vědeckých podprogramů (SSP).[13] Tyto knihovny podprogramů umožnily programátorům soustředit se na jejich konkrétní problémy a vyhnout se opětovné implementaci známých algoritmů. Rutiny knihovny by byly také lepší než průměrné implementace; maticové algoritmy například mohou využívat plné otáčení, aby získaly lepší numerickou přesnost. Rutiny knihovny by také měly efektivnější rutiny. Například knihovna může obsahovat program pro řešení matice, která je horní trojúhelníková. Knihovny by obsahovaly verze některých algoritmů s přesnou a dvojitou přesností.
Zpočátku tyto podprogramy používaly pro své operace na nízké úrovni pevně zakódované smyčky. Například pokud by podprogram potřeboval provést násobení matice, měl by podprogram tři vnořené smyčky. Programy lineární algebry mají mnoho běžných operací na nízké úrovni (takzvané operace „jádra“, které nesouvisí s.) operační systémy ).[14] V letech 1973 až 1977 bylo identifikováno několik těchto operací jádra.[15] Tyto operace jádra se staly definovanými podprogramy, které mohly matematické knihovny volat. Volání jádra měla oproti pevně zakódovaným smyčkám výhody: rutina knihovny byla čitelnější, bylo méně šancí na chyby a implementace jádra mohla být optimalizována na rychlost. Specifikace těchto operací jádra pomocí skaláry a vektory, základní podprogramy lineární algebry (BLAS) úrovně 1, byla zveřejněna v roce 1979.[16] BLAS byl použit k implementaci knihovny podprogramů lineární algebry LINPACK.
BLAS abstrakce umožňuje přizpůsobení pro vysoký výkon. Například LINPACK je knihovna pro obecné účely, kterou lze použít na mnoha různých strojích bez úprav. LINPACK může používat obecnou verzi BLAS. K získání výkonu mohou různé stroje používat přizpůsobené verze BLAS. Jak se počítačové architektury staly sofistikovanějšími, vektorové stroje objevil se. BLAS pro vektorový stroj může využívat rychlé vektorové operace stroje. (Zatímco vektorové procesory nakonec upadly v nemilost, vektorové instrukce v moderních CPU jsou nezbytné pro optimální výkon v rutinách BLAS.)
Byly k dispozici další funkce stroje a mohly být také využity. V důsledku toho byl BLAS od roku 1984 do roku 1986 rozšířen o operace jádra úrovně 2, které se týkaly operací s vektorovou maticí. Paměťová hierarchie byla také uznána jako něco, co by se dalo využít. Mnoho počítačů má mezipaměť to je mnohem rychlejší než hlavní paměť; udržování lokalizovaných manipulací matic umožňuje lepší využití mezipaměti. V letech 1987 a 1988 byla identifikována úroveň 3 BLAS k provádění operací matice-matice. Úroveň 3 BLAS podporovala algoritmy dělené na bloky. The LAPACK knihovna používá úroveň 3 BLAS.[17]
Původní BLAS se týkal pouze hustě uložených vektorů a matic. Byly řešeny další rozšíření BLAS, například pro řídké matice.[18]
ATLAS
Automaticky vyladěný software lineární algebry (ATLAS) se pokouší provést implementaci BLAS s vyšším výkonem. ATLAS definuje mnoho operací BLAS, pokud jde o některé základní rutiny, a poté se pokusí automaticky přizpůsobit základní rutiny tak, aby měly dobrý výkon. Provede se vyhledávání, aby se zvolila dobrá velikost bloku. Velikost bloku může záviset na velikosti a architektuře mezipaměti počítače. Provádějí se také testy, zda kopírování polí a vektorů zlepšuje výkon. Například může být výhodné kopírovat argumenty tak, aby byly zarovnány do řádku mezipaměti, aby mohly používat rutiny poskytované uživatelem SIMD instrukce.
Funkčnost
Funkce BLAS je rozdělena do tří sad rutin nazývaných „úrovně“, které odpovídají jak chronologickému pořadí definice a publikace, tak stupni polynomu ve složitosti algoritmů; Úroveň 1 BLAS operace obvykle trvá lineární čas, Ó(n), Operace úrovně 2 kvadratický čas a operace úrovně 3 kubický čas.[19] Moderní implementace BLAS obvykle poskytují všechny tři úrovně.
Úroveň 1
Tato úroveň se skládá ze všech rutin popsaných v původní prezentaci BLAS (1979),[1] který definoval pouze vektorové operace na pruhovaná pole: tečkované výrobky, vektorové normy, zobecněné vektorové přidání formuláře
(volala "axpy
"," a x plus y ") a několik dalších operací.
Úroveň 2
Tato úroveň obsahuje operace matice-vektor včetně, mimo jiné, a generalized matrix-protinásobení ector (gemv
):
stejně jako řešitel pro X v lineární rovnici
s T být trojúhelníkový. Návrh BLAS úrovně 2 byl zahájen v roce 1984 a výsledky byly publikovány v roce 1988.[20] Podrutiny úrovně 2 jsou určeny zejména ke zlepšení výkonu programů využívajících BLAS on vektorové procesory, kde BLAS úrovně 1 jsou neoptimální „protože skryjí maticovou vektorovou povahu operací před kompilátorem.“[20]
Úroveň 3
Tato úroveň, formálně publikovaná v roce 1990,[19] obsahuje operace matice-matice, včetně „generála násobení matic " (klenot
) formuláře
kde A a B volitelně může být provedeny nebo poustevník konjugovaný uvnitř rutiny a všemi třemi maticemi lze kráčet. Obyčejné násobení matic A B lze provést nastavením α k jednomu a C na matici všech nul příslušné velikosti.
V úrovni 3 jsou také zahrnuty rutiny pro řešení
kde T je mimo jiné trojúhelníková matice.
Vzhledem k všudypřítomnosti násobení matic v mnoha vědeckých aplikacích, včetně implementace zbytku BLAS úrovně 3,[21] a protože existují rychlejší algoritmy nad rámec zjevného opakování násobení matice-vektor, klenot
je hlavním cílem optimalizace pro implementátory BLAS. Např. Rozložením jednoho nebo obou A, B do blokové matice, klenot
může být implementováno rekurzivně. To je jedna z motivací pro zahrnutí β parametr,[pochybný ] takže lze sbírat výsledky předchozích bloků. Pamatujte, že tento rozklad vyžaduje speciální případ β = 1 pro které se mnoho implementací optimalizuje, čímž se eliminuje jedno násobení pro každou hodnotu C. Tento rozklad umožňuje lepší referenční lokalita jak v prostoru, tak v čase dat použitých v produktu. To zase využívá výhod mezipaměti v systému.[22] U systémů s více než jednou úrovní mezipaměti lze blokování použít podruhé v pořadí, ve kterém jsou bloky použity při výpočtu. Obě tyto úrovně optimalizace se používají v implementacích, jako jsou ATLAS. Více nedávno implementace od Kazushige Goto ukázaly, že blokování pouze pro Mezipaměť L2 v kombinaci s opatrností amortizovat kopírování do souvislé paměti TLB chybí, je lepší než ATLAS.[23] Vysoce vyladěná implementace založená na těchto myšlenkách je součástí GotoBLAS, OpenBLAS a BLIS.
Běžná variace klenot
je gemm3m
, který vypočítává komplexní produkt pomocí „tří násobení reálné matice a pěti sčítání skutečné matice namísto konvenčních čtyř násobení skutečné matice a dvou sčítání skutečné matice“, což je algoritmus podobný Strassenův algoritmus poprvé popsal Peter Ungar.[24]
Implementace
- Urychlit
- Jablko rámec pro Operační Systém Mac a iOS, který obsahuje vyladěné verze BLAS a LAPACK.[25][26]
- AMD Core Math Library (ACML)
- The Matematická knihovna AMD Core, podporující AMD Athlon a Opteron CPU pod Linux a Okna, nahrazeno AOCL.[27]
- AMD Optimalizace knihoven CPU (AOCL)
- The AMD Optimalizace knihoven CPU, vyladěné speciálně pro AMD Epyc CPU pod Linux a Okna.[28]
- Arm Performance Libraries
- Arm Performance Libraries, podporující rameno 64-bit AArch64 - procesory založené na, dostupné z Paže.[5]
- ATLAS
- Automaticky vyladěný software lineární algebry, an otevřený zdroj implementace BLAS API pro C a Fortran 77.[29]
- BLIS
- Rámec softwaru BLAS typu Instantiation Library pro rychlé vytváření instancí. Na základě GotoBLAS.[30]
- C ++ AMP BLAS
- The C ++ AMP Knihovna BLAS je otevřený zdroj implementace BLAS pro rozšíření jazyka AMP společnosti Microsoft pro Visual C ++.[31]
- cuBLAS
- Optimalizovaný BLAS pro karty GPU založené na NVIDIA, vyžadující několik dalších volání z knihovny.[32]
- NVBLAS
- Optimalizovaný BLAS pro karty GPU založené na NVIDIA, poskytující pouze funkce úrovně 3, ale jako přímá náhrada za jiné knihovny BLAS.[33]
- CLBLAS
- An OpenCL implementace BLAS společností AMD. Součást výpočetních knihoven AMD.[34]
- CLBLAST
- Vyladěný OpenCL implementace většiny rozhraní BLAS api.[35]
- Vlastní BLAS
- A Fortran 77 a C Knihovna BLAS implementována nad MPL -licencované Vlastní knihovna, podpůrné x86, x86 64, ARM (NEON), a PowerPC architektury.
- ESSL
- IBM Technická a vědecká podprogramová knihovna, podporující PowerPC architektura pod AIX a Linux.[36]
- GotoBLAS
- Kazushige Goto Implementace BLAS s licencí BSD, vyladěná zejména pro Intel Nehalem /Atom, PŘES Nanoprocesor, AMD Opteron.[37]
- Vědecká knihovna GNU
- Multiplatformní implementace mnoha numerických rutin. Obsahuje rozhraní CBLAS.
- HP MLIB
- HP Podpora matematické knihovny IA-64, PA-RISC, x86 a Opteron architektura pod HPUX a Linux.
- Intel MKL
- The Intel Knihovna matematických jader, podpora x86 32-bitů a 64-bitů, k dispozici zdarma od Intel.[7] Zahrnuje optimalizace pro Intel Pentium, Jádro a Intel Xeon CPU a Intel Xeon Phi; podpora pro Linux, Okna a Operační Systém Mac.[38]
- MathKeisan
- NEC matematická knihovna, podpůrná Architektura NEC SX pod SUPER-UX, a Itanium pod Linux[39]
- Netlib BLAS
- Oficiální referenční implementace dne Netlib, napsáno v Fortran 77.[40]
- Netlib CBLAS
- Odkaz C rozhraní k BLAS. Je také možné (a populární) volat Fortran BLAS z C.[41]
- OpenBLAS
- Optimalizovaný BLAS založený na GotoBLAS, podpora x86, x86-64, MIPS a PAŽE procesory.[42]
- PDLIB / SX
- NEC Public Domain Mathematical Library pro NEC SX-4 Systém.[43]
- SCSL
- SGI Knihovna Scientific Computing Software Library obsahuje implementace BLAS a LAPACK pro SGI Irix pracovní stanice.[44]
- Sun Performance Library
- Optimalizované BLAS a LAPACK pro SPARC, Jádro a AMD64 architektury pod Solarisem 8, 9 a 10 i Linux.[45]
- uBLAS
- Obecný C ++ knihovna tříd šablon poskytující funkčnost BLAS. Část Zvyšte knihovnu. Poskytuje vazby na mnoho hardwarově akcelerovaných knihoven ve sjednocující notaci. Kromě toho se uBLAS zaměřuje na správnost algoritmů pomocí pokročilých funkcí C ++.[46]
Knihovny využívající BLAS
- Pásovec
- Pásovec je knihovna lineární algebry C ++ zaměřená na dobrou rovnováhu mezi rychlostí a snadným použitím. Používá třídy šablon a má volitelné odkazy na BLAS / ATLAS a LAPACK. Sponzoruje to NICTA (v Austrálii) a je licencován na základě bezplatné licence.[47]
- LAPACK
- LAPACK je knihovna lineární algebry vyšší úrovně postavená na BLAS. Stejně jako BLAS existuje referenční implementace, ale existuje mnoho alternativ, jako je libFlame a MKL.
- Mir
- An LLVM - zrychlená obecná numerická knihovna pro vědu a strojové učení napsaná v D. Poskytuje obecné podprogramy lineární algebry (GLAS). Může být postaven na implementaci CBLAS.[48]
Podobné knihovny (nejsou kompatibilní s BLAS)
- Elementální
- Elemental je software s otevřeným zdrojovým kódem pro distribuovaná paměť hustá a řídce přímá lineární algebra a optimalizace.[49]
- HASEM
- je knihovna šablon C ++, schopná řešit lineární rovnice a počítat vlastní čísla. Je licencován pod licencí BSD.[50]
- LAMA
- Knihovna pro zrychlené matematické aplikace (LAMA ) je knihovna šablon C ++ pro psaní numerických řešičů zaměřených na různé druhy hardwaru (např. GPU přes CUDA nebo OpenCL ) zapnuto distribuovaná paměť systémy, skrývající programování specifické pro hardware před vývojářem programu
- MTL4
- The Knihovna šablon matic verze 4 je obecná C ++ knihovna šablon poskytující řídké a husté funkce BLAS. MTL4 zavádí intuitivní rozhraní (podobně jako MATLAB ) a široká použitelnost díky generické programování.
Řídký BLAS
Několik rozšíření BLAS pro manipulaci řídké matice byly navrženy v průběhu historie knihovny; malá sada rutin jádra řídké matice byla nakonec standardizována v roce 2002.[51]
Viz také
- Seznam numerických knihoven
- Knihovna matematických jader, matematická knihovna optimalizovaná pro Intel architektura; zahrnuje BLAS, LAPACK
- Numerická lineární algebra, typ problému, který BLAS řeší
Reference
- ^ A b *Lawson, C. L .; Hanson, R. J .; Kincaid, D .; Krogh, F. T. (1979). "Základní podprogramy lineární algebry pro použití FORTRANU". ACM Trans. Matematika. Softw. 5 (3): 308–323. doi:10.1145/355841.355847. hdl:2060/19780018835. Algoritmus 539.
- ^ „Technické fórum BLAS“. netlib.org. Citováno 2017-07-07.
- ^ blaseman Archivováno 2016-10-12 na Wayback Machine „Tyto produkty jsou implementacemi public domain BLAS (Basic Linear Algebra Subprograms) a LAPACK (Linear Algebra PACKage), které byly vyvinuty skupinami lidí, jako je prof. Jack Dongarra, University of Tennessee, USA a všechny publikovány na WWW (URL: http://www.netlib.org/ )."[trvalý mrtvý odkaz ]
- ^ Jack Dongarra; Gene Golub; Eric Grosse; Cleve Moler; Keith Moore. „Netlib a NA-Net: budování vědecké výpočetní komunity“ (PDF). netlib.org. Citováno 2016-02-13.
Softwarové úložiště Netlib bylo vytvořeno v roce 1984 s cílem usnadnit rychlou distribuci softwarových rutin pro veřejnou doménu pro použití ve vědeckých výpočtech.
- ^ A b „Arm Performance Libraries“. Paže. 2020. Citováno 2020-06-02.
- ^ „ACML - AMD Core Math Library“. AMD. 2013. Archivovány od originál dne 2015-09-05. Citováno 2015-08-26.
- ^ A b „Žádné možnosti nákladů na knihovnu Intel Math Kernel Library (MKL), Support yourself, Royalty-Free“. Intel. 2015. Citováno 2015-08-31.
- ^ „Intel Math Kernel Library (Intel MKL)“. Intel. 2015. Citováno 2015-08-25.
- ^ „Oznámení o optimalizaci“. Intel. 2012. Citováno 2013-04-10.
- ^ Douglas Quinney (2003). „Co je nového v Mathematice 5.0?“ (PDF). Připojení MSOR. Akademie vysokoškolského vzdělávání. 3 (4). Archivovány od originál (PDF) dne 29. 10. 2013.
- ^ Cleve Moler (2000). „MATLAB obsahuje LAPACK“. MathWorks. Citováno 2013-10-26.
- ^ Stéfan van der Walt; Chris Colbert a Gaël Varoquaux (2011). Msgstr "Pole NumPy: struktura pro efektivní numerický výpočet". Výpočetní technika ve vědě a inženýrství. 13 (2): 22–30. arXiv:1102.1523. Bibcode:2011arXiv1102.1523V. doi:10.1109 / MCSE.2011.37.
- ^ Boisvert, Ronald F. (2000). "Matematický software: minulost, přítomnost a budoucnost". Matematika a počítače v simulaci. 54 (4–5): 227–241. arXiv:cs / 0004004. Bibcode:2000 ks ........ 4004B. doi:10.1016 / S0378-4754 (00) 00185-3.
- ^ Dokonce i SSP (který se objevil kolem roku 1966) měl některé základní rutiny, jako RADD (přidávání řádků), CADD (přidávání sloupců), SRMA (škálování řádků a přidávání do jiného řádku) a RINT (výměna řádků). Tyto rutiny zjevně nebyly použity jako operace jádra k implementaci dalších rutin, jako je inverze matic. Vidět IBM (1970), Balíček System / 360 Scientific Subroutine, verze III, programátorská příručka (5. vydání), International Business Machines, GH20-0205-4.
- ^ BLAST Forum 2001, str. 1.
- ^ Lawson a kol. 1979.
- ^ BLAST Forum 2001, s. 1–2.
- ^ BLAST Forum 2001, str. 2.
- ^ A b Dongarra, Jack J .; Du Croz, Jeremy; Hammarling, Sven; Duff, Iain S. (1990). Msgstr "Sada základních podprogramů lineární algebry úrovně 3". Transakce ACM na matematickém softwaru. 16 (1): 1–17. doi:10.1145/77626.79170. ISSN 0098-3500.
- ^ A b Dongarra, Jack J .; Du Croz, Jeremy; Hammarling, Sven; Hanson, Richard J. (1988). Msgstr "Rozšířená sada podprogramů základní lineární algebry FORTRAN". ACM Trans. Matematika. Softw. 14: 1–17. CiteSeerX 10.1.1.17.5421. doi:10.1145/42288.42291.
- ^ Jdi, Kazushige; van de Geijn, Robert A. (2008). „Vysoce výkonná implementace BLAS úrovně 3“ (PDF). Transakce ACM na matematickém softwaru. 35 (1): 1–14. doi:10.1145/1377603.1377607.
- ^ Golub, Gene H.; Van Loan, Charles F. (1996), Maticové výpočty (3. vydání), Johns Hopkins, ISBN 978-0-8018-5414-9
- ^ Jdi, Kazushige; van de Geijn, Robert A. (2008). "Anatomie vysoce výkonného násobení matic". Transakce ACM na matematickém softwaru. 34 (3): 12:1–12:25. CiteSeerX 10.1.1.111.3873. doi:10.1145/1356052.1356053. ISSN 0098-3500. (25 stránek) [1]
- ^ Van Zee, Field G .; Smith, Tyler M. (2017-07-24). „Implementace vysoce výkonného komplexního násobení matic metodami 3m a 4m“. Transakce ACM na matematickém softwaru. 44 (1): 1–36. doi:10.1145/3086466.
- ^ „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.
- ^ „Archivovaná kopie“. Archivovány od originál dne 30. 11. 2005. Citováno 2005-10-26.CS1 maint: archivovaná kopie jako titul (odkaz)
- ^ „AMD Optimizing CPU Libraries (AOCL) - AMD“.
- ^ „Automaticky vyladěný software lineární algebry (ATLAS)“. math-atlas.sourceforge.net. Citováno 2017-07-07.
- ^ blis: Softwarový rámec pro instanci knihovny typu BLAS, plamen, 30.06.2017, vyvoláno 2017-07-07
- ^ „Knihovna C ++ AMP BLAS“. CodePlex. Citováno 2017-07-07.
- ^ "cuBLAS". NVIDIA Developer. 2013-07-29. Citováno 2017-07-07.
- ^ „NVBLAS“. NVIDIA Developer. 2018-05-15. Citováno 2018-05-15.
- ^ clBLAS: softwarová knihovna obsahující funkce BLAS napsané v OpenCL, clMathLibraries, 2017-07-03, vyvoláno 2017-07-07
- ^ Nugteren, Cedric (05.07.2017), CLBlast: Laděný OpenCL BLAS, vyvoláno 2017-07-07
- ^ IBM Knowledge Center: Engineering and Scientific Subroutine Library
- ^ Milfeld, Kent. „GotoBLAS2“. Texas Advanced Computing Center. Archivováno od původního dne 2020-03-23. Citováno 2013-08-28.
- ^ "Knihovna jádra Intel Math (Intel MKL) | Software Intel". software.intel.com. Citováno 2017-07-07.
- ^ Mathkeisan, NEC. „MathKeisan“. www.mathkeisan.com. Citováno 2017-07-07.
- ^ „BLAS (podprogramy základní lineární algebry)“. www.netlib.org. Citováno 2017-07-07.
- ^ „BLAS (podprogramy základní lineární algebry)“. www.netlib.org. Citováno 2017-07-07.
- ^ "OpenBLAS: Optimalizovaná knihovna BLAS". www.openblas.net. Citováno 2017-07-07.
- ^ „Archivovaná kopie“. Archivovány od originál dne 22.02.2007. Citováno 2007-05-20.CS1 maint: archivovaná kopie jako titul (odkaz)
- ^ „Archivovaná kopie“. Archivovány od originál dne 2007-05-13. Citováno 2007-05-20.CS1 maint: archivovaná kopie jako titul (odkaz)
- ^ „Oracle Developer Studio“. www.oracle.com. Citováno 2017-07-07.
- ^ „Zvýšení základní lineární algebry - 1.60.0“. www.boost.org. Citováno 2017-07-07.
- ^ "Armadillo: C ++ knihovna lineární algebry". arma.sourceforge.net. Citováno 2017-07-07.
- ^ "Dlang numerické a systémové knihovny".
- ^ "Elemental: distribuovaná paměť hustá a řídce přímá lineární algebra a optimalizace - Elemental". libelemental.org. Citováno 2017-07-07.
- ^ "HASEM". SourceForge. Citováno 2017-07-07.
- ^ Duff, Iain S .; Heroux, Michael A .; Pozo, Roldan (2002). „Přehled řídkých základních podprogramů lineární algebry: Nový standard z BLAS technického fóra“. Transakce ACM na matematickém softwaru. 28 (2): 239–267. doi:10.1145/567806.567810.
Další čtení
- Fórum BLAST (21. 8. 2001), Standard fóra pro základní lineární algebru podprogramy technický (BLAST)„Knoxville, TN: University of Tennessee
- Dodson, D. S .; Grimes, R. G. (1982), „Poznámka k algoritmu 539: Základní podprogramy lineární algebry pro použití ve Fortranu“, ACM Trans. Matematika. Softw., 8 (4): 403–404, doi:10.1145/356012.356020
- Dodson, D. S. (1983), „Oprava: Poznámka k“ Algoritmus 539: Základní podprogramy lineární algebry pro použití FORTRANU"", ACM Trans. Matematika. Softw., 9: 140, doi:10.1145/356022.356032
- J. J. Dongarra, J. Du Croz, S. Hammarling a R. J. Hanson, Algorithm 656: Rozšířená sada podprogramů FORTRAN Basic Linear Algebra, ACM Trans. Matematika. Softw., 14 (1988), str. 18–32.
- J. J. Dongarra, J. Du Croz, I. S. Duff a S. Hammarling, sada základních podprogramů lineární algebry úrovně 3, ACM Trans. Matematika. Softw., 16 (1990), str. 1–17.
- J. J. Dongarra, J. Du Croz, I. S. Duff a S. Hammarling, Algoritmus 679: Sada základních podprogramů lineární algebry úrovně 3, ACM Trans. Matematika. Softw., 16 (1990), str. 18–28.
- Nový BLAS
- LS Blackford, J. Demmel, J. Dongarra, I. Duff, S. Hammarling, G. Henry, M. Heroux, L. Kaufman, A. Lumsdaine, A. Petitet, R. Pozo, K. Remington, RC Whaley, Aktualizovaná sada základních podprogramů lineární algebry (BLAS), ACM Trans. Matematika. Softw., 28-2 (2002), str. 135–151.
- J. Dongarra, Basic Linear Algebra Subprograms Technical Forum Standard, International Journal of High Performance Applications and Supercomputing, 16 (1) (2002), str. 1–111, a International Journal of High Performance Applications and Supercomputing, 16 (2) ( 2002), s. 115–199.
externí odkazy
- Domovská stránka BLAS na Netlib.org
- BLAS FAQ
- Stručná referenční příručka BLAS z Uživatelské příručky LAPACK
- Lawson Oral History Jeden z původních autorů BLAS diskutuje o jeho vzniku v rozhovoru pro orální historii. Charles L. Lawson Rozhovor o ústní historii Thomase Haigha, 6. a 7. listopadu 2004, San Clemente, Kalifornie. Společnost pro průmyslovou a aplikovanou matematiku, Philadelphia, PA.
- Dongarra orální historie V rozhovoru pro orální historii Jack Dongarra zkoumá raný vztah BLASu k LINPACKu, vytvoření verzí BLAS vyšší úrovně pro nové architektury a jeho pozdější práce na systému ATLAS pro automatickou optimalizaci BLAS pro konkrétní stroje. Jack Dongarra, rozhovor o ústní historii Thomase Haigha, 26. dubna 2005, University of Tennessee, Knoxville TN. Společnost pro průmyslovou a aplikovanou matematiku, Philadelphia, PA
- Jak BLAS dosahuje tak extrémního výkonu? Deset naivních násobení matice 1000 × 1000 (1010 plovoucí desetinnou čárkou multi-add) trvá 15,77 sekundy na 2,6 GHz procesoru; Implementace BLAS trvá 1,32 sekundy.
- Přehled řídkých základních podprogramů lineární algebry: Nový standard z technického fóra BLAS [2]