The 1979 spec that runs the modern AI stack
Would you rebuild NumPy from scratch just to add two vectors? No. So why hand-roll GPU kernels when BLAS already exists?
BLAS (Basic Linear Algebra Subprograms) is the bedrock API of numerical computing. Conceived in 1979 for Fortran supercomputers, it specifies ~60 routines covering vector ops (Level 1), matrix-vector ops (Level 2), and matrix-matrix ops (Level 3). Almost every scientific library today layers on top of it — directly or indirectly.
Why it matters:
- Optimization centralization — vendors pour years of tuning into one tiny set of kernels; everyone inherits the speedups for free.
- Portability — a Fortran program from 1982 still compiles and runs on an M3 Ultra in 2025. The interface didn't change.
- Composability — NumPy, PyTorch, JAX, MLX, Core ML all call BLAS underneath. They differ in the language above, not the kernels below.
| Level | Operand shapes | GPU suitability |
|---|---|---|
| 1 | vector ⊗ vector (AXPY, dot) | Poor — bandwidth-bound |
| 2 | matrix ⊗ vector (GEMV) | Meh — still bandwidth-bound |
| 3 | matrix ⊗ matrix (GEMM) | Excellent — compute-bound, what GPUs are for |
Who ships what?
- NVIDIA: cuBLAS (and cuBLASLt for Tensor Core integration).
- AMD: rocBLAS / hipBLAS.
- Intel / CPU: oneAPI MKL, OpenBLAS.
- Apple: Accelerate (CPU) + Metal Performance Shaders'
MPSMatrixMultiplication(GPU).