【PETSc学习】从入门到精通——一、 PETSCc安装与常见问题

  • Post author:
  • Post category:其他




一、PETSc安装与常见问题

PETSc,是一套数据结构和例程,用于通过偏微分方程建模的科学应用的可扩展(并行)解决方案。



1.1 PETSc的安装



1.1.1 下载相应的安装包

官网地址:

https://www.mcs.anl.gov/petsc/download/index.html

也有git的相关链接

$ git clone -b release https://gitlab.com/petsc/petsc.git petsc

下载不同版本的petsc-x.xx.x.tar.gz安装包

  • petsc-x.xx.x.tar.gz 只含有源代码
  • petsc-with-docs-x.xx.x.tar.gz 包含所有文档,推荐离线使用
  • petsc4py-x.xx.x.tar.gz 可以单独安装petsc4py

下载后,将其放入安装目录并解压

$ tar xf petsc-<version number>.tar.gz



1.1.2 定义相关的环境变量

安装前需要定义相应的环境变量

export PETSC_DIR=/home/user/Downloads/petsc/petsc-x.xx.x 
export PETSC_ARCH=test

  • 如果主目录没有test文件夹,需要创建



1.1.3 安装前进行配置

如果在当前环境内已经安装好基础的

gcc



gfortran

编译器,并且已经配置好

mpich



blas



lapack

的环境,就可以直接运行

./configure

如果需要指定特定环境,需要在

configure

后面利用

with

指定

./configure --with-cc=gcc --with-cxx=g++ --with-fc=gfortran --with-mpi-dir=/usr/local/mpich with-fblaslapack=/usr/local/linuxgnu

如果可以使用网络环境,可以使用

download

进行相关包的下载

./configure --with-cc=gcc --with-cxx=g++ --with-fc=gfortran --download-mpich --download-fblaslapack

如果不需要某些环境,可以指定其为0,例如

--with-fc=0

配置时会进行检查文件,建立目录等工作,配置完成图如下

在这里插入图片描述



1.1.4 进行安装

使用

configure

配置完成后,PETSc会给出安装指令

make PETSC_DIR=/home/user/Downloads/petsc/petsc-x.xx.x PETSC_ARCH=test ALL

因为之前已经指定过环境变量,也可以直接使用

make  ALL

安装过程实际上是一个环境配置,程序编译的过程,最终默认生成动态调用的

libpetsc.so.x.xx.x

的petsc文件

在这里插入图片描述

如果需要静态的.a的PETSc库,可以对主目录下

gmakefile

中的50行进行修改,将下图标识的

no

改为

yes

在这里插入图片描述

然后重新进行编译

make clean
make ALL

最后编译完成即可得到静态的

libpetsc.a

文件

在这里插入图片描述

另外,PETSc还提供了分模块封装的设定,非常的方便(之后更新)

进行到这一步,安装就已经完成了



1.1.5 安装后检查

运行

check

指令对测试程序进行检查

make PETSC_DIR=/home/user/Downloads/petsc/petsc-x.xx.x  PETSC_ARCH=test check

运行结果

在这里插入图片描述

如果看到Completed test examples,那么恭喜你,已经成功安装了PETSc



1.2 PETSc安装过程常见问题与解决方案(持续更新)


  • Error: mpich did not work


    在这里插入图片描述

    解决方案:mpich版本较多时,指定目录和当前环境mpich路径一致


  • Error:libslurm.so.36: cannot open shared object file: No such file or directory


    在这里插入图片描述

    解决方案: 当前环境libslurm动态库缺少相应文件,感觉是libslurm库动静态文件不同导致的


  • Error:fatel error:petscconf.h:No such file or directory


    在这里插入图片描述

    解决方案:在

    makefile

    中定义头文件位置时,PETSc需要定义两个,一个是主目录下的include,一个是安装后test目录下的include,两个头文件地址都加上就可以了


  • Error:libfblas.a:Relocations in generic ELF (EM:62)


    在这里插入图片描述

    解决方案:原因是需要在一个服务器上离线安装PETSc,于是把之前编译好的

    libfblas.a

    直接复制过来的,那个是在我linux虚拟机编译的,并非ARM架构,而需要离线安装的服务器是ARM架构,因此需要在同样架构的机子上编译出.a文件


  • Error:libflapack.a:Relocations in generic ELF (EM:62)


    在这里插入图片描述

    解决方案:和上一个问题一样,需要在同样架构的机子上编译出

    libflapack.a

    文件



版权声明:本文为qq_36130886原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。