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

一、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 安装前进行配置

如果在当前环境内已经安装好基础的gccgfortran编译器,并且已经配置好mpichblaslapack的环境,就可以直接运行

./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文件

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

午夜研究院

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值