矩阵运算和线性代数操作开源库
用于矩阵运算和线性代数操作常用的开源库推荐,涵盖不同编程语言和硬件平台:
C/C++ 库
-
Eigen
-
特点:高性能的模板库,支持矩阵/向量运算、线性求解、特征值计算等,无需依赖外部BLAS/LAPACK。
-
官网:https://eigen.tuxfamily.org
-
适用场景:嵌入式系统、科学计算、机器学习。
-
-
Armadillo
-
特点:语法类似MATLAB,依赖BLAS/LAPACK,适合快速原型开发。
-
官网:http://arma.sourceforge.net
-
-
BLAS/LAPACK
-
基础实现:OpenBLAS、Intel MKL(开源但非自由)、BLIS。
-
作用:提供底层线性代数运算(如矩阵乘法、分解)。
-
Python 库
-
NumPy
-
特点:Python生态的核心库,支持多维数组和基本矩阵运算。
-
官网:https://numpy.org
-
-
SciPy
-
特点:基于NumPy,提供高级线性代数(如稀疏矩阵、矩阵分解)。
-
官网:https://scipy.org
-
-
CuPy
-
特点:NumPy的GPU加速版本,支持CUDA。
-
官网:https://cupy.dev
-
GPU 加速库
-
cuBLAS/cuSOLVER (NVIDIA)
-
特点:CUDA生态的GPU加速BLAS和线性代数库。
-
适用场景:大规模矩阵计算(需NVIDIA GPU)。
-
-
oneMKL (Intel)
-
特点:支持CPU/GPU,针对Intel硬件优化。
-
官网:https://software.intel.com/oneapi
-
-
MAGMA
-
特点:混合CPU/GPU运算,适合异构计算。
-
官网:MAGMA
-
其他语言
-
Java:
-
ND4J (https://deeplearning4j.konduit.ai)
-
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(无依赖)。
根据项目需求和硬件环境选择合适的库即可。