📅 2020-Sep-28 ⬩ ✍️ Ashwin Nanjappa ⬩ 📚 Archive

**Basic Linear Algebra Subprograms (BLAS)** define the API for level 1 (vector), level 2 (matrix-vector) and level 3 (matrix-matrix) operations. There are implementations of this API available that are optimized for particular processors, like MKL for Intel CPUs and cuBLAS for NVIDIA GPUs.

BLAS routine names are a bit cryptic and hard to decipher. The first letter denotes the precision, like S: single precision float. But for the rest of the name I usually refer to the 3 papers that defined the 3 API respectively:

- Level 1:
*Basic Linear Algebra Subprograms for Fortran Usage*(1979) - Level 2:
*An extended set of FORTRAN basic linear algebra subprograms*(1988) - Level 3:
*A set of level 3 basic linear algebra subprograms*(1990)

Some of the routine names:

**SDOT**: Split as S-DOT. Expands to single precision float (S), dot product (DOT)**SAXPY**: Split as S-AXPY. Expands to single precision float (S), constant times a vector plus a vector, literally*AX Plus Y*(AXPY).**SGEMV**: Split as S-GE-MV. Expands to single precision float (S), general rectangular matrix (GE), matrix-vector product (MV).**SGEMM**: Split as S-GE-MM. Expands to single precision float (S), general rectangular matrix (GE), matrix-matrix product (MM).