MPI 未定义的对象引用

MPI undefined object references

本文关键字:对象引用 未定义 MPI      更新时间:2023-10-16

我正在尝试安装一个使用MPI的程序(平行冰盖模型或PISM)。我一直遇到错误

libpismutil.so: undefined reference to `ompi_mpi_cxx_op_intercept'
libpismutil.so: undefined reference to `MPI::Datatype::Free()'
libpismutil.so: undefined reference to `MPI::Comm::Comm()'
libpismutil.so: undefined reference to `MPI::Win::Free()'

链接 CXX 可执行文件时。我有点困惑为什么会发生这种情况;找到所有 MPI 可执行文件和库所在的程序的配置。

在另一个线程中,有人建议这是由于使用 Fortran 或 C 构建 MPI 时命名约定不同,但看到我的/usr/bin中既有mpicc.mpich2又有mpif90.mpich2,我认为这不是问题。

在一番惊愕之后,我找到了罪魁祸首。我尝试安装的程序使用一个名为 PETSc 的科学计算库;PETSc 的标准安装不会生成 PISM 所需的共享对象文件,您必须明确告诉它制作它们。完成此操作后,PISM 正确安装。

当然,由于 openmpi 的其他一些晦涩错误,我无法运行它,但这是另一个线程的故事。