| 𝒚←α𝒙+𝒚
(called "axpy", "a x plus y") and several other operations.
This level contains matrix-vector operations including, among other things, a generalized matrix-vector multiplication (gemv):
- 𝑻𝒙=𝒚
with A and α to one and T is a triangular 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, 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 of β parameter,C. This decomposition allows for better locality of reference both in space and time of the data used in the product. This, in turn, takes advantage of the cache on the system. 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 as ATLAS. More recently, implementations by Kazushige Goto have shown that blocking only for the L2 cache, combined with careful amortizing of copying to contiguous memory to reduce TLB misses, is superior to ATLAS. A highly tuned implementation based on these ideas is part of the GotoBLAS, OpenBLAS and BLIS.
A common variation of 𝑪[k]←α𝑨[k]𝑩[k]+β𝑪[k]∀k
The index A, - 1 2 3
- ↑ "BLAS Library".
- 1 2 "Optimization Notice". Intel. 2012. Retrieved 2013-04-10.
- ↑ Cleve Moler (2000). "MATLAB Incorporates LAPACK". MathWorks. Retrieved 2013-10-26.
- ↑ IBM (1970), System/360 Scientific Subroutine Package, Version III, Programmer's Manual (5th ed.), International Business Machines, GH20-0205-4.
- ↑ BLAST Forum 2001, p. 1.
- ↑ Dongarra, 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. doi:10.1145/42288.42291. S2CID 3579623.
- ↑ 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. doi:10.1145/1356052.1356053. ISSN 0098-3500. S2CID 9359223. (25 pages)
- ↑ "Guides and Sample Code". developer.apple.com. Retrieved 2017-07-07.
- ↑ BLIS GitHub Repository, 2021-10-15
- ↑ "NVBLAS". NVIDIA Developer. 2018-05-15. Retrieved 2018-05-15.Nugteren, Cedric (2017-07-05), CLBlast: Tuned OpenCL BLAS, retrieved 2017-07-07
- ↑ "Intel Math Kernel Library (Intel MKL) | Intel Software". software.intel.com. Retrieved 2017-07-07.
- ↑ "BLAS (Basic Linear Algebra Subprograms)". www.netlib.org. Retrieved 2017-07-07.
- ↑ "rocBLAS". rocmdocs.amd.com. Archived from the original on 2021-05-22. Retrieved 2021-05-21.
- ↑ "Boost Basic Linear Algebra - 1.60.0". www.boost.org. Retrieved 2017-07-07.
- ↑ "Elemental: distributed-memory dense and sparse-direct linear algebra and optimization — Elemental". libelemental.org. Archived from the original on 2013-08-01. Retrieved 2017-07-07.
- ↑ 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.
- ↑ 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
-
|