小编sta*_*s_s的帖子

在 OpenMPI 中混合英特尔 C++ 和 Fortran 时未定义的引用

我在使用 Open MPI 1.8.4 和 Intel Compiler v15.2 时遇到编译问题。这是一个使用 Fortran 和 C++ 的大型代码。该代码之前是使用 Open MPI 1.6 编译的,并且不存在该问题。

这是 make 文件的内容:

ifdef TAUDEBUG
    FC=tau_f90.sh
    COMP=tau_f90.sh
    CXX=tau_cxx.sh
    CXXFLAGS=
    CXXOPT=
    LINKER=tau_cxx.sh
else
    FC=mpif90
    COMP=mpif90
    CXX=mpic++
    CXXFLAGS=
    CXXOPT=
    LINKER=$(CXX)
endif


CXXLINKFLAGS += -I/cm/shared/apps/openmpi/intel/1.8.4/lib -Wl,-rpath -Wl,/cm/shared/apps/openmpi/intel/1.8.4/lib -Wl,--enable-new-dtags -L/cm/shared/apps/openmpi/intel/1.8.4/lib -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi

FORTFLAGS= -DFORTRAN_UNDERSCORE -DFORTRAN_LOWERCASE
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是 C++ 代码正在使用一些 Fortran 例程,而 mpic++ 需要与 Fortran 库链接。

在 Open MPI 1.6 中,它是通过以下方式完成的:

CXXLINKFLAGS += -L/usr/mpi/intel/openmpi-1.6/lib64 -lmpi_f90 
Run Code Online (Sandbox Code Playgroud)

它奏效了。

从 OpenMPI v.1.7 开始,mpif90 已被弃用。并且 libmpi_f90 不再存在。所有 Fortran 相关例程均由 libmpi_usempif08* 和 …

c++ fortran openmpi

6
推荐指数
1
解决办法
3681
查看次数

标签 统计

c++ ×1

fortran ×1

openmpi ×1