以上是我在PETGEM网站上找到的运行PETGEM的方式。
然后我在运行PETGEM的时候出现了以下问题:
我在网上找到 MPI_Recv_init_c是关于fortran的一个函数,这意思是装的fortran出现问题了吗,然后这种问题应该怎么解决呢
以上是我在PETGEM网站上找到的运行PETGEM的方式。
然后我在运行PETGEM的时候出现了以下问题:
我在网上找到 MPI_Recv_init_c是关于fortran的一个函数,这意思是装的fortran出现问题了吗,然后这种问题应该怎么解决呢
参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。
遇到这个问题,看起来是与PETSc库(特别是其内部的MPI实现)和你的系统上的Fortran编译器或MPI库之间存在不兼容性。MPI_Recv_init_c
这个未定义的符号错误提示可能是因为PETSc在编译时使用了特定版本的MPI接口,而你的运行环境中可能没有正确匹配这个接口的库。
首先,确保你的PETSc库是与系统中的MPI安装相匹配的。可以查看PETSc是如何配置和编译的,通常在PETSc源码目录下的configure.log
文件里有相关信息。检查它使用的MPI库路径是否与你系统当前使用的MPI库一致。
确认你的系统中Fortran编译器的版本,并且检查PETSc构建时是否正确指定了Fortran编译器。有时候,不同的Fortran编译器(如gfortran、ifort等)对MPI的支持细节有差异,可能导致此类问题。
如果发现版本不匹配或编译选项不正确,考虑重新编译PETSc。在重新编译之前,确保已经安装了正确的MPI库(如OpenMPI或MPICH),并且环境变量(如LD_LIBRARY_PATH
)已正确设置指向这些库。
编译PETSc的一般命令示例:
# 先清理旧的构建文件
make clean
# 配置PETSc,这里以OpenMPI为例,替换为你的MPI安装路径
./configure \
--with-cc=mpicc \
--with-cxx=mpicxx \
--with-fc=mpif90 \
--with-clanguage=C \
--download-fblaslapack \
--prefix=/your/install/path/petsc
# 编译并安装
make all
make test
make install
确保替换/your/install/path/petsc
为你的目标安装路径。
重新编译安装后,确保更新你的环境变量,特别是LD_LIBRARY_PATH
,使其包含新编译的PETSc库路径,以及正确的MPI库路径。
如果你的PETSc已经正确安装且版本匹配,那么可能需要调整PETGEM的配置文件或构建过程,确保它指向正确的PETSc安装位置。这可能涉及修改PETGEM的构建脚本或Makefile,确保它们引用了新编译的PETSc库。
如果以上步骤都不能解决问题,建议查阅PETSc和PETGEM的官方文档或社区论坛,可能有其他用户遇到过类似的问题并分享了解决方案。