Ubuntu 自定义路径下安装 SLEPc/PETSc 以及 BLAS/LAPACK 科学计算库

您所在的位置:网站首页 ubuntu用ssr Ubuntu 自定义路径下安装 SLEPc/PETSc 以及 BLAS/LAPACK 科学计算库

Ubuntu 自定义路径下安装 SLEPc/PETSc 以及 BLAS/LAPACK 科学计算库

2023-03-27 11:40| 来源: 网络整理| 查看: 265

引言

最近在计算矩阵特征值的问题上,用到了 SLEPc(Scalable Library for Eigenvalue Problem Computations),SLEPc 可用于超大稀疏矩阵特征值的快速并行计算,也可以用于其他 SVD 分解等常用矩阵计算。SLEPc 的安装依赖于其他通用科学计算库,比如 PETSc,BLAS/LAPACK 等,环境配置稍显复杂,因此,记录环境配置过程,以备后用。

依赖关系

SLEPc 是一个开源项目,可以在这里找到 https://github.com/firedrakeproject/slepc/ ,有非常详细的使用说明(documentation),使用友好。SLEPc 依赖于 PETSc,而 PETSc 依赖于 BLAS/LAPACK,因此,我们需要一一安装依赖项。

BLAS/LAPACK

BLAS(Basic Linear Algebra Subprograms)定义了一系列矩阵、向量之间的基础运算的接口标准(API),Netlib 实现了 BLAS 的这些接口,得到的库也叫 BLAS。以 BLAS 为基础,Netlib 增加了更多高级的矩阵、向量运算,如分解、求逆、特征值等,并且实现了这些高级接口,于是有了 LAPACK(Linear Algebra PackAage)。这两个库都是用 Fortran 语言开发的(另外插一句,CBLAS 和 CLAPACK 是 BLAS 和 LAPACK 的 C 语言接口)。

默认安装方式 [1] 为(没有试过... 应该不会有什么问题...)

12sudo apt-get install libblas-devsudo apt-get install liblapack-dev默认位置在1234567/usr/lib/x86_64-linux-gnu/libblas.a /usr/lib/x86_64-linux-gnu/libblas.so /usr/local/lib/libblas.a/usr/lib/x86_64-linux-gnu/liblapack.so /usr/lib/x86_64-linux-gnu/liblapack.a/usr/local/lib/liblapack.a

因为我需要安装在自定义路径中,所以下面进行一些自定义配置,如果不需要自定义路径,可以直接跳到 下一节。

安装 Fortran 语言的编译器 gfortran1sudo apt-get install gfortran安装 FFTW [2]

i. 下载 FFTW

http://www.fftw.org/download.html

ii. 安装 FFTW

1234567tar -zxvf fftw-3.3.10.tar.gzcd fftw-3.3.10/# 下面尽可能多的使用了指令集优化,不需要的化可以去掉相应的选项 # cat /proc/cpuinfo 可以查看 cpu 支持的指令集 ./configure --prefix=/your/path/to/install --enable-shared --enable-static --enable-single --enable-sse --enable-sse2 --enable-avx --enable-avx2 --enable-fma --enable-mpi --enable-threads --enable-openmp makemake install

安装 BLAS/LAPACK [2]

i. 确保 cmake 和 gfortran 已经安装

ii. 下载 LAPACK

https://netlib.org/lapack/

幸运的是 LAPACK 中已经包含了 BLAS,所以不用重复下载。

iii. 安装 LAPACK

解压

12tar -zxvf lapack-3.11.tar.gzcd lapack-3.11解压之后,它里面会含有 BLAS,CBLAS,LAPACKE 等文件夹。新建 make.inc 文件1cp make.inc.example make.inc如果是使用 gfortran,则无须更改 make.inc 里的内容,否则需要根据系统环境和编译器修改文件里对应的选项。

LAPACK 依赖 BLAS,在编译 LAPACK 前需要编译 BLAS 包,而默认并不编译,因此,需要修改一下 makefile

123gedit Makefile# or # vim Makefile将第 12~13 行12lib: lapacklib tmglib#lib: blaslib variants lapacklib tmglib修改为12#lib: lapacklib tmgliblib: blaslib variants lapacklib tmglib然后,进行编译1make【重要】 接下来,进入 LAPACKE 目录并再次编译12cd LAPACKEmake在 lapack-3.11 目录下生成如下四个静态库,liblapack.a, liblapacke.a, librefblas.a, libtmglib.a 则表示编译成功,将这四个静态库拷贝到自定义路径下的 lib 路径,同时将 LAPACKE/include 目录下的头文件拷贝到自定义路径下的 include 目录。

安装 MPICH

PETSc 还依赖于 MPICH。

i. 下载 MPICH

https://www.mpich.org/downloads/

ii. 安装 MPICH

解压并编译

12345tar -zxvf mpich-4.1.1.tar.gzcd mpich-4.1.1./configure --prefix=/your/path/to/installmakemake install

PETSc 和 SLEPc 版本

由于 SLEPc 是基于 PETSc 的,所以需要先安装 PETSc,再安装 SLEPc。与此同时,要确保所下载的 PETSc 和 SLEPc 的版本能够符合 版本对应表。

安装 PETSc

i. 下载 PETSc

https://petsc.org/release/install/download/

ii. 安装 PETSc

1234tar -zxvf petsc-3.18.5.tar.gzcd petsc-3.18.5./configure --with-shared-libraries=0 --with-blas-lib=/your/blas/path/to/librefblas.a --with-lapack-lib=/your/blas/path/to/liblapack.a --with-mpi-dir=/your/blas/path/to/mpimake check all如果以后需要使用 PETSc 的库,可将 include 目录下的所有文件拷贝到安装目录 include 下,将 arch-linux-c-debug/lib/libpetsc.a 拷贝到安装目录 lib 下。

安装 SLEPc

i. 下载 SLEPc

https://slepc.upv.es/download/

ii. 安装 SLEPc

12345678910tar -zxvf slepc-3.18.5.tar.gzcd petsc-3.18.5export PETSC_DIR=/path/to/ # 此处应为 PETSc 解压并且编译过的路径,如我这里为 petsc-3.18.5 的绝对路径 export PETSC_ARCH=/path/to/arch/of/petsc # 此处应为 PETSc 编译时确定的当前编译版本的库的绝对路径,可以在 petsc-3.18.5 路径下找到 arch 开头的文件夹,如我这里为 arch-linux-c-debugexport SLEPC_DIR=/path/to/slepc-3.18.2 # 此处应为解压的 SLEPc 的路径 ./configuremakecheck最后将 include 目录下的所有文件拷贝到安装目录 include 下,将 arch-linux-c-debug/lib/libslepc.a 拷贝到安装目录 lib 下。

参考[1] Ubuntu BLAS/LAPACK 安装[2] 非 ROOT 路径安装 BLAS/LAPACK


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3