Linux/HPC-在Linux中编译和安装LAPACK/BLAS
BLAS(Basic Linear Algebra Subprograms)是一系列基本线性代数运算函数的接口(interface)标准,是一个接口的标准而不是某种具体实现(implementation)。
LAPACK(Linear Algebra PACKage),是用Fortran 90编写的一组函数,提供了求解联立线性方程组、线性方程组最小二乘解、特征值问题和奇异值问题的函数集。还提供了相关的矩阵分解(LU、Cholesky、QR、SVD、Schur、广义 Schur)等,例如重新排序 Schur 分解和估计条件数等功能。
本文将涉及多种BLAS/LAPACK的实现,注意不要与求解稀疏矩阵方程的方法搞混。
一、 netlib BLAS/LAPACK
这个版本的BLAS被称为reference BLAS,常常作为求解速度参考,运行速度较慢,串行求解,可以直接下载LAPACK,其中会包含BLAS。
首页:LAPACK — Linear Algebra PACKage (netlib.org)
LAPACK 是一个免费提供的开源软件包,使用修改后的 BSD 许可证,因此,它可以包含在商业软件包中(并且已经包含在内)。
首先进入首页下载当前最新版本的lapack包:lapack-3.10.0.tar.gz(文章发布时最新版本为version 3.10.0)
拷贝到相应位置后,解压,进入lapack主目录:
1. 进入INSTALL文件夹,拷贝相应的make.inc文件到lapack主目录,例如,如果使用的是gfortran,则需要拷贝make.inc.gfortran,如果使用的是IVF,则需要拷贝make.inc.ifort,删掉后面的编译器名,只保留文件名make.inc;
2. 打开makefile文件,找到如下关键字:
.PHONY: lib
#lib: lapacklib tmglib
lib: blaslib variants lapacklib tmglib
确认注释掉了第二行,第三行是有效行。
这一步的意思是,由于lapack依赖blas,如果你的系统中没有blaslib,则需要在编译lapack时也编译blas。
chmod +777 lapack_testing.py
4. 执行编译命令
make all
在编译完成后会执行测试程序,输出如下结果表示编译完成:
--> LAPACK TESTING SUMMARY <--
Processing LAPACK Testing output found in the TESTING directory
SUMMARY nb test run numerical error other error
================ =========== ================= ================
REAL 1316145 0 (0.000%) 0 (0.000%)
DOUBLE PRECISION 1316967 0 (0.000%) 0 (0.000%)
COMPLEX 776317 0 (0.000%) 0 (0.000%)
COMPLEX16 777128 0 (0.000%) 0 (0.000%)
--> ALL PRECISIONS 4186557 0 (0.000%) 0 (0.000%)
OS ... Linux
Architecture ... x86_64
BINARY ... 64bit
C compiler ... GCC (cmd & version : cc (Debian 8.3.0-6) 8.3.0)
Fortran compiler ... GFORTRAN (cmd & version : GNU Fortran (Debian 8.3.0-6) 8.3.0)
Library Name ... libopenblas_sandybridgep-r0.3.23.a (Multi-threading; Max num-threads is 40)
mkdir build cd build ccmake .. make make install

浙公网安备 33010602011771号