Basic lineaire algebra subprogramma's
Stabiele vrijlating | 3.10.0 / 29 juni 2021 |
---|---|
Geschreven in | hangt af van de implementatie |
Platform | Platformovereenkomst |
Type | Bibliotheek |
Website | WWW |
Basic lineaire algebra subprogramma's (Blas) is een specificatie Dat schrijft een set routines op laag niveau voor voor het uitvoeren van gebruikelijk lineaire algebra bewerkingen zoals vector toevoeging, scalaire vermenigvuldiging, DOT -producten, lineaire combinaties, en Matrix vermenigvuldiging. Zij zijn de de facto standaard routines op laag niveau voor lineaire algebra-bibliotheken; De routines hebben bindingen voor beide C ("CBLAS -interface") en Fortran ("BLAS -interface"). Hoewel de BLAS -specificatie algemeen is, worden BLAS -implementaties vaak geoptimaliseerd voor snelheid op een bepaalde machine, dus het gebruik ervan kan substantiële prestatievoordelen opleveren. BLAS -implementaties zullen profiteren van speciale drijvende punthardware zoals vectorregisters of Simd instructies.
Het is ontstaan als een Fortran -bibliotheek in 1979[1] en de interface werd gestandaardiseerd door het BLAS Technical (Blast) Forum, wiens nieuwste BLAS -rapport te vinden is op de netlib website.[2] Deze Fortran -bibliotheek staat bekend als de Referentie -implementatie (soms verwarrend aangeduid als de Blas Library) en is niet geoptimaliseerd voor snelheid, maar is in de publiek domein.[3][4]
De meeste bibliotheken die lineaire algebra -routines bieden, voldoen aan de BLAS -interface, waardoor bibliotheekgebruikers programma's kunnen ontwikkelen die onverschillig staan voor de gebruikte BLAS -bibliotheek. BLAS -implementaties hebben een spectaculaire explosie gekend in toepassingen met de ontwikkeling van GPGPU, met Cublas en Rocblas uitstekende voorbeelden zijn. Op CPU gebaseerde voorbeelden van BLAS-bibliotheken zijn onder meer: Openblas, Blis (Blas-achtige bibliotheekinstantiatiefoftware), ARM Performance Libraries,[5] ATLAS, en Intel Math Kernel Library (MKL). AMD onderhoudt een vork van BLIS die is geoptimaliseerd voor de AMD platform.[6] Atlas is een draagbare bibliotheek die zichzelf automatisch optimaliseert voor een willekeurige architectuur. MKL is een freeware[7] en eigendom[8] Leveranciersbibliotheek geoptimaliseerd voor x86 en x86-64 met een prestatie-nadruk op Intel processors.[9] OpenBLAS is een open-source bibliotheek die met de hand is geoptimaliseerd voor veel van de populaire architecturen. De Linpack -benchmarks vertrouw zwaar op de BLAS -routine gedoe
voor zijn prestatiemetingen.
Veel numerieke softwaretoepassingen gebruiken BLAS-compatibele bibliotheken om lineaire algebra-berekeningen te doen, waaronder Lapack, Linpack, Gordeldier, GNU -octaaf, Wisica,[10] Matlab,[11] Numpy,[12] R, en Julia.
Achtergrond
Met de komst van numerieke programmering werden geavanceerde subroutinebibliotheken nuttig. Deze bibliotheken zouden subroutines bevatten voor gemeenschappelijke wiskundige bewerkingen op hoog niveau, zoals rootbevinding, matrixinversie en het oplossen van vergelijkingen. De taal naar keuze was Fortran. De meest prominente numerieke programmeerbibliotheek was IBM's Scientific Subroutine -pakket (SSP).[13] Met deze subroutinebibliotheken konden programmeurs zich concentreren op hun specifieke problemen en voorkomen dat bekende algoritmen opnieuw worden geïmplementeerd. De bibliotheekroutines zouden ook beter zijn dan gemiddelde implementaties; Matrixalgoritmen kunnen bijvoorbeeld volledige draaipunten gebruiken om een betere numerieke nauwkeurigheid te krijgen. De bibliotheekroutines zouden ook efficiëntere routines hebben. Een bibliotheek kan bijvoorbeeld een programma bevatten om een matrix op te lossen die bovenste driehoekig is. De bibliotheken zouden versies met één precisie en dubbele precisie van sommige algoritmen omvatten.
Aanvankelijk gebruikten deze subroutines hard gecodeerde lussen voor hun activiteiten op laag niveau. Als een subroutine bijvoorbeeld een matrixvermenigvuldiging moest uitvoeren, zou de subroutine drie geneste lussen hebben. Lineaire algebra-programma's hebben veel gebruikelijke bewerkingen op laag niveau (de zogenaamde "kernel" -bewerkingen, niet gerelateerd aan besturingssystemen).[14] Tussen 1973 en 1977 werden verschillende van deze kerneloperaties geïdentificeerd.[15] Deze kerneloperaties werden gedefinieerde subroutines die wiskundebibliotheken konden bellen. De kerneloproepen hadden voordelen ten opzichte van hardgecodeerde lussen: de bibliotheekroutine zou leesbaarder zijn, er waren minder kansen voor bugs en de kernelimplementatie kon worden geoptimaliseerd voor snelheid. Een specificatie voor deze kernelbewerkingen met behulp van scalars en vectoren, de Level-1 Basic Linear Algebra Subroutines (BLAS), werd gepubliceerd in 1979.[16] BLAS werd gebruikt om de lineaire algebra -subroutine -bibliotheek te implementeren Linpack.
De BLAS -abstractie maakt aanpassing voor hoge prestaties mogelijk. LinPack is bijvoorbeeld een bibliotheek voor algemene doeleinden die zonder wijziging op veel verschillende machines kan worden gebruikt. LinPack zou een generieke versie van BLAS kunnen gebruiken. Om prestaties te verkrijgen, kunnen verschillende machines op maat gemaakte versies van BLA's gebruiken. Naarmate computerarchitecturen geavanceerder werden, vectormachines verscheen. BLAS voor een vectormachine kan de snelle vectorbewerkingen van de machine gebruiken. (Hoewel vectorprocessors uiteindelijk uit de gratie raakten, zijn vectorinstructies in moderne CPU's essentieel voor optimale prestaties in BLAS -routines.)
Andere machinefuncties kwamen beschikbaar en konden ook worden benut. Bijgevolg werd BLAS uitgebreid van 1984 tot 1986 met niveau-2 kernelactiviteiten die betrekking hadden op vector-matrixactiviteiten. Geheugenhiërarchie werd ook herkend als iets om te exploiteren. Veel computers hebben cachegeheugen Dat is veel sneller dan het belangrijkste geheugen; Matrixmanipulaties gelokaliseerd houden maakt een beter gebruik van de cache mogelijk. In 1987 en 1988 werden de Level 3 BLA's geïdentificeerd om matrix-matrix-bewerkingen uit te voeren. De Level 3 BLA's moedigde algoritmen met blok-gepartitioneerde aan. De Lapack Bibliotheek maakt gebruik van niveau 3 blas.[17]
De oorspronkelijke BLA's betroffen alleen dicht opgeslagen vectoren en matrices. Verdere uitbreidingen voor BLA's, zoals voor schaarse matrices, zijn aangepakt.[18]
Functie
BLAS -functionaliteit is onderverdeeld in drie sets routines genaamd "niveaus", die overeenkomen met zowel de chronologische volgorde van definitie als publicatie, evenals de graad van de polynoom in de complexiteit van algoritmen; Niveau 1 BLAS -bewerkingen duren meestal lineaire tijd, O(n), Level 2 bewerkingen kwadratische tijd en niveau 3 -bewerkingen kubieke tijd.[19] Moderne BLAS -implementaties bieden doorgaans alle drie niveaus.
Niveau 1
Dit niveau bestaat uit alle routines die zijn beschreven in de oorspronkelijke presentatie van Blas (1979),[1] die alleen definieerden vectoractiviteiten Aan Straked arrays: DOT -producten, vectornormen, een algemene vector -toevoeging van de vorm
(genaamd "axpy
"," A X Plus Y ") en verschillende andere bewerkingen.
Level 2
Dit niveau bevat matrix-vectorbewerkingen inclusief onder meer een Generalized matrix-vector vermenigvuldiging (edelsteen
):
evenals een oplosser voor x in de lineaire vergelijking
met T driehoekig zijn. Design of the Level 2 BLAS begon in 1984, met resultaten gepubliceerd in 1988.[20] De subroutines van niveau 2 zijn vooral bedoeld om de prestaties van programma's te verbeteren met behulp van BLA's op vectorprocessors, waar Level 1 BLA's suboptimaal zijn "omdat ze de matrix-vectorkarakter van de bewerkingen van de compiler verbergen."[20]
Niveau 3
Dit niveau, formeel gepubliceerd in 1990,[19] bevat matrix-matrix-bewerkingen, inclusief een "generaal Matrix vermenigvuldiging"(gedoe
), van de vorm
waar A en B kan optioneel zijn omringd of Hermitiaans-geconjugeerd Binnen de routine en alle drie de matrices kunnen worden gestimuleerd. De gewone matrixvermenigvuldiging A B kan worden uitgevoerd door in te stellen α naar een en C naar een all-zeros matrix van de juiste maat.
Ook opgenomen in niveau 3 zijn routines voor computergebruik
waar T is een driehoekige matrix, onder andere functionaliteit.
Vanwege de alomtegenwoordigheid van matrixvermenigvuldigingen in veel wetenschappelijke toepassingen, waaronder voor de implementatie van de rest van niveau 3 blas,[21] En omdat snellere algoritmen voorbij de voor de hand liggende herhaling van matrix-vector vermenigvuldiging bestaan, gedoe
is een uitstekend doelwit van optimalisatie voor BLAS -implementers. Bijvoorbeeld door een of beide te ontbinden A, B naar binnen blokmatrices, gedoe
kan zijn recursief geïmplementeerd. Dit is een van de motivaties voor het opnemen van de β parameter,[twijfelachtig ] Dus de resultaten van eerdere blokken kunnen worden verzameld. Merk op dat deze ontleding het speciale geval vereist β = 1 waarvoor veel implementaties optimaliseren, waardoor één vermenigvuldiging wordt geëlimineerd voor elke waarde van C. Deze ontleding zorgt voor beter plaats van referentie zowel in de ruimte als in de tijd van de gegevens die in het product worden gebruikt. Dit maakt op zijn beurt gebruik van de stamkachel op het systeem.[22] Voor systemen met meer dan één niveau van cache kan de blokkering een tweede keer worden toegepast op de volgorde waarin de blokken in de berekening worden gebruikt. Beide optimalisatieniveaus worden gebruikt in implementaties zoals ATLAS. Meer recent, implementaties van Kazushige GoTo hebben aangetoond dat alleen blokkeren voor de L2 Cache, gecombineerd met voorzichtig afschrijving van kopiëren naar aaneengesloten geheugen om te verminderen TLB Mists, is superieur aan ATLAS.[23] Een zeer afgestemde implementatie op basis van deze ideeën maakt deel uit van de GOTOBLAS, Openblas en Blis.
Een veel voorkomende variatie van gemm
is de gemm3m
, dat een complex product berekent met behulp van "drie echte matrixvermenigvuldigingen en vijf echte matrixtoevoegingen in plaats van de conventionele vier reële matrixvermenigvuldigingen en twee echte matrixtoevoegingen", een algoritme dat vergelijkbaar is met Strassen -algoritme Voor het eerst beschreven door Peter Ungar.[24]
Implementaties
- Versnellen
- Appel's framework voor macos en iOS, waaronder afgestemde versies van Blas en Lapack.[25][26]
- ARM Performance Libraries
- ARM Performance Libraries, ondersteunend arm 64-bit AARCH64-gebaseerde processors, beschikbaar vanaf Arm.[5]
- ATLAS
- Automatisch afgestemde lineaire algebra -software, een open source Implementatie van BLAS API's voor C en FORTRAN 77.[27]
- Blis
- Blas-achtige bibliotheekinstantiatiefoftware-framework voor snelle instantiatie. Geoptimaliseerd voor de meeste moderne CPU's. Blis is een volledige refactoring van de Gotoblas die de hoeveelheid code vermindert die voor een bepaald platform moet worden geschreven.[28][29]
- C ++ amp blas
- De C ++ versterker Blas Library is een open source Implementatie van BLA's voor Microsoft's AMP -taaluitbreiding voor visuele C ++.[30]
- Cublas
- Geoptimaliseerde BLA's voor op NVIDIA gebaseerde GPU -kaarten, waarvoor weinig extra bibliotheekoproepen nodig zijn.[31]
- NVBLAS
- Geoptimaliseerde BLA's voor op NVIDIA gebaseerde GPU-kaarten, die alleen niveau 3-functies bieden, maar als directe drop-in vervanging voor andere BLAS-bibliotheken.[32]
- clblas
- Een OpenCL Implementatie van BLAS door AMD. Onderdeel van de AMD Compute Libraries.[33]
- klim
- Een afgestemd OpenCL Implementatie van de meeste BLAS API.[34]
- Eigen Blas
- A FORTRAN 77 en C Blas Library geïmplementeerd bovenop de MPL-licentie Eigen bibliotheek, ondersteuning x86, x86-64, Arm (neon), en Powerpc architecturen.
- ESSL
- IBM's engineering en wetenschappelijke subroutine bibliotheek, ter ondersteuning van de Powerpc architectuur onder AIX en Linux.[35]
- GOTOBLAS
- Kazushige GoTo's BSD-gelicentieerde implementatie van BLA's, in het bijzonder afgestemd op Intel Nehalem/Atoom, VIA Nanoprocessor, AMD OPTERON.[36]
- GNU wetenschappelijke bibliotheek
- Multi-platform implementatie van vele numerieke routines. Bevat een CBLAS -interface.
- HP Mlib
- Pk's Math Library Supporting IA-64, Pa-risc, x86 en OPTERON architectuur onder HP-ux en Linux.
- Intel MKL
- De Intel Wiskunde kernelbibliotheek, ondersteunende x86 32-bits en 64-bits, gratis beschikbaar van Intel.[7] Bevat optimalisaties voor Intel Pentium, Kern en intel Xeon CPU's en Intel Xeon Phi; ondersteuning voor Linux, ramen en macos.[37]
- Mathkeisan
- NEC's Math Library, ondersteunend NEC SX -architectuur onder Super-ux, en Itanium onder Linux[38]
- Netlib Blas
- De officiële referentie -implementatie op Netlib, geschreven in FORTRAN 77.[39]
- Netlib CBLA's
- Referentie C interface met de BLA's. Het is ook mogelijk (en populair) om de Fortran Blas uit C te noemen.[40]
- Openblas
- Geoptimaliseerde blas gebaseerd op gotoblas, ondersteunend x86, x86-64, Mips en ARM processors.[41]
- Pdlib/sx
- NEC's Public Domain Mathematical Library voor de NEC SX-4 systeem.[42]
- Rocblas
- Implementatie die doorloopt AMD GPU's via ROCM.[43]
- SCSL
- SGIDe Scientific Computing Software Library bevat BLAS- en lapack -implementaties voor SGI's IRIX werkstations.[44]
- Sun Performance Library
- Geoptimaliseerde blas en lapack voor Sparc, Kern en AMD64 Architecturen onder Solaris 8, 9 en 10 evenals Linux.[45]
- UBLAS
- Een generieke C ++ Template Class Library biedt BLAS -functionaliteit. Deel van de Boost -bibliotheek. Het biedt bindingen aan veel met hardware versnelde bibliotheken in een verenigende notatie. Bovendien richt UBLAS zich op de juistheid van de algoritmen met behulp van geavanceerde C ++ -functies.[46]
Bibliotheken gebruiken BLAS
- Gordeldier
- Gordeldier is een C ++ lineaire algebra -bibliotheek die gericht is op een goede balans tussen snelheid en gebruiksgemak. Het maakt gebruik van sjabloonklassen en heeft optionele links naar BLAS/ATLAS en LAPACK. Het wordt gesponsord door Nicta (in Australië) en heeft een vergunning onder een gratis licentie.[47]
- Lapack
- Lapack is een lineaire algebra -bibliotheek op een hoger niveau gebouwd op BLAS. Net als BLA's bestaat er een referentie -implementatie, maar er bestaan veel alternatieven zoals Libflame en MKL.
- Mir
- Een Llvm-versnelde generieke numerieke bibliotheek voor wetenschap en machine learning geschreven in D. Het biedt generieke lineaire algebra -subprogramma's (GLAS). Het kan worden gebouwd op een CBLAS -implementatie.[48]
Vergelijkbare bibliotheken (niet compatibel met BLAS)
- Elementair
- Elemental is een open source software voor gedistribueerde geheugen Dichte en schaarse-regerende lineaire algebra en optimalisatie.[49]
- Hasem
- is een C ++ sjabloonbibliotheek, in staat om lineaire vergelijkingen op te lossen en eigenwaarden te berekenen. Het heeft een vergunning onder BSD -licentie.[50]
- LAMA
- De bibliotheek voor versnelde wiskundetoepassingen (LAMA) is een C ++ -sjabloonbibliotheek voor het schrijven van numerieke oplossers die zich richten op verschillende soorten hardware (bijv. GPU's door Cuda of OpenCL) Aan Gedistribueerd geheugen systemen, het verbergen van de hardwarespecifieke programmering voor de programma -ontwikkelaar
- MTL4
- De Matrix -sjabloonbibliotheek Versie 4 is een generieke C ++ Sjabloonbibliotheek die schaarse en dichte BLAS -functionaliteit biedt. MTL4 stelt een intuïtieve interface vast (vergelijkbaar met Matlab) en brede toepasbaarheid dankzij generieke programmering.
Schaarse blas
Verschillende uitbreidingen naar BLAS voor het hanteren schaarse matrices zijn voorgesteld in de loop van de geschiedenis van de bibliotheek; Een kleine set schaarse matrix kernelroutines werd uiteindelijk gestandaardiseerd in 2002.[51]
Batched Blas
De traditionele BLAS -functies zijn ook overgedragen aan architecturen die grote hoeveelheden parallellisme ondersteunen, zoals GPU's. Hier bieden de traditionele BLAS -functies typisch goede prestaties voor grote matrices. Bij het berekenen van bijvoorbeeld, matrix-matrixproducten van veel kleine matrices met behulp van de GMMM-routine, vertonen die architecturen echter aanzienlijke prestatieverliezen. Om dit probleem aan te pakken, is in 2017 een Batched -versie van de BLAS -functie opgegeven.[52]
Als een voorbeeld van de GMM -routine van bovenaf als een voorbeeld, voert de Batched -versie de volgende berekening tegelijkertijd uit voor veel matrices:
De index tussen vierkante haakjes geeft aan dat de bewerking wordt uitgevoerd voor alle matrices in een stapel. Vaak wordt deze bewerking geïmplementeerd voor een doorstrekte geheugenlay -out waarbij alle matrices volgen in de arrays , en .
Batched BLAS -functies kunnen een veelzijdig hulpmiddel zijn en b.v. Een snelle implementatie van Exponentiële integrators en Magnus -integrators die lange integratieperioden afhandelen met vele tijdstappen.[53] Hier de matrix exponentiatie, het rekenkundig dure deel van de integratie, kan parallel worden geïmplementeerd voor alle tijdstappen met behulp van Batched BLAS-functies.
Zie ook
- Lijst met numerieke bibliotheken
- Wiskunde kernelbibliotheek, wiskundebibliotheek geoptimaliseerd voor de Intel architectuur; Inclusief blas, lapack
- Numerieke lineaire algebra, het type probleem dat Blas oplost
Referenties
- ^ a b * Lawson, C. L.; Hanson, R. J.; Kincaid, D.; Krogh, F. T. (1979). "Basic lineaire algebra subprogramma's voor Fortran -gebruik". ACM trans. Wiskunde. Softw. 5 (3): 308–323. doen:10.1145/355841.355847. HDL:2060/19780018835. S2CID 6585321. Algoritme 539.
- ^ "BLAS Technical Forum". netlib.org. Opgehaald 2017-07-07.
- ^ blaseman Gearchiveerd 2016-10-12 op de Wayback -machine "De producten zijn de implementaties van de Public Domain BLAS (Basic lineaire algebra subprogramma's) en lapack (lineair algebra -pakket), die zijn ontwikkeld door groepen mensen zoals prof. Jack Dongarra, University of Tennessee, VS en allemaal gepubliceerd op de VS en allemaal gepubliceerd op de VS en allemaal gepubliceerd op de VS. Www (url: http://www.netlib.org/). "[Permanente dode link]
- ^ Jack Dongarra; Gene Golub; Eric Grosse; Cleve Moler; Keith Moore. "Netlib en Na-Net: een wetenschappelijke computergemeenschap bouwen" (PDF). netlib.org. Opgehaald 2016-02-13.
De Netlib Software Repository is gemaakt in 1984 om een snelle distributie van softwareroutines van het publieke domeinsoftware voor gebruik bij wetenschappelijke berekening te vergemakkelijken.
- ^ a b "ARM Performance Libraries". Arm. 2020. Opgehaald 2020-12-16.
- ^ "Blas Library".
- ^ a b "Geen kostenopties voor Intel Math Kernel Library (MKL), steun jezelf, royaltyvrij". Intel. 2015. Opgehaald 2015-08-31.
- ^ "Intel Math Kernel Library (Intel MKL)". Intel. 2015. Opgehaald 2015-08-25.
- ^ "Optimalisatie -kennisgeving". Intel. 2012. Opgehaald 2013-04-10.
- ^ Douglas Quinney (2003). "Dus wat is er nieuw in Mathematica 5.0?" (PDF). MSOR -verbindingen. De Higher Education Academy. 3 (4). Gearchiveerd van het origineel (PDF) op 2013-10-29.
- ^ Cleve Moler (2000). "Matlab neemt lapack op". MathWorks. Opgehaald 2013-10-26.
- ^ Stéfan van der Walt; S. Chris Colbert & Gaël Varoquaux (2011). "De Numpy Array: een structuur voor efficiënte numerieke berekening". Computeren in wetenschap en engineering. 13 (2): 22–30. arxiv:1102.1523. Bibcode:2011cse .... 13b..22v. doen:10.1109/mcse.2011.37. S2CID 16907816.
- ^ Boisvert, Ronald F. (2000). "Wiskundige software: verleden, heden en toekomst". Wiskunde en computers in simulatie. 54 (4–5): 227–241. arxiv:CS/0004004. Bibcode:2000cs ........ 4004b. doen:10.1016/s0378-4754 (00) 00185-3. S2CID 15157725.
- ^ Zelfs de SSP (die rond 1966 verscheen) had enkele basisroutines, zoals Radd (rijen toevoegen), CADD (kolommen toevoegen), SRMA (schaalrij en toevoeging aan een andere rij) en Rint (Row Interchange). Deze routines werden blijkbaar niet gebruikt als kerneloperaties om andere routines zoals matrixinversie te implementeren. Zien IBM (1970), Systeem/360 Wetenschappelijk subroutine -pakket, versie III, programmeurhandleiding (5e ed.), International Business Machines, GH20-0205-4.
- ^ Blast Forum 2001, p. 1.
- ^ Lawson et al. 1979.
- ^ Blast Forum 2001, pp. 1–2.
- ^ Blast Forum 2001, p. 2.
- ^ a b Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Duff, Iain S. (1990). "Een set basis 3 basis lineaire algebra subprogramma's". ACM -transacties op wiskundige software. 16 (1): 1–17. doen:10.1145/77626.79170. ISSN 0098-3500. S2CID 52873593.
- ^ a b Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Hanson, Richard J. (1988). "Een uitgebreide set van Fortran Basic lineaire algebra -subprogramma's". ACM trans. Wiskunde. Softw. 14: 1–17. Citeseerx 10.1.1.17.5421. doen:10.1145/42288.42291. S2CID 3579623.
- ^ GoTo, Kazushige; Van de Geijn, Robert A. (2008). "High-performance implementatie van de Level-3 BLAS" (PDF). ACM -transacties op wiskundige software. 35 (1): 1–14. doen:10.1145/1377603.1377607. S2CID 14722514.
- ^ Golub, Gene H.; Van lening, Charles F. (1996), Matrixberekeningen (3e ed.), Johns Hopkins, ISBN 978-0-8018-5414-9
- ^ GoTo, Kazushige; Van de Geijn, Robert A. (2008). "Anatomie van krachtige matrixvermenigvuldiging". ACM -transacties op wiskundige software. 34 (3): 12: 1–12: 25. Citeseerx 10.1.1.111.3873. doen:10.1145/1356052.1356053. ISSN 0098-3500. S2CID 9359223. (25 pagina's) [1]
- ^ Van Zee, Field G.; Smith, Tyler M. (2017-07-24). "Implementatie van krachtige complexe matrixvermenigvuldiging via de 3M- en 4M-methoden". ACM -transacties op wiskundige software. 44 (1): 1–36. doen:10.1145/3086466. S2CID 25580883.
- ^ "Gidsen en voorbeeldcode". ontwikkelaar.apple.com. Opgehaald 2017-07-07.
- ^ "Gidsen en voorbeeldcode". ontwikkelaar.apple.com. Opgehaald 2017-07-07.
- ^ "Automatisch afgestemd lineaire algebra software (ATLAS)". Math-atlas.sourceforge.net. Opgehaald 2017-07-07.
- ^ Blis: Blas-achtige bibliotheekinstantiatiefoftware-framework, Flame, 2017-06-30, opgehaald 2017-07-07
- ^ Blis GitHub Repository, 2021-10-15
- ^ "C ++ AMP Blas Library". Codeplex. Gearchiveerd van het origineel op 2017-07-08. Opgehaald 2017-07-07.
- ^ "Cublas". NVIDIA -ontwikkelaar. 2013-07-29. Opgehaald 2017-07-07.
- ^ "NVBLAS". NVIDIA -ontwikkelaar. 2018-05-15. Opgehaald 2018-05-15.
- ^ Clblas: een softwarebibliotheek met BLAS -functies geschreven in OpenCL, ClMathlibraries, 2017-07-03, opgehaald 2017-07-07
- ^ NUGTEREN, CEDRIC (2017-07-05), CLBlast: Tuned OpenCl Blas, opgehaald 2017-07-07
- ^ IBM Knowledge Center: Engineering and Scientific Subroutine Library
- ^ Milfeld, Kent. "GoTOBLAS2". Texas Advanced Computing Center. Gearchiveerd Van het origineel op 2020-03-23. Opgehaald 2013-08-28.
- ^ "Intel Math Kernel Library (Intel MKL) | Intel -software". software.intel.com. Opgehaald 2017-07-07.
- ^ Mathkeisan, NEC. "Mathkeisan". www.mathkeisan.com. Opgehaald 2017-07-07.
- ^ "BLAS (basis lineaire algebra subprogramma's)". www.netlib.org. Opgehaald 2017-07-07.
- ^ "BLAS (basis lineaire algebra subprogramma's)". www.netlib.org. Opgehaald 2017-07-07.
- ^ "OpenBLAS: een geoptimaliseerde BLAS -bibliotheek". www.openblas.net. Opgehaald 2017-07-07.
- ^ "PDLIB/SX: bedrijfsoplossing | NEC". Gearchiveerd van het origineel op 2007-02-22. Opgehaald 2007-05-20.
- ^ "Rocblas". rocmdocs.amd.com. Opgehaald 2021-05-21.
- ^ "SGI - SCSL Scientific Library: startpagina". Gearchiveerd van het origineel op 2007-05-13. Opgehaald 2007-05-20.
- ^ "Oracle Developer Studio". www.oracle.com. Opgehaald 2017-07-07.
- ^ "Boost Basic Linear Algebra - 1.60.0". www.boost.org. Opgehaald 2017-07-07.
- ^ "Armadillo: C ++ lineaire algebra -bibliotheek". arma.sourceforge.net. Opgehaald 2017-07-07.
- ^ "Dlang numerieke en systeembibliotheken". Gitub.
- ^ "Elementair: Distributed-Memory Dense en Sparse-Direct lineaire algebra en optimalisatie-elementair". laadbladen.org. Opgehaald 2017-07-07.
- ^ "HADEM". Bronforge. Opgehaald 2017-07-07.
- ^ Duff, Iain S.; Heroux, Michael A.; Pozo, Roldan (2002). "Een overzicht van de schaarse basis lineaire algebra -subprogramma's: de nieuwe standaard van het BLAS Technical Forum". ACM -transacties op wiskundige software. 28 (2): 239–267. doen:10.1145/567806.567810. S2CID 9411006.
- ^ Dongarra, Jack; Hammarling, Sven; Higham, Nicholas J.; Relon, Samuel D.; Valero-Lara, Pedro; Zounon, Mawussi (2017). "Het ontwerp en de prestaties van Batched BLA's op moderne high-performance computersystemen". Procedia informatica. 108: 495–504. doen:10.1016/j.procs.2017.05.138.
- ^ Herb, Konstantin; Welter, Pol (2022). "Parallelle tijdintegratie met behulp van Batched BLAS (Basic Linear Algebra -subprogramma's) routines". Computerfysica -communicatie. 270: 108181. arxiv:2108.07126. Bibcode:2022cophc.27008181H. doen:10.1016/j.cpc.2021.108181. S2CID 237091802.
Verder lezen
- Blast Forum (2001-08-21), Basic lineaire algebra subprogramma's Technical (BLAST) forumstandaard, Knoxville, TN: University of Tennessee
- Dodson, D. S.; Grimes, R. G. (1982), "Opmerking over algoritme 539: Basic lineaire algebra subprogramma's voor Fortran -gebruik", ACM trans. Wiskunde. Softw., 8 (4): 403–404, doen:10.1145/356012.356020, S2CID 43081631
- Dodson, D. S. (1983), "Corrigendum: Opmerking over" Algorithm 539: Basic lineaire algebra subroutines voor Fortran -gebruik "", ACM trans. Wiskunde. Softw., 9: 140, doen:10.1145/356022.356032, S2CID 22163977
- J. J. Dongarra, J. Du Croz, S. Hammarling en R. J. Hanson, Algorithm 656: een uitgebreide set van Fortran Basic Linear Algebra -subprogramma's, ACM Trans. Wiskunde. Softw., 14 (1988), pp. 18–32.
- J. J. Dongarra, J. Du Croz, I. S. Duff, en S. Hammarling, een set van niveau 3 Basic lineaire algebra -subprogramma's, ACM Trans. Wiskunde. Softw., 16 (1990), pp. 1–17.
- J. J. Dongarra, J. Du Croz, I. S. Duff en S. Hammarling, Algoritm 679: een set van niveau 3 Basic lineaire algebra subprogramma's, ACM Trans. Wiskunde. Softw., 16 (1990), pp. 18–28.
- NIEUWE BLAS
- L. S. Blackford, J. Demmel, J. Dongarra, I. Duff, S. Hammarling, G. Henry, M. Heroux, L. Kaufman, A. Lumsdaine, A. Petitet, R. Pozo, K. Remington, R. C. Whaley, Een bijgewerkte set basis lineaire algebra -subprogramma's (BLAS), ACM Trans. Wiskunde. Softw., 28-2 (2002), pp. 135–151.
- J. Dongarra, Basic Linear Algebra Subprogramma's Technical Forum Standard, International Journal of High Performance Applications and Supercomputing, 16 (1) (2002), pp. 1–111 en International Journal of High Performance Applications and Supercomputing, 16 (2) ( 2002), pp. 115–199.
Externe links
- Blas -startpagina op netlib.org
- Blas FAQ
- Blas Quick Reference Guide van Lapack Users 'Guide
- Lawson mondelinge geschiedenis Een van de originele auteurs van de BLA's bespreekt de creatie ervan in een interview met mondelinge geschiedenis. Charles L. Lawson Oral History Interview door Thomas Haigh, 6 en 7 november 2004, San Clemente, Californië. Society for Industrial and Applied Mathematics, Philadelphia, PA.
- Dongarra mondelinge geschiedenis In een interview met mondeling geschiedenis onderzoekt Jack Dongarra de vroege relatie van BLAS met LinPack, het creëren van BLAS -versies op hoger niveau voor nieuwe architecturen en zijn latere werk aan het Atlas -systeem om BLA's automatisch te optimaliseren voor bepaalde machines.Jack Dongarra, Mondeling Geschiedenis Interview door Thomas Haigh, 26 april 2005, Universiteit van Tennessee, Knoxville TN.Society for Industrial and Applied Mathematics, Philadelphia, PA
- Hoe krijgt BLA's zulke extreme prestaties? Tien naïeve 1000 × 1000 matrix vermenigvuldigingen (1010 Floating Point Multipy-Adds) duurt 15,77 seconden op 2,6 GHz-processor; BLAS -implementatie duurt 1,32 seconden.
- Een overzicht van de schaarse basis lineaire algebra -subprogramma's: de nieuwe standaard van het BLAS Technical Forum [2]