Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Basic Linear Algebra Subprograms

From Wikipedia, the free encyclopedia
(Redirected fromBLAS)
Routines for performing common linear algebra operations

BLAS
Initial releaseSeptember 1979; 46 years ago (1979-09)[1]
Stable release
3.11.0 / 11 November 2022; 3 years ago (2022-11-11)
Written independs on implementation
PlatformCross-platform
TypeLibrary
Websitewww.netlib.org/blas/

Basic Linear Algebra Subprograms (BLAS) is aspecification that prescribes a set of low-level routines for performing commonlinear algebra operations such asvector addition,scalar multiplication,dot products, linear combinations, andmatrix multiplication. They are thede facto standard low-level routines for linear algebra libraries; the routines have bindings for bothC ("CBLAS interface") andFortran ("BLAS interface"). Although the BLAS specification is general, BLAS implementations are often optimized for speed on a particular machine, so using them can bring substantial performance benefits. BLAS implementations will take advantage of special floating point hardware such as vector registers orSIMD instructions.

It originated as a Fortran library in 1979[1] and its interface was standardized by the BLAS Technical (BLAST) Forum, whose latest BLAS report can be found on thenetlib website.[2] This Fortran library is known as thereference implementation (sometimes confusingly referred to asthe BLAS library) and is not optimized for speed but is in thepublic domain.[3][4]

Most libraries that offer linear algebra routines conform to the BLAS interface, allowing library users to develop programs that are indifferent to the BLAS library being used.

Many BLAS libraries have been developed, targeting various different hardware platforms. Examples includescuBLAS (NVIDIA GPU,GPGPU),rocBLAS (AMD GPU), andOpenBLAS. Examples of CPU-based BLAS library branches include:OpenBLAS,BLIS (BLAS-like Library Instantiation Software), Arm Performance Libraries,[5]ATLAS, andIntel Math Kernel Library (iMKL). AMD maintains a fork of BLIS that is optimized for theAMD platform.[6] ATLAS is a portable library that automatically optimizes itself for an arbitrary architecture. iMKL is a freeware[7] and proprietary[8] vendor library optimized for x86 and x86-64 with a performance emphasis onIntel processors.[9] OpenBLAS is an open-source library that is hand-optimized for many of the popular architectures. TheLINPACK benchmarks rely heavily on the BLAS routinegemm for its performance measurements.

Many numerical software applications use BLAS-compatible libraries to do linear algebra computations, includingLAPACK,LINPACK,Armadillo,GNU Octave,Mathematica,[10]MATLAB,[11]NumPy,[12]R,Julia and Lisp-Stat.

TheC++std::linalg library, introduced inC++26, is based on BLAS.

Background

[edit]

With the advent of numerical programming, sophisticated subroutine libraries became useful. These libraries would contain subroutines for common high-level mathematical operations such as root finding, matrix inversion, and solving systems of equations. The language of choice wasFORTRAN. The most prominent numerical programming library wasIBM'sScientific Subroutine Package (SSP).[13] These subroutine libraries allowed programmers to concentrate on their specific problems and avoid re-implementing well-known algorithms. The library routines would also be better than average implementations; matrix algorithms, for example, might use full pivoting to get better numerical accuracy. The library routines would also have more efficient routines. For example, a library may include a program to solve a matrix that is upper triangular. The libraries would include single-precision and double-precision versions of some algorithms.

Initially, these subroutines used hard-coded loops for their low-level operations. For example, if a subroutine needed to perform a matrix multiplication, then the subroutine would have three nested loops. Linear algebra programs have many common low-level operations (the so-called "kernel" operations, not related tooperating systems).[14] Between 1973 and 1977, several of these kernel operations were identified.[15][16] These kernel operations became defined subroutines that math libraries could call. The kernel calls had advantages over hard-coded loops: the library routine would be more readable, there were fewer chances for bugs, and the kernel implementation could be optimized for speed. A specification for these kernel operations usingscalars andvectors, the level-1 Basic Linear Algebra Subroutines (BLAS), was published in 1979.[17] BLAS was used to implement the linear algebra subroutine libraryLINPACK.

The BLAS abstraction allows customization for high performance. For example, LINPACK is a general purpose library that can be used on many different machines without modification. LINPACK could use a generic version of BLAS. To gain performance, different machines might use tailored versions of BLAS. As computer architectures became more sophisticated,vector machines appeared. BLAS for a vector machine could use the machine's fast vector operations. (While vector processors eventually fell out of favor, vector instructions in modern CPUs are essential for optimal performance in BLAS routines.)

Other machine features became available and could also be exploited. Consequently, BLAS was augmented from 1984 to 1986 with level-2 kernel operations that concerned vector-matrix operations. Memory hierarchy was also recognized as something to exploit. Many computers havecache memory that is much faster than main memory; keeping matrix manipulations localized allows better usage of the cache. In 1987 and 1988, the level 3 BLAS were identified to do matrix-matrix operations. The level 3 BLAS encouraged block-partitioned algorithms. TheLAPACK library uses level 3 BLAS.[18]

The original BLAS concerned only densely stored vectors and matrices. Further extensions to BLAS, such as for sparse matrices, have been addressed.[19]


Functionality

[edit]

BLAS functionality is categorized into three sets of routines called "levels", which correspond to both the chronological order of definition and publication, as well as the degree of the polynomial in the complexities of algorithms; Level 1 BLAS operations typically takelinear time,O(n), Level 2 operations quadratic time and Level 3 operations cubic time.[20] Modern BLAS implementations typically provide all three levels.

Level 1

[edit]

This level consists of all the routines described in the original presentation of BLAS (1979),[1] which defined onlyvector operations onstrided arrays:dot products,vector norms, a generalized vector addition of the form

yαx+y{\displaystyle {\boldsymbol {y}}\leftarrow \alpha {\boldsymbol {x}}+{\boldsymbol {y}}}

(called "axpy", "a x plus y") and several other operations.

Level 2

[edit]

This level containsmatrix-vector operations including, among other things, ageneralizedmatrix-vector multiplication (gemv):

yαAx+βy{\displaystyle {\boldsymbol {y}}\leftarrow \alpha {\boldsymbol {A}}{\boldsymbol {x}}+\beta {\boldsymbol {y}}}

as well as a solver forx in the linear equation

Tx=y{\displaystyle {\boldsymbol {T}}{\boldsymbol {x}}={\boldsymbol {y}}}

withT being triangular. Design of the Level 2 BLAS started in 1984, with results published in 1988.[21] The Level 2 subroutines are especially intended to improve performance of programs using BLAS onvector processors, where Level 1 BLAS are suboptimal "because they hide the matrix-vector nature of the operations from the compiler."[21]

Level 3

[edit]

This level, formally published in 1990,[20] containsmatrix-matrix operations, including a "generalmatrix multiplication" (gemm), of the form

CαAB+βC,{\displaystyle {\boldsymbol {C}}\leftarrow \alpha {\boldsymbol {A}}{\boldsymbol {B}}+\beta {\boldsymbol {C}},}

whereA andB can optionally betransposed orhermitian-conjugated inside the routine, and all three matrices may be strided. The ordinary matrix multiplicationA B can be performed by settingα to one andC to an all-zeros matrix of the appropriate size.

Also included in Level 3 are routines for computing

BαT1B,{\displaystyle {\boldsymbol {B}}\leftarrow \alpha {\boldsymbol {T}}^{-1}{\boldsymbol {B}},}

whereT is atriangular matrix, among other functionality.

Due to the ubiquity of matrix multiplications in many scientific applications, including for the implementation of the rest of Level 3 BLAS,[22] and because faster algorithms exist beyond the obvious repetition of matrix-vector multiplication,gemm is a prime target of optimization for BLAS implementers. E.g., by decomposing one or both ofA,B intoblock matrices,gemm can beimplemented recursively. This is one of the motivations for including theβ parameter,[dubiousdiscuss] so the results of previous blocks can be accumulated. Note that this decomposition requires the special caseβ = 1 which many implementations optimize for, thereby eliminating one multiplication for each value ofC. This decomposition allows for betterlocality of reference both in space and time of the data used in the product. This, in turn, takes advantage of thecache on the system.[23] For systems with more than one level of cache, the blocking can be applied a second time to the order in which the blocks are used in the computation. Both of these levels of optimization are used in implementations such asATLAS. More recently, implementations byKazushige Goto have shown that blocking only for theL2 cache, combined with carefulamortizing of copying to contiguous memory to reduceTLB misses, is superior toATLAS.[24] A highly tuned implementation based on these ideas is part of theGotoBLAS,OpenBLAS andBLIS.

A common variation ofgemm is thegemm3m, which calculates a complex product using "three real matrix multiplications and five real matrix additions instead of the conventional four real matrix multiplications and two real matrix additions", an algorithm similar toStrassen algorithm first described by Peter Ungar.[25]

Implementations

[edit]
Accelerate
Apple's framework formacOS andiOS, which includes tuned versions ofBLAS andLAPACK.[26][27]
Arm Performance Libraries
Arm Performance Libraries, supporting Arm 64-bitAArch64-based processors, available fromArm.[5]
ATLAS
Automatically Tuned Linear Algebra Software, anopen source implementation of BLASAPIs forC andFortran 77.[28]
BLIS
BLAS-like Library Instantiation Software framework for rapid instantiation. Optimized for most modern CPUs. BLIS is a complete refactoring of the GotoBLAS that reduces the amount of code that must be written for a given platform.[29][30]
C++ AMP BLAS
TheC++ AMP BLAS Library is anopen source implementation of BLAS for Microsoft's AMP language extension for Visual C++.[31]
cuBLAS
Optimized BLAS for Nvidia-based GPU cards, requiring few additional library calls.[32]
NVBLAS
Optimized BLAS for Nvidia-based GPU cards, providing only Level 3 functions, but as direct drop-in replacement for other BLAS libraries.[33]
clBLAS
AnOpenCL implementation of BLAS by AMD. Part of the AMD Compute Libraries.[34]
clBLAST
A tunedOpenCL implementation of most of the BLAS api.[35]
Eigen BLAS
AFortran 77 andC BLAS library implemented on top of theMPL-licensedEigen library, supportingx86,x86-64,ARM (NEON), andPowerPC architectures.
ESSL
IBM's Engineering and Scientific Subroutine Library, supporting thePowerPC architecture underAIX andLinux.[36]
GotoBLAS
Kazushige Goto's BSD-licensed implementation of BLAS, tuned in particular forIntelNehalem/Atom,VIANanoprocessor,AMDOpteron.[37]
GNU Scientific Library
Multi-platform implementation of many numerical routines. Contains a CBLAS interface.
HP MLIB
HP's Math library supportingIA-64,PA-RISC,x86 andOpteron architecture underHP-UX andLinux.
Intel MKL
TheIntelMath Kernel Library, supporting x86 32-bits and 64-bits, available free fromIntel.[7] Includes optimizations for IntelPentium,Core and IntelXeon CPUs and IntelXeon Phi; support forLinux,Windows andmacOS.[38]
MathKeisan
NEC's math library, supportingNEC SX architecture underSUPER-UX, andItanium underLinux[39]
Netlib BLAS
The official reference implementation onNetlib, written inFortran 77.[40]
Netlib CBLAS
ReferenceC interface to the BLAS. It is also possible (and popular) to call the Fortran BLAS from C.[41]
OpenBLAS
Optimized BLAS based on GotoBLAS, supportingx86,x86-64,MIPS,ARM andRISC-V processors.[42]
PDLIB/SX
NEC's Public Domain Mathematical Library for the NECSX-4 system.[43]
rocBLAS
Implementation that runs onAMD GPUs viaROCm.[44]
SCSL
SGI's Scientific Computing Software Library contains BLAS and LAPACK implementations for SGI'sIrix workstations.[45]
Sun Performance Library
Optimized BLAS and LAPACK forSPARC,Core andAMD64 architectures underSolaris 8, 9, and 10 as well as Linux.[46]
uBLAS
A genericC++ template class library providing BLAS functionality. Part of theBoost library. It provides bindings to many hardware-accelerated libraries in a unifying notation. Moreover, uBLAS focuses on correctness of the algorithms using advanced C++ features.[47]

Libraries using BLAS

[edit]
Armadillo
Armadillo is a C++ linear algebra library aiming towards a good balance between speed and ease of use. It employs template classes, and has optional links to BLAS/ATLAS and LAPACK. It is sponsored byNICTA (in Australia) and is licensed under a free license.[48]
LAPACK
LAPACK is a higher level Linear Algebra library built upon BLAS. Like BLAS, a reference implementation exists, but many alternatives like libFlame and MKL exist.
Mir
AnLLVM-accelerated generic numerical library for science and machine learning written inD. It provides generic linear algebra subprograms (GLAS). It can be built on a CBLAS implementation.[49]

Similar libraries (not compatible with BLAS)

[edit]
See also:LAPACK § Similar projects
Elemental
Elemental is an open source software fordistributed-memory dense and sparse-direct linear algebra and optimization.[50]
HASEM
is a C++ template library, being able to solve linear equations and to compute eigenvalues. It is licensed under BSD License.[51]
LAMA
The Library for Accelerated Math Applications (LAMA) is a C++ template library for writing numerical solvers targeting various kinds of hardware (e.g.GPUs throughCUDA orOpenCL) ondistributed memory systems, hiding the hardware specific programming from the program developer
MTL4
TheMatrix Template Library version 4 is a genericC++ template library providing sparse and dense BLAS functionality. MTL4 establishes an intuitive interface (similar toMATLAB) and broad applicability thanks togeneric programming.

Sparse BLAS

[edit]

Several extensions to BLAS for handlingsparse matrices have been suggested over the course of the library's history; a small set of sparse matrix kernel routines was finally standardized in 2002.[52]

Batched BLAS

[edit]

The traditional BLAS functions have been also ported to architectures that support large amounts of parallelism such asGPUs. Here, the traditional BLAS functions provide typically good performance for large matrices. However, when computing e.g., matrix-matrix-products of many small matrices by using the GEMM routine, those architectures show significant performance losses. To address this issue, in 2017 a batched version of the BLAS function has been specified.[53]

Taking the GEMM routine from above as an example, the batched version performs the following computation simultaneously for many matrices:

C[k]αA[k]B[k]+βC[k]k{\displaystyle {\boldsymbol {C}}[k]\leftarrow \alpha {\boldsymbol {A}}[k]{\boldsymbol {B}}[k]+\beta {\boldsymbol {C}}[k]\quad \forall k}

The indexk{\displaystyle k} in square brackets indicates that the operation is performed for all matricesk{\displaystyle k} in a stack. Often, this operation is implemented for a strided batched memory layout where all matrices follow concatenated in the arraysA{\displaystyle A},B{\displaystyle B} andC{\displaystyle C}.

Batched BLAS functions can be a versatile tool and allow e.g. a fast implementation ofexponential integrators andMagnus integrators that handle long integration periods with many time steps.[54] Here, thematrix exponentiation, the computationally expensive part of the integration, can be implemented in parallel for all time-steps by using Batched BLAS functions.

See also

[edit]

References

[edit]
  1. ^abc*Lawson, C. L.; Hanson, R. J.; Kincaid, D.; Krogh, F. T. (1979). "Basic Linear Algebra Subprograms for FORTRAN usage".ACM Trans. Math. Softw.5 (3):308–323.doi:10.1145/355841.355847.hdl:2060/19780018835.S2CID 6585321. Algorithm 539.
  2. ^"BLAS Technical Forum".netlib.org. Retrieved2017-07-07.
  3. ^blasemanArchived 2016-10-12 at theWayback Machine"The products are the implementations of the public domain BLAS (Basic Linear Algebra Subprograms) and LAPACK (Linear Algebra PACKage), which have been developed by groups of people such as Prof. Jack Dongarra, University of Tennessee, USA and all published on the WWW (URL:https://www.netlib.org/)."[permanent dead link]
  4. ^Jack Dongarra; Gene Golub; Eric Grosse; Cleve Moler; Keith Moore."Netlib and NA-Net: building a scientific computing community"(PDF). netlib.org. Retrieved2016-02-13.The Netlib software repository was created in 1984 to facilitate quick distribution of public domain software routines for use in scientific computation.
  5. ^ab"Arm Performance Libraries".Arm. 2020. Retrieved2020-12-16.
  6. ^"BLAS Library".
  7. ^ab"No Cost Options for Intel Math Kernel Library (MKL), Support yourself, Royalty-Free".Intel. 2015. Retrieved2015-08-31.
  8. ^"Intel Math Kernel Library (Intel MKL)".Intel. 2015. Retrieved2015-08-25.
  9. ^"Optimization Notice".Intel. 2012. Retrieved2013-04-10.
  10. ^Douglas Quinney (2003)."So what's new in Mathematica 5.0?"(PDF).MSOR Connections.3 (4). The Higher Education Academy. Archived fromthe original(PDF) on 2013-10-29.
  11. ^Cleve Moler (2000)."MATLAB Incorporates LAPACK".MathWorks. Retrieved2013-10-26.
  12. ^Stéfan van der Walt; S. Chris Colbert & Gaël Varoquaux (2011). "The NumPy array: a structure for efficient numerical computation".Computing in Science and Engineering.13 (2):22–30.arXiv:1102.1523.Bibcode:2011CSE....13b..22V.doi:10.1109/MCSE.2011.37.S2CID 16907816.
  13. ^Boisvert, Ronald F. (2000). "Mathematical software: past, present, and future".Mathematics and Computers in Simulation.54 (4–5):227–241.arXiv:cs/0004004.Bibcode:2000cs........4004B.doi:10.1016/S0378-4754(00)00185-3.S2CID 15157725.
  14. ^Even the SSP (which appeared around 1966) had some basic routines such as RADD (add rows), CADD (add columns), SRMA (scale row and add to another row), and RINT (row interchange). These routines apparently were not used as kernel operations to implement other routines such as matrix inversion. SeeIBM (1970),System/360 Scientific Subroutine Package, Version III, Programmer's Manual (5th ed.), International Business Machines, GH20-0205-4.
  15. ^BLAST Forum 2001, p. 1.
  16. ^Hanson, R.J; Krogh, F.T; Lawson, C.L (1973-10-01)."Improving the efficiency of portable software for linear algebra".ACM SIGNUM Newsletter.8 (4): 16.doi:10.1145/1052646.1052653. Retrieved2026-02-06.
  17. ^Lawson et al. 1979.
  18. ^BLAST Forum 2001, pp. 1–2.
  19. ^BLAST Forum 2001, p. 2.
  20. ^abDongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Duff, Iain S. (1990)."A set of level 3 basic linear algebra subprograms".ACM Transactions on Mathematical Software.16 (1):1–17.doi:10.1145/77626.79170.ISSN 0098-3500.S2CID 52873593.
  21. ^abDongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Hanson, Richard J. (1988). "An extended set of FORTRAN Basic Linear Algebra Subprograms".ACM Trans. Math. Softw.14:1–17.CiteSeerX 10.1.1.17.5421.doi:10.1145/42288.42291.S2CID 3579623.
  22. ^Goto, Kazushige;van de Geijn, Robert A. (2008)."High-performance implementation of the level-3 BLAS"(PDF).ACM Transactions on Mathematical Software.35 (1):1–14.doi:10.1145/1377603.1377607.S2CID 14722514. Archived fromthe original(PDF) on 2017-07-06.
  23. ^Golub, Gene H.;Van Loan, Charles F. (1996),Matrix Computations (3rd ed.), Johns Hopkins,ISBN 978-0-8018-5414-9
  24. ^Goto, Kazushige;van de Geijn, Robert A. (2008). "Anatomy of High-Performance Matrix Multiplication".ACM Transactions on Mathematical Software.34 (3): 12:1–12:25.CiteSeerX 10.1.1.111.3873.doi:10.1145/1356052.1356053.ISSN 0098-3500.S2CID 9359223. (25 pages)[1]
  25. ^Van Zee, Field G.; Smith, Tyler M. (2017-07-24). "Implementing High-performance Complex Matrix Multiplication via the 3m and 4m Methods".ACM Transactions on Mathematical Software.44 (1):1–36.doi:10.1145/3086466.S2CID 25580883.
  26. ^"Guides and Sample Code".developer.apple.com. Retrieved2017-07-07.
  27. ^"Guides and Sample Code".developer.apple.com. Retrieved2017-07-07.
  28. ^"Automatically Tuned Linear Algebra Software (ATLAS)".math-atlas.sourceforge.net. Retrieved2017-07-07.
  29. ^blis: BLAS-like Library Instantiation Software Framework, flame, 2017-06-30, retrieved2017-07-07
  30. ^BLIS GitHub Repository, 2021-10-15
  31. ^"C++ AMP BLAS Library".CodePlex. Archived fromthe original on 2017-07-08. Retrieved2017-07-07.
  32. ^"cuBLAS".NVIDIA Developer. 2013-07-29. Retrieved2017-07-07.
  33. ^"NVBLAS".NVIDIA Developer. 2018-05-15. Retrieved2018-05-15.[permanent dead link]
  34. ^clBLAS: a software library containing BLAS functions written in OpenCL, clMathLibraries, 2017-07-03, retrieved2017-07-07
  35. ^Nugteren, Cedric (2017-07-05),CLBlast: Tuned OpenCL BLAS, retrieved2017-07-07
  36. ^IBM Knowledge Centre: Engineering and Scientific Subroutine Library
  37. ^Milfeld, Kent."GotoBLAS2".Texas Advanced Computing Center. Archived fromthe original on 2020-03-23. Retrieved2024-03-17.
  38. ^"Intel Math Kernel Library (Intel MKL) | Intel Software".software.intel.com. Retrieved2017-07-07.
  39. ^Mathkeisan, NEC."MathKeisan".www.mathkeisan.com. Retrieved2017-07-07.
  40. ^"BLAS (Basic Linear Algebra Subprograms)".www.netlib.org. Retrieved2017-07-07.
  41. ^"BLAS (Basic Linear Algebra Subprograms)".www.netlib.org. Retrieved2017-07-07.
  42. ^"OpenBLAS: An optimized BLAS library".www.openblas.net. Retrieved2017-07-07.
  43. ^"PDLIB/SX: Business Solution | NEC". Archived fromthe original on 2007-02-22. Retrieved2007-05-20.
  44. ^"rocBLAS".rocmdocs.amd.com. Archived fromthe original on 2021-05-22. Retrieved2021-05-21.
  45. ^"SGI - SCSL Scientific Library: Home Page". Archived fromthe original on 2007-05-13. Retrieved2007-05-20.
  46. ^"Oracle Developer Studio".www.oracle.com. Retrieved2017-07-07.
  47. ^"Boost Basic Linear Algebra - 1.60.0".www.boost.org. Retrieved2017-07-07.
  48. ^"Armadillo: C++ linear algebra library".arma.sourceforge.net. Retrieved2017-07-07.
  49. ^"Dlang Numerical and System Libraries".GitHub.
  50. ^"Elemental: distributed-memory dense and sparse-direct linear algebra and optimization — Elemental".libelemental.org. Archived from the original on 2013-08-01. Retrieved2017-07-07.
  51. ^"HASEM".SourceForge. 2015-08-17. Retrieved2017-07-07.
  52. ^Duff, Iain S.; Heroux, Michael A.; Pozo, Roldan (2002). "An Overview of the Sparse Basic Linear Algebra Subprograms: The New Standard from the BLAS Technical Forum".ACM Transactions on Mathematical Software.28 (2):239–267.doi:10.1145/567806.567810.S2CID 9411006.
  53. ^Dongarra, Jack; Hammarling, Sven; Higham, Nicholas J.; Relton, Samuel D.; Valero-Lara, Pedro; Zounon, Mawussi (2017)."The Design and Performance of Batched BLAS on Modern High-Performance Computing Systems".Procedia Computer Science.108:495–504.doi:10.1016/j.procs.2017.05.138.hdl:2117/106913.
  54. ^Herb, Konstantin; Welter, Pol (2022). "Parallel time integration using Batched BLAS (Basic Linear Algebra Subprograms) routines".Computer Physics Communications.270 108181.arXiv:2108.07126.Bibcode:2022CoPhC.27008181H.doi:10.1016/j.cpc.2021.108181.S2CID 237091802.

Further reading

[edit]
  • BLAST Forum (2001-08-21),Basic Linear Algebra Subprograms Technical (BLAST) Forum Standard, Knoxville, TN: University of Tennessee
  • Dodson, D. S.; Grimes, R. G. (1982), "Remark on algorithm 539: Basic Linear Algebra Subprograms for Fortran usage",ACM Trans. Math. Softw.,8 (4):403–404,doi:10.1145/356012.356020,S2CID 43081631
  • Dodson, D. S. (1983), "Corrigendum: Remark on "Algorithm 539: Basic Linear Algebra Subroutines for FORTRAN usage"",ACM Trans. Math. Softw.,9: 140,doi:10.1145/356022.356032,S2CID 22163977
  • J. J. Dongarra, J. Du Croz, S. Hammarling, and R. J. Hanson, Algorithm 656: An extended set of FORTRAN Basic Linear Algebra Subprograms, ACM Trans. Math. Softw., 14 (1988), pp. 18–32.
  • J. J. Dongarra, J. Du Croz, I. S. Duff, and S. Hammarling, A set of Level 3 Basic Linear Algebra Subprograms, ACM Trans. Math. Softw., 16 (1990), pp. 1–17.
  • J. J. Dongarra, J. Du Croz, I. S. Duff, and S. Hammarling, Algorithm 679: A set of Level 3 Basic Linear Algebra Subprograms, ACM Trans. Math. Softw., 16 (1990), pp. 18–28.
New 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, An Updated Set of Basic Linear Algebra Subprograms (BLAS), ACM Trans. Math. Softw., 28-2 (2002), pp. 135–151.
  • J. Dongarra, Basic Linear Algebra Subprograms Technical Forum Standard, International Journal of High Performance Applications and Supercomputing, 16(1) (2002), pp. 1–111, and International Journal of High Performance Applications and Supercomputing, 16(2) (2002), pp. 115–199.

External links

[edit]
  • BLAS homepage on Netlib.org
  • BLAS FAQ
  • BLAS Quick Reference Guide from LAPACK Users' Guide
  • Lawson Oral History One of the original authors of the BLAS discusses its creation in an oral history interview. Charles L. Lawson Oral history interview by Thomas Haigh, 6 and 7 November 2004, San Clemente, California. Society for Industrial and Applied Mathematics, Philadelphia, PA.
  • Dongarra Oral History In an oral history interview, Jack Dongarra explores the early relationship of BLAS to LINPACK, the creation of higher level BLAS versions for new architectures, and his later work on the ATLAS system to automatically optimize BLAS for particular machines. Jack Dongarra, Oral history interview by Thomas Haigh, 26 April 2005, University of Tennessee, Knoxville TN. Society for Industrial and Applied Mathematics, Philadelphia, PA
  • How does BLAS get such extreme performance? Ten naive 1000×1000 matrix multiplications (1010 floating point multiply-adds) takes 15.77 seconds on 2.6 GHz processor; BLAS implementation takes 1.32 seconds.
  • An Overview of the Sparse Basic Linear Algebra Subprograms: The New Standard from the BLAS Technical Forum[2]
Key concepts
Problems
Hardware
Software
Linear equations
Three dimensional Euclidean space
Matrices
Matrix decompositions
Relations and computations
Vector spaces
Structures
Multilinear algebra
Affine and projective
Numerical linear algebra
Retrieved from "https://en.wikipedia.org/w/index.php?title=Basic_Linear_Algebra_Subprograms&oldid=1336988381"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp