Discussion:
[OMPI users] Question about undefined routines when using mpi_f08
Grove, John W
2018-08-02 20:40:34 UTC
Permalink
I am compiling an application using openmpi 3.1.1. The application is mixed Fortran/C/C++. I am using the intel compiler on a mac pro running OS 10.13.6. When I try to use the mpi_f08 interface I get unresolved symbols at load time, specficially
_mpi_f08_types_mp_ompi_comm_op_ne_, _mpi_f08_types_mp_ompi_datatype_op_eq_, _mpi_f08_types_mp_ompi_op_op_eq_, _mpi_f08_types_mp_ompi_request_op_ne_, and _mpi_f08_types_mp_ompi_win_op_eq_. Generally the comparisons are being done against the appropriate NULL object, such as MPI_COMM_NULL. These routines appear to be present in the dylib objects created when I built openmpi, and I verified that the installed permissions are correct with user and group having read and execute permission as appropriate. Has anyone else seen this problem, and if some do you have any suggestions as to how to resolve this issue? Fortunately for me, I have the option to not use the f08 interface, and in this case everything works, but I would like to understand why using mpi_f08 fails to load for me.

John W. Grove
CCS-2 MS D413, PO Box 1663
Los Alamos National Laboratory
Los Alamos, NM 87545
(505) 667-0723
***@lanl.gov
Jeff Squyres (jsquyres) via users
2018-08-02 21:10:25 UTC
Permalink
Post by Grove, John W
I am compiling an application using openmpi 3.1.1. The application is mixed Fortran/C/C++. I am using the intel compiler on a mac pro running OS 10.13.6. When I try to use the mpi_f08 interface I get unresolved symbols at load time, specficially
_mpi_f08_types_mp_ompi_comm_op_ne_, _mpi_f08_types_mp_ompi_datatype_op_eq_, _mpi_f08_types_mp_ompi_op_op_eq_, _mpi_f08_types_mp_ompi_request_op_ne_, and _mpi_f08_types_mp_ompi_win_op_eq_. Generally the comparisons are being done against the appropriate NULL object, such as MPI_COMM_NULL. These routines appear to be present in the dylib objects created when I built openmpi, and I verified that the installed permissions are correct with user and group having read and execute permission as appropriate. Has anyone else seen this problem, and if some do you have any suggestions as to how to resolve this issue? Fortunately for me, I have the option to not use the f08 interface, and in this case everything works, but I would like to understand why using mpi_f08 fails to load for me.
Did you configure, compile, and install Open MPI with the Intel fortran compiler?

It is generally easiest to configure/compile/install Open MPI with the same compiler toolchain with which you will build your application. Mismatching the Fortran compiler (e.g., building Open MPI with gfortran and then building your application with ifort) is one typical way of getting undefined symbols like this.
--
Jeff Squyres
***@cisco.com
Grove, John W
2018-08-06 16:04:31 UTC
Permalink
Yes, yes, and yes. I built everything, both openmpi using icc for the C compiler, icpc for C++, and ifort for Fortran. All point to the same installation. My application is built using the installed openmpi front ends, mpicc, mpicxx, mpifort, which all report they use the intel versions.

John W. Grove
CCS-2 MS D413, PO Box 1663

Los Alamos National Laboratory

Los Alamos, NM 87545

(505) 667-0723
Post by Grove, John W
I am compiling an application using openmpi 3.1.1. The application is mixed Fortran/C/C++. I am using the intel compiler on a mac pro running OS 10.13.6. When I try to use the mpi_f08 interface I get unresolved symbols at load time, specficially
_mpi_f08_types_mp_ompi_comm_op_ne_, _mpi_f08_types_mp_ompi_datatype_op_eq_, _mpi_f08_types_mp_ompi_op_op_eq_, _mpi_f08_types_mp_ompi_request_op_ne_, and _mpi_f08_types_mp_ompi_win_op_eq_. Generally the comparisons are being done against the appropriate NULL object, such as MPI_COMM_NULL. These routines appear to be present in the dylib objects created when I built openmpi, and I verified that the installed permissions are correct with user and group having read and execute permission as appropriate. Has anyone else seen this problem, and if some do you have any suggestions as to how to resolve this issue? Fortunately for me, I have the option to not use the f08 interface, and in this case everything works, but I would like to understand why using mpi_f08 fails to load for me.
Did you configure, compile, and install Open MPI with the Intel fortran compiler?

It is generally easiest to configure/compile/install Open MPI with the same compiler toolchain with which you will build your application. Mismatching the Fortran compiler (e.g., building Open MPI with gfortran and then building your application with ifort) is one typical way of getting undefined symbols like this.

--
Jeff Squyres
***@cisco.com

_______________________________________________
users mailing list
***@lists.open-mpi.org
https://lists.open-mpi.org/mailman/listinfo/users

Loading...