BLAS(Basic Linear Algebra Subprograms)和 LAPACK(Linear Algebra Package)是两个广泛应用于高性能数值计算的线性代数库。BLAS 定义了一套标准的底层接口,用于执行向量与矩阵的基本运算,分为 Level 1(向量-向量)、Level 2(矩阵-向量)和 Level 3(矩阵-矩阵)操作。LAPACK 则构建于 BLAS 之上,提供更高层次的数值线性代数功能,包括求解线性方程组、计算特征值与特征向量、执行 QR、LU、Cholesky 等矩阵分解等。作为科学计算的基石,这两个库在工程仿真、机器学习、数据分析及众多高性能计算领域中发挥着核心作用。
Netlib(https://www.netlib.org/blas/、http://www.netlib.org/lapack/)提供了 BLAS 和 LAPACK 的官方参考实现,确立了线性代数运算的标准接口。然而,在实际生产环境和工程应用中,广泛使用的是基于该标准优化实现的高性能库,例如 Intel MKL、OpenBLAS 等 —— 它们针对特定硬件架构进行了深度优化,显著提升了计算效率,是真正支撑现代高性能计算的利器。
- Intel MKL:商业闭源(有免费版),优势是在 Intel CPU 上性能极致,功能全面。网址为:https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-fortran/。
- OpenBLAS:开源(BSD 许可),优势是性能强大且通用性极佳,是 x86/ARM 等多平台首选的高性能开源库。网址为:http://www.openmathlib.org/OpenBLAS/、https://github.com/OpenMathLib/OpenBLAS。
总之,如果使用的是 Intel CPU,且追求极致性能,那么推荐用 Intel MKL;如果需要跨平台支持,那么推荐用 OpenBLAS。
常见的使用 BLAS/LAPACK 的软件包和库有:NumPy/SciPy(Python)、Eigen/Armadillo(C++)、MATLAB、Julia 等。
补充说明:Netlib BLAS/LAPACK 使用的是 Fortran 编程语言,但现代高性能 BLAS/LAPACK 库通常混合使用 Fortran、C 和汇编语言,以优化不同硬件平台上的性能。
【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com】