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).