Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] openmpi-1.8.2rc2 and f08 interface built with PGI-14.7 causes link error
From: tmishima_at_[hidden]
Date: 2014-07-30 21:15:19


Paul and Jeff,

I additionally installed PGI14.4 and check the behavior.
Then, I confirmed that both versions create same results.

PGI14.7:
[mishima_at_manage work]$ mpif90 test.f -o test.ex --showme
pgfortran test.f -o test.ex
-I/home/mishima/opt/mpi/openmpi-1.8.2rc2-pgi14.7/include
-I/home/mishima/opt/mpi/openmpi-1.8
.2rc2-pgi14.7/lib -Wl,-rpath
-Wl,/home/mishima/opt/mpi/openmpi-1.8.2rc2-pgi14.7/lib
-L/home/mishima/opt/mpi/openmpi-1.8.
2rc2-pgi14.7/lib -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi
[mishima_at_manage work]$ mpif90 test.f -o test.ex
/tmp/pgfortranD-vdxk_lnPL3.o: In function `.C1_283':
test.f:(.data+0x6c): undefined reference to `mpi_f08_interfaces_callbacks_'
test.f:(.data+0x74): undefined reference to `mpi_f08_interfaces_'
test.f:(.data+0x7c): undefined reference to `pmpi_f08_interfaces_'
test.f:(.data+0x84): undefined reference to `mpi_f08_sizeof_'

PGI14.4:
[mishima_at_manage work]$ mpif90 test.f -o test.ex --showme
pgfortran test.f -o test.ex
-I/home/mishima/opt/mpi/openmpi-1.8.2rc2-pgi14.4/include
-I/home/mishima/opt/mpi/openmpi-1.8
.2rc2-pgi14.4/lib -Wl,-rpath
-Wl,/home/mishima/opt/mpi/openmpi-1.8.2rc2-pgi14.4/lib
-L/home/mishima/opt/mpi/openmpi-1.8.
2rc2-pgi14.4/lib -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi
[mishima_at_manage work]$ mpif90 test.f -o test.ex
/tmp/pgfortranm9sdKiZYkrMy.o: In function `.C1_283':
test.f:(.data+0x6c): undefined reference to `mpi_f08_interfaces_callbacks_'
test.f:(.data+0x74): undefined reference to `mpi_f08_interfaces_'
test.f:(.data+0x7c): undefined reference to `pmpi_f08_interfaces_'
test.f:(.data+0x84): undefined reference to `mpi_f08_sizeof_'

As I reported before, mpi_f08*.mod is created in $prefix/lib.

[mishima_at_manage openmpi-1.8.2rc2-pgi14.7]$ ll lib/mpi_f08*
-rwxr-xr-x 1 mishima mishima 327 Jul 30 12:27 lib/mpi_f08_ext.mod
-rwxr-xr-x 1 mishima mishima 11716 Jul 30 12:27
lib/mpi_f08_interfaces_callbacks.mod
-rwxr-xr-x 1 mishima mishima 374813 Jul 30 12:27 lib/mpi_f08_interfaces.mod
-rwxr-xr-x 1 mishima mishima 715615 Jul 30 12:27 lib/mpi_f08.mod
-rwxr-xr-x 1 mishima mishima 14730 Jul 30 12:27 lib/mpi_f08_sizeof.mod
-rwxr-xr-x 1 mishima mishima 77141 Jul 30 12:27 lib/mpi_f08_types.mod

Strange thing is that openmpi-1.8 with PGI14.7 works fine.
What's the difference with openmpi-1.8 and openmpi-1.8.2rc2?

[mishima_at_manage work]$ mpif90 test.f -o test.ex --showme
pgfortran test.f -o test.ex
-I/home/mishima/opt/mpi/openmpi-1.8-pgi14.7/include
-I/home/mishima/opt/mpi/openmpi-1.8-pgi1
4.7/lib -Wl,-rpath -Wl,/home/mishima/opt/mpi/openmpi-1.8-pgi14.7/lib
-L/home/mishima/opt/mpi/openmpi-1.8-pgi14.7/lib -lm
pi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi
[mishima_at_manage work]$ mpif90 test.f -o test.ex
[mishima_at_manage work]$

Tetsuya

> On Jul 28, 2014, at 11:43 PM, tmishima_at_[hidden] wrote:
>
> > [mishima_at_manage work]$ mpif90 test.f -o test.ex
> > /tmp/pgfortran65ZcUeoncoqT.o: In function `.C1_283':
> > test.f:(.data+0x6c): undefined reference to
`mpi_f08_interfaces_callbacks_'
> > test.f:(.data+0x74): undefined reference to `mpi_f08_interfaces_'
> > test.f:(.data+0x7c): undefined reference to `pmpi_f08_interfaces_'
> > test.f:(.data+0x84): undefined reference to `mpi_f08_sizeof_'
>
> Just to go back to the original post here: can you send the results of
>
> mpifort test.f -o test.ex --showme
>
> I'd like to see what fortran libraries are being linked in. Here's what
I get when I compile OMPI with the Intel suite:
>
> -----
> $ mpifort hello_usempif08.f90 -o hello --showme
> ifort hello_usempif08.f90 -o hello -I/home/jsquyres/bogus/include
-I/home/jsquyres/bogus/lib -Wl,-rpath -Wl,/home/jsquyres/bogus/lib
-Wl,--enable-new-dtags -L/home/jsquyres/bogus/lib -lmpi_usempif08
> -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi
> ----
>
> I note that with the Intel compiler, the Fortran module files are created
in the lib directory (i.e., $prefix/lib), which is -L'ed on the link line.
Does the PGI compiler require something
> different? Does the PGI 14 compiler make an additional library for
modules that we need to link in?
>
> We didn't use CONTAINS, and it supposedly works fine with the mpi module
(right, guys?), so I'm not sure would the same scheme wouldn't work for the
mpi_f08 module...?
>
> --
> Jeff Squyres
> jsquyres_at_[hidden]
> For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post:
http://www.open-mpi.org/community/lists/devel/2014/07/15377.php