功能: 可移植,扩展的科学计算数据包,用于大型矩阵方程组的求解
安装参考官网指南
https://petsc.org/release/install/install/
安装说明
安装简介
petsc安装依赖于mpi和lapack,不指定这两个库会安装失败,可以通过事先安装直接指定目录,也可以选择安装时下载。为了并行时统一环境,Mpi建议直接指定已经安装的库(可以配置环境变量,或者通过关键词指定mpi目录),lapack建议直接安装时下载。
安装时可以设置是否为debug模式,为提高效率,我们安装时需要设置不debug
安装时,可以同时安装一些额外的库,我们求解器需要一些额外的库,包括superlu_dist mumps hypre parmetis metis fblas-lapack scalapack
安装时使用configure命令进行配置
Configure介绍:configure是一个安装配置工具,petsc中已经预先使用configure设置过了安装的可选项目,安装时只需要对关键词进行指定,就可以自动安装。另外,configure需要使用python2或者python3来运行。
Configure命令指定关键词格式为 –-关键词=参数,不同的关键词以空格分开
安装时需要指定编译器、安装目录、是否debug(默认可debug)、mpi和lapack目录、其他额外下载的目录
下面介绍需要指定的关键词
指定编译器:
编译器需要指定c语言c++语言和fortran的编译器,但程序会在环境变量中自动寻找,因此不用单独指定(当然也可以单独指定)。自动寻找则按照以下顺序,一般mpi目录已经加入了环境变量,程序直接能找到mpicc,mpicxx以及mpif90三个编译器(可以直接在终端敲入这几个编译器,看看有没有输出,证明环境变量中有没有加入这几个编译器)
默认编译器的选择顺序
指定安装目录:
--prefix=/home/myname/petsc
指定是否debug:
指定不debug :--with-debugging=0
指定编译器优化运行效率 :
COPTFLAGS="-O3 -march=native -mtune=native"
CXXOPTFLAGS="-O3 -march=native -mtune=native"
FOPTFLAGS="-O3 -march=native -mtune=native"
指定mpi和lapack目录:
两个目录可以直接指定
--with-mpi-dir=/home/myname/OMP315
--with-blaslapack-dir=/usr/local/blaslapack
但如果目录已经加入环境变量,就不用再指定目录了
我们的mpi直接在环境变量中配置,lapack则选择安装时下载。
Mpi和lapack都在环境变量中的安装方式
其他额外下载的目录:
Lapack没指定环境目录,因此这里首先要包括lapack,考虑到我们需要用到hyper等其他算法,需要安装其他的外置库,这里直接指定下载就行了(有时候下载不了,程序会让你自己下载,然后指定下载后的安装包目录)
--download-superlu_dist
--download-mumps
--download-hypre
--download-parmetis
--download-metis
--download-fblaslapack
--download-fblas-lapack=1
--download-scalapack
具体安装步骤:
我们进行了三次安装,以下安装步骤适用于类似的系统和环境,某些环境下会报错,文章最后有报错汇总
centos7(环境:gcc5.8.0,gcc5.8.0编译的mpi3.1.5,安装petsc3.5.4)
centos8(环境:gcc8.5.0,gcc8.5.0编译的mpi3.1.5,安装petsc3.7.0)
KOS5.x86_64(环境:gcc8.5.0,gcc8.5.0编译的mpi3.1.5,安装petsc3.7.0)
安装需要cmake版本>2.5,否则无法编译metis
1、下载petsc-3.5.4.tar.gz到任意目录下
2、打开终端进行解压:
tar -xzvf petsc-3.5.4.tar.gz
3、进入安装包目录
cd petsc-3.5.4
4、配置安装目录,以/home/myname/petsc安装目录为例:
python2 ./configure --prefix=/home/myname/petsc --with-debugging=0 COPTFLAGS="-O3 -march=native -mtune=native" CXXOPTFLAGS="-O3 -march=native -mtune=native" FOPTFLAGS="-O3 -march=native -mtune=native" --with-mpi-dir=/home/myname/OMP315 --download-superlu_dist --download-mumps --download-hypre --download-parmetis --download-metis --download-fblaslapack --download-fblas-lapack=1 --download-scalapack
5、编译:(直接复制提示的内容)
configure成功后提示
make PETSC_DIR=/home/myname/petsc-3.5.4 PETSC_ARCH=arch-linux2-c-opt all;
6、安装:(直接复制提示的内容)
编译成功后提示
make PETSC_DIR=/home/myname/petsc-3.5.4 PETSC_ARCH=arch-linux2-c-opt install
7、配置环境变量:
打开配置文件
gedit ~/.bashrc
加入以下环境变量
export PETSC_DIR=/home/myname/petsc export LD_LIBRARY_PATH=$PETSC_DIR/$PETSC_ARCH/lib:$LD_LIBRARY_PATH
常见报错:
(1)petsc3.5.4进行configure崩溃
CONFIGURATION CRASH (Please send configure.log to [email protected])
低版本的petsc例如3.5.4,无法在高版本的gcc例如8.3.0或11.2.0下编译,但可以在5.8.0或4.8.0下编译
(2)petsc3.7.0进行configure崩溃
UNABLE to CONFIGURE with GIVEN OPTIONS (see configure.log for details):
Could not locate a functional C compiler
当gcc版本和编译mip的gcc版本不一致时,例如我们这里用gcc版本为9.3.0,mpi版本为4.1.1.编译mpi的gcc版本为8.5.0,出现上图报错
(3)petsc进行configure时编译FBLASLAPACK过程中崩溃
这个是什么原因我们也不知道,但按照它的提示添加--with-shared-libraries=0就可以编译通过,但如果mpi版本不是3.1.5,就依然会编译失败
(4)卡在TESTING:configureMPITypes from config.packages.MPI (config/BuildSystem/config/packages/MPI.py:249)
我们的gcc版本为8.5.0,mpi版本为3.1.5,使用gcc8.5.0编译
这个问题跟MPI环境有关,参考超算中使用module命令加入的mpi,其中有一个环境变量加上可以解决这个问题。
export OMPI_MCA_btl=self,vader