用于矩阵运算和线性代数操作常用的开源库推荐,涵盖不同编程语言和硬件平台:
C/C++ 库
Eigen
特点:高性能的模板库,支持矩阵/向量运算、线性求解、特征值计算等,无需依赖外部BLAS/LAPACK。
适用场景:嵌入式系统、科学计算、机器学习。
Armadillo
特点:语法类似MATLAB,依赖BLAS/LAPACK,适合快速原型开发。
BLAS/LAPACK
基础实现:OpenBLAS、Intel MKL(开源但非自由)、BLIS。
作用:提供底层线性代数运算(如矩阵乘法、分解)。
Python 库
NumPy
特点:Python生态的核心库,支持多维数组和基本矩阵运算。
SciPy
特点:基于NumPy,提供高级线性代数(如稀疏矩阵、矩阵分解)。
CuPy
特点:NumPy的GPU加速版本,支持CUDA。
GPU 加速库
cuBLAS/cuSOLVER (NVIDIA)
特点:CUDA生态的GPU加速BLAS和线性代数库。
适用场景:大规模矩阵计算(需NVIDIA GPU)。
oneMKL (Intel)
特点:支持CPU/GPU,针对Intel硬件优化。
MAGMA
特点:混合CPU/GPU运算,适合异构计算。
官网:MAGMA
其他语言
Java:
EJML (轻量级,http://ejml.org)
Rust:
ndarray (https://github.com/rust-ndarray/ndarray)
nalgebra (专门用于线性代数,https://nalgebra.org)
特殊场景库
稀疏矩阵:
SuiteSparse (C/C++, http://faculty.cse.tamu.edu/davis/suitesparse.html)
SciPy.sparse (Python)
自动微分:
JAX (Python, 支持矩阵运算+自动微分, https://jax.readthedocs.io)
选择建议
快速开发:Python (NumPy/SciPy)。
高性能计算:C++ (Eigen/Armadillo) + BLAS加速。
GPU加速:CuPy/cuBLAS (NVIDIA) 或 oneMKL (Intel)。
移动端/嵌入式:Eigen(无依赖)。
根据项目需求和硬件环境选择合适的库即可。